我正在使用 php 代码来创建和更新一个 SQL 数据库,而我又用它来填充屏幕上的页面计数器(请参见下面的代码片段)。如何区分页面刷新与任何其他 url 更改,以免每次刷新页面时都添加到我的计数器?我想在不将 cookie 放在用户桌面上的情况下执行此操作。在此先感谢您的帮助。
include("incPHP1.inc");
$cxn=mysqli_connect($host,$user,$password,$database)
or die ("Couldn't connect to the server.");
$result = mysqli_query($cxn, "SELECT * FROM visitors");
$counter = mysqli_num_rows($result);
$views = $counter;
科斯敏:
我复制了您将其写入我的 php 代码的第一行的代码(请参阅下面的第一次尝试代码)。它在 IE11 或 Firefox 55.0.3 中都不起作用。在这两种情况下,我都收到一条错误消息(致命错误:函数名称必须是第 2 行 D:\InetPub\vhosts\rlcdev.com\httpdocs\index.php 中的字符串)并且没有输出。我删除了最初的 $session_name(); 命令行并将其省略(请参阅下面的第二次尝试代码)。这是因为我知道 $session_start(); 命令必须是后面的第一行
第一次尝试:
<?php
$session_name();
$session_start();
$_SESSION['refresh'] = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER
['HTTP_CACHE_CONTROL'] === 'max-age=0';
if($_SESSION['refresh'])
{
echo ("<SCRIPT>alert ( 'Page has been refreshed, The AJAX call was not made');</SCRIPT>");
}
else
{
echo ("<SCRIPT>alert ( 'This is a non-refresh reload' );</SCRIPT>");
}
第二次尝试:
<?php
$session_start();
$_SESSION['refresh'] = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER
['HTTP_CACHE_CONTROL'] === 'max-age=0';
if($_SESSION['refresh'])
{
echo ("<SCRIPT>alert ( 'Page has been refreshed, The AJAX call was not made');</SCRIPT>");
}
else
{
echo ("<SCRIPT>alert ( 'This is a non-refresh reload' );</SCRIPT>");
}