【问题标题】:Stop visitor from clicking on a link again until 24 hours expires阻止访问者再次点击链接,直到 24 小时到期
【发布时间】:2012-08-26 05:58:49
【问题描述】:

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

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

下面是按钮 html 的样子:

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

您有什么建议吗?我对几乎任何类型的脚本都持开放态度,但知道这个网站是用 PHP 制作的吗?

【问题讨论】:

  • 唯一的另一种方法是保存 ip,但是将这些数据设置在 cookie 中没什么,我建议:留在 cookie 中
  • 我想用cookie但是链接太多了,另外一个网站可以在用户机器上设置多少cookie没有限制吗?
  • 如果需要,您可以序列化表单并将所有内容存储在一个 cookie 中。

标签: php jquery mysql cookies restriction


【解决方案1】:

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

  1. Cookie
  2. 本地存储

您存储 1200 个按钮状态的选择是:

  1. 服务器提供给网页的状态的服务器端存储
  2. Cookie(可能必须将数据折叠到每个按钮一位 0
  3. 本地存储

因此,例如,您可以将浏览器标识值存储在 cookie 中与将实际按钮状态存储在服务器端数据库中相结合。然后,当页面呈现时,您在数据库中查找 cookie 中的 browserID 的按钮状态,然后从呈现的 HTML 页面中禁用或删除相关按钮。

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

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

防止多次访问的唯一真正方法是要求用户身份验证并验证(在您的网络服务器上)在呈现页面之前允许给定登录用户访问任何给定页面。因此,如果您想稳健地执行此操作,则必须全部在服务器端完成,并且您将需要某种站点登录。

【讨论】:

  • 感谢您的回复,如果我不必在 24 小时内禁用链接,这一切都会变得容易得多。
  • @RogerWilliams - 是什么阻止用户使用不同的浏览器或将原始链接添加为书签?
  • 我的重点不是安全性,而是让网站对用户友好,如果用户刷新或离开页面,我希望用户查看他们在过去 24 小时内点击了哪些按钮,这样他们就可以专注于其他链接。
  • @RogerWilliams - 那么我建议将您的状态存储在本地存储中,并在页面加载时使用 javascript 来读取该本地存储并设置按钮的状态。
  • 我会调查那个或可能的 php 会话(数组)
【解决方案2】:

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

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

顺便提一下,以这种方式绕过任何依赖于 不存在 cookie 或类似的限制是完全微不足道的 - 例如,您可以切换到另一个浏览器,使用浏览器的“清除历史记录”或“隐私浏览”模式等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2012-01-19
    • 2010-09-16
    相关资源
    最近更新 更多