0

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

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

这是html按钮的样子:

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

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

4

2 回答 2

3

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

  1. 饼干
  2. 本地存储

用于存储 1200 按钮状态的选择是:

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

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

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

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

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

于 2012-08-25T21:53:05.653 回答
1

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

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

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

于 2012-08-25T21:54:29.760 回答