答案 0 :(得分:0)
此脚本中的问题是逻辑本身 - 您每次都会生成UID,因此无法匹配任何现有的UID cookie,在每次访问时,您将使用此生成的UID编写全新的cookie。此外,使用UID作为cookie名称是一种错误的方法(再次,你不能将它与已经写好的cookie匹配),所以检查一下:
<?php
if (!isset($_COOKIE['swain_uid'])) {
$guid = com_create_guid();
$ucnt = 1;
} else {
$guid = $_COOKIE['swain_uid'];
$ucnt = ++$_COOKIE['swain_cnt'];
}
setcookie('swain_uid', $guid);
setcookie('swain_cnt', $ucnt);
print_r($_COOKIE); //for debug purposes only, remove it on production.
?>
这将创建两个带有静态名称的cookie - 一个用于UID,另一个用于计数。然后,您将能够计算每个用户的访问次数(除非用户已清除其cookie)。
<强>更新强>
关于数据库记录,只需创建表,其中UID为主键,并在cookie逻辑后执行INSERT ON DUPLICATE KEY UPDATE
:
MySQL表:
CREATE TABLE `visit_count` (
`userId` varchar(255) NOT NULL,
`userVisit` int(11) DEFAULT NULL,
PRIMARY KEY (`userId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
PHP(除了上面的脚本):
$con = mysqli_connect('localhost', 'root', '', 'test') or die(mysqli_error($con));
$query = "INSERT INTO visit_count
(userId, userVisit)
VALUES
('".$guid."', ".$ucnt.")
ON DUPLICATE KEY UPDATE userVisit = ".$ucnt;
mysqli_query($con, $query) or die(mysqli_error($con));