【问题标题】:Limiting the number of pages non-members can visit限制非会员可以访问的页面数量
【发布时间】:2011-10-23 02:44:51
【问题描述】:
  1. 限制未登录访问者可以看到的页面数量的最佳方法是什么?我们应该检查 $_SESSION['id'] 是否存在,但是如何限制给定时间段内的页数?

  2. 搜索引擎消耗大量流量!限制搜索引擎在网站上花费的时间是一种实用的方法吗?例如允许他们每天或每小时只能看到 x 页(因为它们没有被记录)。

【问题讨论】:

    标签: php session session-variables session-cookies


    【解决方案1】:

    对于您的第一个问题: 使用 Sessions 来保存这些信息。也不要使用将存储在数据库中的自动递增数字之类的 ID,将其转换为很长的无意义字符串,因此有人更改 id 并登录到其他用户帐户的可能性会很小...

    关于第二个问题我不知道...对不起...

    【讨论】:

    • 有人如何伪造会话值?会话是服务器端的,并且存储在服务器上,对吧?无论如何,我得到了你的建议:使用哈希 id。
    • 会话也存储在用户计算机上的 cookie 中。因此,当请求页面时,会发送 cookie 并由您的页面读取。仅存储键/值对。所有其他数据都存储在您的服务器上...因此,如果有人将 cookie 的值更改为其他 ID,他们可以轻松伪造您的系统...所以这就是为什么最好使用散列 ID...
    【解决方案2】:

    回答2:

    如果您不关心 SEO,则可以使用 robots.txt 阻止行为良好的搜索引擎。行为不端的搜索引擎将被视为行为不端的人类用户。

    如果您确实关心 SEO,那么您积极希望他们访问您的网站!向他们发送 4xx 状态代码或 503 无助于将您的内容编入索引。

    但是,Google 网站管理员工具提供了请求crawl rate 的功能。

    【讨论】:

    • 我不想在网站管理员工具中手动设置抓取速度。我关心搜索引擎优化,但搜索引擎经常访问,但没有太多更新需要重新索引。比如每天有1篇文章的博客,100篇旧文章会在同一天被谷歌抓取(这对SEO来说毫无用处)。而且,它不是错误页面,而是重定向到登录页面。
    • @Ali:搜索引擎不知道您的网站。所以他们检查页面是否仍然存在。如果您正确配置您的网络服务器和应用程序,您只需给他们一个304 Not Modified 答案,这会大大减少流量。更不用说提供有关何时再次访问该页面的一些指导来提供您的内容。
    【解决方案3】:

    在你的框架上添加这样的东西:

    if (!isset($_SESSION['sc']))$_SESSION['sc']=0;
    

    然后,在您的结果页面上,添加如下内容:

    $_SESSION['sc']++;
    $c=$_SESSION['sc'];
    if ($c>3) {echo "You have reached your search result limit."; exit;}
    

    对于您的第二个问题:设置会话变量以限制搜索引擎抓取过多将失败。机器人不必存储来自您网站的 cookie,甚至是会话 cookie,这意味着如果机器人不想被跟踪,PHP 将无法跟踪机器人。

    我想解决这个问题的方法是确保用户能够在抓取您的搜索引擎之前存储 cookie。

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 2023-01-19
      相关资源
      最近更新 更多