我有一个用户users
的表格,我有一个页面(例如:5个链接)
如果用户访问该页面并单击链接,则链接应隐藏,用户无法再单击该链接
每24小时只有一次......
我尝试在我的users
表中添加一个列,用于存储点击链接的ID ...每次用户访问链接页面时都会ckeck ...但它很复杂。
我有点击链接时隐藏链接的jquery代码,但我认为我应该有一个非常棒的工作。
我需要建议和最好的方法(php)
答案 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 :(得分: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和存储的时间戳来检查用户是否点击了链接。