2010-05-17 3 views
2

J'ai un site PHP/CodeIgniter avec des fonctionnalités sociales de base qui inclut évidemment un lien "Ajouter un ami". Lorsque vous cliquez sur ce lien, un appel AJAX est effectué en arrière-plan, ce qui ajoute l'utilisateur associé au lien en tant qu'ami de l'utilisateur connecté. En outre, le lien se transforme en "Supprimer un ami" qui fait ce qu'il dit sur la boîte, tout comme le fait "Ajouter un ami". Lorsque vous cliquez sur "Ajouter un ami", l'utilisateur ajouté en tant qu'ami est averti par e-mail qu'il a été ajouté en tant qu'ami. C'est là que ma question arrive: Je veux éviter de spammer l'utilisateur avec ces e-mails de notification si l'utilisateur connecté ne cesse de cliquer sur ajouter/supprimer/ajouter/supprimer/etcBonne pratique pour éviter les abus "add friend"

Mon idée est de mettre en place une sorte de une table d'historique d'ajout qui enregistre les 2 identifiants d'utilisateur et un horodatage. Et je n'enverrais un e-mail que si (l'heure actuelle - l'horodatage) est plus grande qu'une valeur définie. Et chaque fois qu'un utilisateur ajouterait à nouveau un ami, je mettrais à jour l'horodatage à l'heure actuelle afin de "prolonger" la validité du contrôle du spam. Avec cette méthode, je pourrais également contrôler si un utilisateur veut ajouter trop d'amis dans un intervalle donné.

Cette table serait effacée de temps en temps pour les enregistrements dont l'horodatage est plus éloigné qu'une valeur donnée.

Ceci est mon idée, si vous en avez d'autres ou utilisé des méthodes différentes s'il vous plaît partager.

Merci d'avoir lu.

+0

Ne stockez-vous pas déjà des informations d'amitié quelque part? Combien serait-il difficile d'ajouter un attribut qui vous indique quand l'amitié a commencé? –

+0

Lorsque je supprime un ami, je supprime complètement l'enregistrement de la base de données, c'est pourquoi je préfère utiliser une table de base de données distincte pour conserver l'historique. Beau nom d'utilisateur, btw. :) – janosrusiczki

Répondre

3

Semble à moi comme la meilleure option. Pour simplifier, je vais probablement envoyer l'email si l'enregistrement existe du tout (au lieu de vérifier en fonction d'un horodatage), puis configurer un cron pour éliminer systématiquement les anciens - de cette façon, vous pouvez avoir un peu plus de contrôle sur les limites de temps (votre logique "limitative" irait dans le script cron, donc vous pouvez décider de supprimer les enregistrements ou non en fonction de paramètres plus compliqués que juste un horodatage - par exemple ne pas supprimer l'enregistrement si un utilisateur particulier a une grande quantité d'activité, pour arrêter les spammeurs.Vous pouvez même être spécifique à l'utilisateur ou au compte, mais j'ai tendance à aller trop loin ...)

Pour autant que je sache, Facebook a "Add Friend" ->"Pending request". À partir de là, vous ne pouvez rien faire tant que l'autre personne ne répond pas, vous ne pouvez donc pas du tout envoyer de spam, mais cela dépend si vous avez besoin d'une confirmation à l'autre bout et que cela dépend de vos goûts.

1

Je pense qu'il est préférable que vous fassiez de l'option add friend une chose bidirectionnelle. Ainsi, le premier utilisateur invite quelqu'un d'autre à être son ami (en remplaçant le lien "ajouter un ami" par quelque chose comme "invité" qui n'est pas un lien). L'autre personne doit alors accepter le premier utilisateur en tant qu'ami. Après cela, les deux utilisateurs peuvent supprimer l'amitié, mais après cela, si l'un d'eux décide de redevenir un ami, il peut à nouveau inviter l'autre. Vous pouvez mettre une sorte de période de validité à cette invitation bien sûr, ou des limitations (par exemple, on ne peut inviter quelqu'un d'autre trois fois) ...

De cette façon, vous ne spammerez pas les utilisateurs avec des emails (à moins parce que certains cliquent sur un lien trop souvent), et les gens ont un peu plus de contrôle sur qui ils sont amis. Bien sûr, cette approche a quelques inconvénients (comme quoi faire avec des invitations ignorées, etc.). Comme vous le décrivez dans votre question, je pense que c'est aussi un bon moyen de lutter contre le spam, vous pouvez également faire quelque chose comme limiter le nombre de fois que quelqu'un peut ajouter un autre utilisateur comme ami (une fois par jour, trois fois par jour). semaine, je ne sais pas, quelque chose comme ça) ..

Questions connexes