web-dev-qa-db-fra.com

Rechercher des utilisateurs et marquer leur nom dans un message

J'ai développé une extension Shoutbox et j'aimerais implémenter une fonctionnalité grâce à laquelle vous pouvez marquer un utilisateur en cri (concept identique au marquage d'un utilisateur sur JSE) à l'aide de la commande @ symbole puis le nom de l'utilisateur.

Cependant, je ne sais pas quelle approche adopter.

Option 1:

Obtenez tous les noms d'utilisateur du #__users table sur le chargement de la page et peut-être renvoyer un objet json. Puis remplissez un conteneur avec les noms de l'objet json correspondant à votre requête.

Option 2:

Vous commencez à taper un nom (@Lod) qui lance ensuite une demande Ajax pour interroger le #__users table


L'option 1 pourrait être un peu lourde si le #__users table est extrêmement grande, mais l’appariement serait beaucoup plus rapide et vice versa pour l’Option 2.

Quelle approche (les autres suggestions sont les bienvenues) serait la meilleure solution?

2
Lodder

2) à coup sûr. Une requête Ajax est une petite charge. Il ne bloque pas et ne renvoie pas la totalité de la table des utilisateurs. Vous pouvez avoir un meilleur contrôle. Par exemple, en retournant seulement 3 tentatives.

D'autre part, 3) est une méthode pour accéder à la table des utilisateurs et à un vecteur d'attaque possible. Par exemple, pour deviner les noms d'utilisateurs, compter les utilisateurs sur votre site, etc.

3
Anibal

Votre projet n'a besoin d'accéder qu'à un tableau au format json. Je suis plus dans l'option 1 camp. Obtenez vos données une fois et plus jamais.

Si vous vous inquiétez de la charge de votre base de données, il existe des solutions pour y remédier. Vous pouvez stocker un fichier .json contenant les descripteurs de l'utilisateur, prêt à être inséré dans votre déclaration .js. Vous pouvez mettre à jour le fichier .json chaque fois qu'un nouvel enregistrement est vérifié.

Comment Stackexchange le fait-il? Ils gardent tout en place et rapidement en limitant le nombre de personnes pouvant être interrogées sur une page donnée. En restreignant la communication de cette manière, l'ensemble du groupe d'utilisateurs n'est pas recherché, mais uniquement les membres actifs (et les lecteurs spéciaux) figurant dans le cadre de la conversation.

En ce qui concerne les racleurs, si quelqu'un veut supprimer toutes les poignées de votre site, vous aurez du mal à les arrêter. Mieux vaut ne pas même prendre en compte cet aspect dans votre décision.

1
mickmackusa