阻止访问者再次点击链接,直到24小时结束

时间:2012-08-25 21:46:55

标签: php jquery mysql cookies restriction

我遇到了问题。我有一个包含大约1,200个按钮的页面,该网站将不是会员网站,我只是希望能够跟踪每个访问者,以确保他们点击的按钮再次被他们点击,直到24小时过期

我知道我可以使用cookies,但对于1200个按钮来说太多了。

以下是按钮html的内容:

<li><a href="http://google.com" class="btn_smallorange" id="button1">Button 1</a></li>

您有什么建议 - 我几乎可以使用任何类型的脚本,但是知道这个网站是用PHP制作的吗?

2 个答案:

答案 0 :(得分:3)

您选择使用某种浏览器识别ID来跟踪给定浏览器(因此您可能知道给定用户是谁):

  1. 缓存
  2. 本地存储
  3. 您存储1200个按钮状态的选择是:

    1. 服务器提供给网页的状态的服务器端存储
    2. Cookies(可能必须将数据折叠为每个按钮0位
    3. 本地存储
    4. 因此,例如,您可以将浏览器标识值存储在cookie中,并将实际按钮状态存储在服务器端数据库中。然后,当呈现页面时,您在数据库中查找cookie中的browserID的按钮状态,并禁用或删除呈现的HTML页面中的相关按钮。

      您可以通过将1200个按钮状态折叠为每个按钮一位来完成cookie中的所有存储。使用AZ和az以及0-9和几个符号,您可以轻松地为每个字符设置64个值,这样您就可以存储每个字符32个按钮的开/关状态,因此可以存储1200个按钮的开/关状态38个字符,很容易适合cookie。如果您还必须存储每个按钮的时间/日期,那么这将不适合cookie,因此您将被留给服务器端存储或本地存储。

      仅供参考,我希望您意识到任何客户端计划都很容易解决。事实上,如果您只是想阻止用户多次访问同一个网址,他们所要做的只是将原始网址加入书签,他们可以随时随地访问,而无需访问您的网页。或者,他们可以擦除cookie或本地存储。或者,他们可以去另一个浏览器。

      防止多次访问的唯一真正方法是要求用户身份验证并验证(在您的Web服务器上)允许给定的登录用户在呈现页面之前访问任何给定页面。所以,如果你想要做到这一点,那么它必须在服务器端完成,你需要某种站点登录。

答案 1 :(得分:1)

如果您想避免在访问者的浏览器上增加多达1200个cookie,您需要查看“会话”。会话将单个ID存储为访问者浏览器上的cookie,然后将其用作服务器上的更大数据存储的密钥。除了更快,向浏览器发送更少的数据意味着用户看到和搞乱它的机会更少。

PHP的会话支持记录在http://php.net/manual/en/intro.session.php

顺便提一下,请注意,以这种方式绕过任何依赖于缺席的cookie或类似的限制是完全无关紧要的 - 例如,您可以切换到另一个浏览器,使用浏览器的“清除历史“或”隐私浏览“模式等。