刷新页面时如何防止更新mysql字段+1

时间:2014-12-17 11:35:22

标签: php mysql codeigniter page-refresh

我想创建一个侧边栏,显示按点击排序的前5篇文章。我正在使用Codeigniter。我编写了简单的查询。 在视图中,我有简单的链接:

 <a href="<?php echo base_url() ?>/article/<?php echo $row['article'];?>"><h2><?php echo $row['particle'];?></h2></a>

我的模特:

public function count_views($id)
{
    $sql = "UPDATE article SET views = views +1 WHERE id = '{$id}'";
    $this->db->query($sql);
}

我的控制器:

public function article($article_id) {
       $link = $this->quotes_model->get_article($article_id);
       $this->quotes_model->count_views($article_id);
       $views = $this->quotes_model->popular_articles();
       $this->template->set('views', $views);
       $this->template->render();
}

当我按文章标题链接(在mysql字段视图中更新+1)时,它会打开一篇完整的文章。一切都很好,但如果我按下刷新,字段视图会再次按+1更新。

如果有人刷新一篇开放的文章,mysql不应该再次更新视图字段+1吗? P.S对不起我的英语。

2 个答案:

答案 0 :(得分:0)

您应该通过使用System Ip或浏览器会话ID来控制它,以获得唯一的页面匹配。

使用

      session_id();

      $_SERVER

获取ip地址的变量。

答案 1 :(得分:0)

在表article中添加两个字段:

ip_address -> ip address of the user.

visited_date -> date time

现在,当用户第一次打开文章时,它将与DATE和TIME一起记录。

如果他/她刷新页面,请检查数据库中的数据,如果不存在,请将其插入。

如果您每个用户只需要访问一次,请不要查看日期,否则请查看日期。