用户可以在一天点击一次链接

时间:2015-03-16 08:53:20

标签: php

我有一个用户users的表格,我有一个页面(例如:5个链接) 如果用户访问该页面并单击链接,则链接应隐藏,用户无法再单击该链接 每24小时只有一次......

我尝试在我的users表中添加一个列,用于存储点击链接的ID ...每次用户访问链接页面时都会ckeck ...但它很复杂。

我有点击链接时隐藏链接的jquery代码,但我认为我应该有一个非常棒的工作。

我需要建议和最好的方法(php)

3 个答案:

答案 0 :(得分:0)

您可以使用Sessions在PHP中执行此操作 - 因此基本上您在会话中存储的链接ID为0或1,具体取决于用户是否单击了链接。然后,当您加载页面时,您检查该标志并使用您的javascript隐藏链接。

如果用户必须登录才能访问该页面(听起来就像您拥有用户ID一样),那么您可以将会话信息及其用户帐户信息存储在数据库中。然后,当他们第一次登录或访问页面时,您可以做的第一件事就是检查会话信息。

根据您之前是否使用过会话,这里有一个很好的教程:

http://www.w3schools.com/php/php_sessions.asp

你可以这样做:

<?php
    // Start the session
    session_start();

   // Set session variables
   $_SESSION["link_id"] = $link_no;
   $_SESSION["timestamp"] = NOW();
 ?>

第一次访问会话时,您可以检查会话信息中的所有时间戳,如果超过24小时,则将该标志重置为0.

如果没有看到更多代码,就很难完全回答。我建议设置一个jsfiddle或包含更多上面的代码详细信息。

希望有所帮助!

修改

是的,您可以在数据库中存储会话。这是一个有用的教程:

http://culttt.com/2013/02/04/how-to-save-php-sessions-to-a-database/

为了检查时间戳是否已过期,我要执行以下操作。

  1. 用户登录
  2. 从其帐户信息中提取上一个/当前会话信息。
  3. 循环访问会话数据并检查是否有任何链接时间戳超过24小时。
  4. 如果时间戳超过24小时,则将该链接标志重置为0 - 这意味着他们可以单击该链接。
  5. 加载html页面,其中包含显示/未显示的链接。

答案 1 :(得分:0)

您需要创建一个新表: users_click_links ,包含3个属性: user_id link_id last_click

当您的PHP要呈现任何页面时,请检查此表中 user_id 是否有 link_id 的条目。如果有,请检查该行的 last_click datetime属性。如果与&#34;现在&#34;的区别小于24小时,返回404(或您需要显示的任何客户端错误代码)。如果没问题,请更新该行的 last_click 。如果它不存在,请创建它。

您需要在页面中呈现的每个链接都是相同的。检查每个文本,如果文本对用户无效,则甚至不呈现文本。所有验证都应该在服务器端完成,你不需要为你的这个问题使用jQuery。

答案 2 :(得分:0)

我想你有一张user表。现在,您需要做的就是添加link表并连接link_clicks表中的用户点击和链接。当用户单击相应的链接时,会更新带有时间戳的last_clicked字段。

links
----------
id    link
1      Link1
2      Link2
3      Link3
4      Link4

link_clicks
----------
id    user_id   link_id   last_clicked
1      101        3         {Timestamp}

现在每次都可以通过比较current_time和存储的时间戳来检查用户是否点击了链接。