Reagent forms 其他成员的成员注册

Reagent forms 其他成员的成员注册,reagent-forms,Reagent Forms,我的网站有一个向朋友推荐的按钮。为了鼓励人们使用这个功能,我想用积分奖励那些使用它的人(积分将兑换成奖品..还不知道) 好的,我有这个结构: form.php 在这里,您可以输入朋友的电子邮件,如果您愿意,还可以向他/她发送消息。还有一个隐藏的输入,它会将您的用户id发送到action.php action.php 是phpmailer发挥作用的地方,你的消息(如果有的话)和“访问我的网站”链接(我的网站中包含你的用户id的process.php链接)被发送给你的朋友。 您的朋友单击链接并访

我的网站有一个向朋友推荐的按钮。为了鼓励人们使用这个功能,我想用积分奖励那些使用它的人(积分将兑换成奖品..还不知道)

好的,我有这个结构:

form.php
在这里,您可以输入朋友的电子邮件,如果您愿意,还可以向他/她发送消息。还有一个隐藏的输入,它会将您的用户id发送到action.php

action.php
是phpmailer发挥作用的地方,你的消息(如果有的话)和“访问我的网站”链接(我的网站中包含你的用户id的process.php链接)被发送给你的朋友。 您的朋友单击链接并访问process.php

这个文件连接到my MySQL数据库表,选择用户id发送的点,为好友推荐添加10个点,并将最后的点插入到表中。然后是一个:

header("Location: ....");
因此,您的朋友认为process.php不起作用

除了:如果你的朋友一直点击链接,他/她将无休止地获得积分,一切都很好

我怎样才能解决这个问题


非常感谢

为您发送的每封电子邮件生成一个唯一的令牌,并将该令牌包含在电子邮件的url中

还将所有令牌存储在数据库表中。当有人单击链接并访问您的站点时,搜索该令牌并将其标记为已访问

仅在令牌尚未标记为已访问时添加10分

但我更喜欢的方法是,当他们单击电子邮件中的链接时,让流程只发生一次,即创建一个类似以下内容的表格:

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;
然后,当我生成电子邮件的url时,我会在末尾附加一个哈希,以便:

http://my.url.com/process.php?hash=[hash]
并将散列和相关信息存储在数据库中,然后当他们单击链接时,我使用散列来提取用户id,并进行任何处理,将活动从1更改为0

下次他们单击链接时,您将提取记录,如果active设置为0,您只需返回一个页面以显示消息