我正在尝试为我的网站创建一个点击计数器,我已经为它开发了以下代码。我只在Codeigniter的主控制器中为我的主页添加了以下代码。
起初我认为代码工作正常,但我发现如果我不继续浏览页面,那么再次转到主页,它不会更新数据。我的意思是例如:如果我第一次访问我的主页然后更新数据,但是如果我刷新页面10秒后它就不会更新数据。但如果我继续刷新它10秒钟,那就可以了。
那么请你告诉我如何让它更新数据而不必继续浏览页面或刷新主页?
谢谢:)
function __construct() {
parent::__construct();
// Visitor Counter
if (!$this->session->userdata('timeout')) {
$out = time() + 10; // I will change it to $out = time() + 60*60; later
$this->session->set_userdata('timeout', $out);
mysql_query("UPDATE cane_visitor_counter SET visitor_stat = visitor_stat+1
WHERE id = '1'");
} else {
$timeout_time = $this->session->userdata('timeout');
if (time() > $timeout_time) {
$this->session->set_userdata(array('timeout' => ''));
$this->session->sess_destroy();
}
}
}
我想要实现的是当用户第一次访问网页时,我想更新我的数据库。在10秒内(例如用途),如果访问者再次访问主页,则不会更新数据库。但是如果他再次访问主页10秒后,我想更新我的数据库。
谢谢:)
答案 0 :(得分:2)
您的代码说“如果会话中没有超时,请更新计数”。你想要它说“如果会话中没有超时,或者它已经存在,那就更新计数”。
function __construct() {
parent::__construct();
// Visitor Counter
if (!$this->session->userdata('timeout') || $this->session->userdata('timeout') < time()) {
$this->session->set_userdata('timeout', time() + 10);
mysql_query("UPDATE cane_visitor_counter SET visitor_stat = visitor_stat + 1 WHERE id = 1");
}
}
我不是CodeIgniter用户,所以我假设你正确使用了它的会话功能;我只是以同样的方式使用它们。