Mysql Pageviews仅在每个会话中更新

时间:2014-12-07 13:06:36

标签: php mysql

刚刚帮助我使用我的网页浏览代码工作......现在我希望每次会话/ ip的网页浏览量只计算1。

在我的用户(news.users)表格中,我可以使用这些单元格:(试图设置一些早期没有用的东西,因此这些单元格未被使用)

ip_reg, ip_visit, dtreg, dtvisit, visits, pass

我现在正在使用的代码如下所示:

//Adds one to the counter 

  mysql_query("UPDATE news SET posts = posts + 1, published=published, last_edit=last_edit WHERE id=$id");

//Retreives the current count 
$count = mysql_fetch_row(mysql_query("SELECT posts FROM news WHERE id=$id"));
//Displays the count on your site print 


echo "<label>Viewed: ";
echo $count[0];
echo " times</label>";

?> 

我可以使用用户中的一些未使用的单元格来阻止用户重新加载页面以获得更高的页面视图吗?我该怎么做:P

1 个答案:

答案 0 :(得分:0)

就像我建议的那样,我会将阅读的新闻文章放在用户的会话中。试试这个:

if (!isset($_SESSION['read_news']) || !is_array($_SESSION['read_news'])) {
    $_SESSION['read_news'] = array();
}

if (!in_array($id, $_SESSION['read_news'])) {
    $_SESSION['read_news'][] = $id;
    mysql_query("UPDATE news SET posts = posts + 1 WHERE id=$id");
}

如果这不起作用,则表示您没有启用会话,您应该将session_start();放在项目顶部的某个位置。确保在每个请求中调用该行。