检查用户是否在线

时间:2014-01-30 02:48:29

标签: php jquery mysql

您好我想每10秒更新一次LastActive行(类似于心跳),所以我写了这个:

$(document).ready(function()
{
    var checkOn = setInterval(function()
    {
        $.get("cm/check-online.php");   
    }, 10000);
});

<?php
    require_once("config.php");

    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

    $my_id = $_SESSION['z_id'];

    $q_update_myself = "UPDATE acc SET LastTimeActive='NOW()' AND LoggedIn='1' WHERE z_id='$my_id'";
    $do_q_update_myself = mysqli_query($dbc, $q_update_myself);
?>

但这不起作用,我不知道如何解决它:|我需要这个,因为我使用脚本来完成所有用户,如果他的LastTimeActive&gt; 30,然后将“LoggedIn”设置为0。

它不起作用,因为LastTimeActive仍然是相同的,因为join_date ......它没有改变。

1 个答案:

答案 0 :(得分:0)

你有没有检查过从AJAX正在调用的PHP脚本中获取你的Z_id会话变量

您需要在访问会话之前访问会话的每个页面上执行此操作:

 session_start();

这对你有用吗?

<?php
require_once("config.php");
session_start();

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

$my_id = $_SESSION['z_id'];
$time_now = date("Y-m-d H:i:s")

if(isset($my_id) && !empty($my_id)){
$q_update_myself = "UPDATE acc SET LastTimeActive='$time_now' AND LoggedIn='1' WHERE z_id='$my_id'";
$do_q_update_myself = mysqli_query($dbc, $q_update_myself);
}else{
//error No Z_ID
}
?>