嗨,我不知道这有多可能,但有一个简单的代码,从用户访问我的网站的那一刻开始计数,我可以使用标头标签来存储一些PHP代码的会话,说当页面是access设置一个时间并将时间存储在我的mysql表中并计算到用户离开站点/会话结束的那一刻并根据计算的时间计算结束时间?
我想在我的数据库中创建一个名为sessions的表,所以我知道我的网站上有多少人,我知道谷歌分析,但我想实时管理,所以将不胜感激任何帮助或指出正确的方向谢谢
// GET IP ADDRESS
$sql = "INSERT INTO ptb_sessions (session_id, user_ip, session_start, session_end) VALUES (NULL, '" . $_SERVER['REMOTE_ADDR'] . "', now() '....');";
mysql_query($sql, $connection);
答案 0 :(得分:4)
根据我的经验,跟踪用户的最佳方法是结合ajax和php。您应该在某些时间间隔(例如60秒)从javascript发送通知,您可以在php端更新用户当前登录您网站的时间长度。
示例代码:
<强>的index.html 强>
<script type="application/x-javascript">
// js code in index.html
window.setInterval( function(){
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","background.php?ping=1",true);
xmlhttp.send();
}, 60000 );
</script>
<强> background.php 强>
<?php
session_start();
// ... your database initialization here, so $connection will be valid variable ...
// background.php
// ur initialisation
$session_id = session_id();
$sessionEnd = date('Y-m-d h:i:s');
$sql = "INSERT INTO ptb_sessions (session_id, user_ip, session_start, session_end) VALUES ('$session_id', '" . $_SERVER['REMOTE_ADDR'] . "', now(), '$sessionEnd') ON DUPLICATE KEY UPDATE session_end = '$sessionEnd'";
mysql_query($sql, $connection);
?>
注意:您需要在后台编写中使用 session_start();重复构造的sql会自动更新你的值 - 因此不需要编写检查存在。
答案 1 :(得分:1)
不。 PHP是服务器端的,所以一旦网络服务器将页面发送出去,就是这样。您可以在javascript
中执行此操作可以做的一个可能的变体是将最后一页视图视为“会话结束” - 在设定的时间段后调用会话超时(称之为20-30分钟),以及最后一页的时间。加载是会话结束时。您可以使用数据库来跟踪上次加载的页面时间。
您可以轻松获取Session_Id
,Session_start
,IP
,但不能Session_end
答案 2 :(得分:0)
即使PHP是服务器端脚本,您也可以考虑另一种方法并使用php来分析您的Web服务器日志,以估计客户访问您网站的时间。请记住,这不是完全准确的(因为任何JS解决方案,例如Google Analytics也是如此)。它只是基于路径分析的近似值。
176.28.xx.xx - - [28/Apr/2013:19:26:04 +0200] "GET /page1 HTTP/1.1" 200 5552 "-" "-"
176.28.xx.xx - - [28/Apr/2013:19:26:05 +0200] "GET /page2 HTTP/1.1" 200 5552 "-" "-"
176.28.xx.xx - - [28/Apr/2013:19:26:06 +0200] "GET /page3 HTTP/1.1" 200 5552 "-" "-"
176.28.xx.xx - - [28/Apr/2013:19:26:07 +0200] "GET /page4 HTTP/1.1" 200 5552 "-" "-"
176.28.xx.xx - - [28/Apr/2013:19:31:04 +0200] "GET /page4 HTTP/1.1" 200 5552 "-" "-"
176.28.xx.xx - - [28/Apr/2013:19:31:05 +0200] "GET /page1 HTTP/1.1" 200 5552 "-" "-"
在这种情况下,你会发现,有一个客户(根据假设,客户是由他的IP地址唯一标识)有两个间隔(基于我们提出的阈值为1分钟,同一客户的新访问开始了)
已经这样做的工具是AWStats
如果您正在寻找
,可以找到进一步的阅读材料底线:但这只是回答问题的方法。我会使用Piwik,Google Analytics或类似的工具来跟踪这些工具。它们是先进的并且为您做所有的事情,特别是存储了许多需要的绘图点。考虑到这样的跟踪工具会大大增加对您的Web服务器的请求率,并且由于php需要在每次调用时设置数据库连接,您正在寻求构建的工具,服务器功率将非常昂贵。