我希望在用户访问网站的 X 个页面时执行某个操作
我是否必须将计数器存储在外部(在 txt 文件或 db 中)?
我想不出一种将计数器设置为 0 的方法,然后在每次加载页面时将其递增。计数器总是会重置为 0,还是我遗漏了一些明显的东西?
仅使用$_SESSION
数据来存储个人查看过的页面数量非常简单。
$_SESSION['pageviews'] = ($_SESSION['pageviews']) ? $_SESSION['pageviews'] + 1 : 1;
最简单的方法是使用 PHP 的会话存储。
session_start();
@$_SESSION['pagecount']++;
PHP 自动向用户发送会话 cookie,并将 $_SESSION 的内容透明地存储在与此 cookie 关联的平面文件中。你真的不需要为这个问题推出你自己的解决方案。
您可以在用户第一次访问您的页面时启动会话,然后在每次用户重新加载/访问子页面时递增该值。另一种方法是在每个页面上都有一个隐藏字段,并检索它的值,增加它并将其发布到新页面。
<input type="hidden" value="2" id="blabla" />
简短的回答是肯定的,您必须将其保存在外部,因为 php(默认情况下)具有零内存持久性策略。这基本上意味着一旦您的 php 脚本运行,内存中就没有任何内容了。
对于低流量站点,您可能需要考虑一个简单的 txt 文件,您可以在其中读取、递增和写入。对于更高流量的站点,一个非常简单的 mysql 表可能会起作用。
您是否已经有一种方法可以确定用户是谁(例如用户名和密码),即使他们离开网站并在另一天回来?或者您只是对跟踪访问者看到的页面数量感兴趣,并在查看的第 x 个页面上做一些特别的事情。
如果是第二个,您已经有一个会话变量,您可以在其中存储计数器。
$_SESSION['views'] = $_SESSION['views'] + 1
if($_SESSION['views'] == x) ...
您将使用 if 语句来检查它是否已设置;
if( isset($count) )
{
$count = $count + 1;
}
else
{
$count = 1;
}
您还可以使用 get 方法将计数放在 URL 中,这样您就不必将计数写入文件或数据库。