其他会员的会员注册

时间:2018-10-09 18:52:01

标签: reagent-forms

我的网站推荐给朋友按钮。为了鼓励人们使用此功能,我想奖励使用积分的人(积分将兑换成奖品....还不知道)。

好,所以我有这个结构:

form.php

在这里您可以输入朋友的电子邮件,并根据需要向他/她发送消息。还有一个隐藏的输入,它将把您的用户ID发送到action.php。

action.php

是phpmailer进行魔术操作的地方,如果有您的消息,还会将“访问我的站点”链接(指向包含您的用户ID的我的站点中的process.php的链接)发送给您的朋友。 您的朋友点击链接并访问process.php

此文件连接到我的MySQL数据库表,选择发送的用户ID所拥有的积分,为好友推荐再添加10积分,并将最终积分插入表中。然后有一个:

header("Location: ....");

所以您的朋友看不到process.php正常工作。

一切都很好,但是对于:如果您的朋友不断单击链接,他/她将不断获得积分。

我该如何解决?

一吨!

1 个答案:

答案 0 :(得分:3)

为您发送的每个电子邮件生成唯一的令牌,并将该令牌包含在电子邮件中的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;

然后,当我生成电子邮件的网址时,我将在末尾附加一个哈希,这样:

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

并将哈希和相对信息存储在数据库中,然后当他们单击链接时,我使用哈希来提取用户ID并进行任何处理并将活动的值从1更改为0。

下次他们单击链接时,您将拉出记录,并且如果active设置为0,则只返回显示msg的页面