会员获得会员:授予积分

时间:2011-04-20 14:05:13

标签: php mysql ajax email

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

好的,所以我有这个结构:

form.php的

如果您愿意,可以在此处输入朋友的电子邮件和消息给他/她。还有一个隐藏的输入,将您的用户ID发送到action.php。

action.php的

是phpmailer的神奇之处,您的消息(如果有的话)和“访问我的网站”链接(包含您的用户ID的我网站中的process.php链接)将发送给您的朋友。

您的朋友点击了该链接并访问了process.php

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

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

所以你的朋友没有看到process.php工作。

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

我该如何解决?

非常感谢!

3 个答案:

答案 0 :(得分:1)

为您发送的每封电子邮件生成唯一令牌,并将该令牌包含在电子邮件内的网址/链接中。还将所有标记存储在数据库表中。当有人点击该链接并访问您的网站时,请搜索该令牌并将其标记为已访问。仅在令牌尚未标记为已访问时才添加10个点。

答案 1 :(得分:0)

您可以将IP或SessionID保存在文件中(可能在数据库中),并在每次有人投票时进行检查。

如果您保留SessionID,他们将在重新打开浏览器时再次投票。如果您保留IP,他们将能够在IP更改时再次投票,无论哪种适合您的应用程序。

我就是这样做的。

答案 2 :(得分:0)

我首选的制作流程的方法只有在点击电子邮件中的链接时才会出现一个表格,如下所示:

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。

下次他们点击链接时你会拉出记录,如果激活设置为0,你只需返回一个页面,上面写着“你已经得到了你骗子的点”:)或者更专业的东西。 (我一直想把人们召唤出来,但总是阻止我的力量)

如果您需要进一步解释,请告诉我们。)