【问题标题】:How to increment a counter each page load (in PHP)?如何在每个页面加载时增加一个计数器(在 PHP 中)?
【发布时间】:2010-10-26 06:53:04
【问题描述】:

我希望在用户访问网站的 X 个页面时发生特定操作

我是否必须将计数器存储在外部(在 txt 文件或数据库中)?

我想不出一种方法将计数器设置为 0,然后在每次加载页面时将其递增。计数器总是会重置为 0,还是我遗漏了一些明显的东西?

【问题讨论】:

标签: php count increment


【解决方案1】:

最简单的方法是使用 PHP 的session storage

session_start();
@$_SESSION['pagecount']++;

PHP 自动向用户发送会话 cookie,并将 $_SESSION 的内容透明地存储在与此 cookie 关联的平面文件中。你真的不需要为这个问题推出自己的解决方案。

【讨论】:

    【解决方案2】:

    您是否已经有一种方法可以确定用户是谁(例如用户名和密码),即使他们离开网站并在另一天回来也是如此?或者您只是对跟踪访问者看到的页面数量感兴趣,并在查看的第 x 个页面上做一些特别的事情。

    如果是第二个,您已经有一个会话变量可以存储计数器。

    $_SESSION['views'] = $_SESSION['views'] + 1
    if($_SESSION['views'] == x) ...
    

    【讨论】:

      【解决方案3】:

      仅使用$_SESSION 数据来存储个人查看过的页面数量非常简单。

      $_SESSION['pageviews'] = ($_SESSION['pageviews']) ? $_SESSION['pageviews'] + 1 : 1;
      

      【讨论】:

      • htxt:确保在尝试使用 $_SESSION 之前调用 session_start()
      • htxt: session_start() 必须在任何数据输出之前调用。数据可能是从服务器发送的标头、代码中的一些回显或打印。
      • 你能用cookie做类似的事情吗?我正在使用 Wordpress,它似乎正在吃掉我的会话变量
      【解决方案4】:

      简短的回答是肯定的,您必须将其保存在外部,因为 php(默认情况下)具有零内存持久性策略。这基本上意味着一旦你的 php 脚本运行,内存中就没有任何东西了。

      对于低流量站点,您可能需要考虑一个简单的 txt 文件,您可以在其中读取、递增和写入。对于更高流量的站点,一个非常简单的 mysql 表可能会起作用。

      【讨论】:

        【解决方案5】:

        您可以在用户首次访问您的页面时启动会话,然后在用户每次重新加载/访问子页面时递增该值。另一种方法是在每个页面上都有一个隐藏字段,然后检索它的值、递增它并将其发布到新页面。

        <input type="hidden" value="2" id="blabla" />
        

        【讨论】:

        • 你的第二种方法只有在每次点击都是 POST 时才有效,如果用户重新加载页面、在单独的选项卡中打开多个页面、点击后退按钮等,则会中断。
        【解决方案6】:

        您将使用 if 语句来检查它是否已设置;

        if( isset($count) )
        {
           $count = $count + 1;
        }
        else
        {
           $count = 1;
        }
        

        您也可以使用 get 方法将计数放在 URL 中,这样您就不必将计数写入文件或数据库。

        【讨论】:

        • 如果用户点击后退按钮或打开多个选项卡,则将计数放入 URL 不起作用,并导致搜索引擎出现重复内容问题。
        • 是的。我没想到。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        • 2016-02-06
        • 1970-01-01
        • 1970-01-01
        • 2022-08-10
        相关资源
        最近更新 更多