2011-04-20 6 views
0

Mon site a un recommander à un ami bouton. Pour encourager les gens à utiliser cette fonctionnalité, je veux récompenser ceux qui l'utilisent avec des points (les points seront échangés contre des prix. Je ne sais pas encore).Membre reçoit un membre: octroi de points

Ok, donc j'ai cette structure:

form.php

est ici où vous entrez l'email de votre ami et un message à lui/elle si vous voulez. Il y a aussi une entrée cachée qui enverra votre identifiant utilisateur à action.php.

action.php

est où phpmailer fait la magie et votre message et le cas échéant un lien « visiter mon site » (un lien vers process.php dans mon site contenant votre nom d'utilisateur) est envoyé à votre ami .

votre ami clique sur le lien et les visites process.php

Ce fichier se connecte à ma table de base de données MySQL sélectionne les points de l'ID utilisateur envoyé a, ajoute 10 points pour la recommandation ami et insérez les derniers points de retour à la table. Ensuite, il y a:

header("Location: http://www.mysite.com"); 

afin que votre ami ne voit pas travailler process.php.

Tout fonctionne très bien mais pour: si votre ami continue de cliquer sur le lien, il/elle gagnera des points sans fin.

Comment puis-je résoudre ce problème?

Merci beaucoup!

+0

Voulez-vous dire en attachant un hachage à l'URL et le stockage ce hachage dans un tableau et le marquer comme complet une fois terminé en cours de traitement? quelque chose comme ca? – sbditto85

Répondre

0

Ma méthode préférée pour faire un processus se produit une seule fois quand ils sont en cliquant sur un lien dans un e-mail est d'avoir une table quelque chose comme:

CREATE TABLE friends (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    hash VARCHAR(100), 
    active TINYINT(1) DEFAULT 1, 
    [user id's or other associative fields you want] 
) TYPE=innodb; 

puis quand je produis l'URL pour le courrier électronique Je vais joindre un hachage à la fin si:

http://my.url.com/process.php?hash=[hash] 

et Stor e le hachage et les informations relatives dans la base de données puis quand ils cliquent sur le lien j'utilise le hachage pour tirer l'identifiant de l'utilisateur et faire un traitement et changer actif de 1 à 0.

La prochaine fois qu'ils cliquent sur le lien vous tirez l'enregistrement et si actif est mis à 0 vous revenez juste une page qui dit "Vous avez déjà les points que vous trichez" :) ou quelque chose de plus professionnel. (Je l'ai toujours voulu appeler les gens, mais les pouvoirs en me arrête toujours)

Laissez-moi savoir si vous avez besoin de plus amples explications :)

+0

merci beaucoup clair et beau! – user712027

0

Vous pouvez conserver l'adresse IP ou le fichier SessionID dans le fichier (peut-être dans la base de données) et vérifier chaque fois que quelqu'un vote.

Si vous conservez l'ID de session, ils pourront à nouveau voter à chaque fois qu'ils rouvriront le navigateur. Si vous gardez l'adresse IP, ils pourront voter à nouveau sur le changement de la propriété intellectuelle, selon ce qui convient à votre application.

Voici comment je le ferais.

+0

Pas un système de vote, mais un système de référence-un-ami – sbditto85

1

Générez un jeton unique pour chaque e-mail que vous envoyez et incluez ce jeton dans l'URL/le lien dans l'e-mail. Stockez également tous les jetons dans une table de base de données. Lorsque quelqu'un clique sur le lien et visite votre site, recherchez ce jeton et marquez-le comme visité. Ajoutez seulement les 10 points lorsque le jeton n'a pas déjà été marqué comme visité.

Questions connexes