我已经创建了一个网站,用户可以上传图片,我想记录单个图片的总浏览量。
现在我对实现的想法是:
将访问者的in地址存储在会话fe中:
$key = "view_img_".$img->id;
if(!isset($_SESSION[$key]))
{
$_SESSION[$key] = array();
}
$visitorIpAddress = $_SERVER['REMOTE_ADDRESS'];
$found = false;
foreach($ip in $_SESSION[$key])
{
if($ip == $visitorIpAdress)
{
$found = true; //visitor has visited before in the livespan of this session
break;
}
}
if(!$found)
{
//do sql update query for the number of views for this image
$sql = mysql_query("UPDATE ") //etc.
//Add this ip to the list in the session
$_SESSION[$key][] = $visitorIpAdress;
} 现在我的问题是:
我希望它在某个timelimit之后清除$_SESSION$key变量中访问者的it地址,以清除资源。
问题是:
大多数访问者可能只查看一次图像,当某个图像变旧时,它可能不再被访问,但会话仍将存在。
有没有一种方法可以定义特定$_SESSION变量的寿命,使其重置自身?(等于$_SESSION$key = null)
或者会有更好的方法来实现这一点呢?
发布于 2011-02-18 17:36:14
您通过会话方法计算的是独特视图的数量。如果你只想计算浏览量,不要花太多心思,只需运行如下查询:
UPDATE counttable SET Views = Views + 1 Where ImageID = 123填充ImageID,就可以开始工作了。接吻。
发布于 2011-02-18 17:41:06
您似乎不太清楚PHP会话是如何工作的:
,则会话cookie将被擦除,会话is terminated.
因此,如果您愿意在会话中存储多个视图,那么在这个特定时刻,您将只存储当前用户的视图。如果要存储访问总次数,则需要使用数据库或其他外部数据存储。例如,您的包含图像的表可能有views列,您可以在每次访问后递增该列:
UPDATE images SET views = views + 1 WHERE id = 123https://stackoverflow.com/questions/5039604
复制相似问题