PHP使用会话更新日期时间

PHP使用会话更新日期时间,php,session,Php,Session,我使用以下命令在用户登录时更新。。但这只有在他们登录时才起作用。。我有一个记住我的功能,如果选中,用户不必登录。。然后它就不会更新 是否有方法使用用户会话ID更新上一个活动 $stmt = $db->prepare("UPDATE users SET DateLastVisit = ?"); $stmt->bind_param('s', $Date); $stmt->execute(); $result = $stmt->get_result(); $stmt->c

我使用以下命令在用户登录时更新。。但这只有在他们登录时才起作用。。我有一个记住我的功能,如果选中,用户不必登录。。然后它就不会更新

是否有方法使用用户会话ID更新上一个活动

$stmt = $db->prepare("UPDATE users SET DateLastVisit = ?");
$stmt->bind_param('s', $Date);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();

要实现这一点,您需要将活动与用户id相匹配,因为如果没有此项,您将更新每个用户记录

试试这个:

if(!isset($_SESSION)){//check if we already have a session at the moment
  session_start();
}
    $user_id = $_SESSION['id'];//change to your session id key
    $stmt = $db->prepare("UPDATE users SET DateLastVisit = ? WHERE id_user = ?");//change id_user to what you have in your database
/*always check whether the prepare() succeeded */
if ($stmt === false) {
  trigger_error($db->error, E_USER_ERROR);
}
    $stmt->bind_param('si', $Date, $user_id); // we bind the user_id as well
    $stmt->execute(); //execute, returns true/false
    $result = $stmt->get_result();
    $stmt->close();

当用户登录时,为该用户设置一个令牌,并给该令牌TTL,将其保存到您的表中。然后,您可以使用令牌检查用户登录状态,一旦TTL过期,重新生成一个新的令牌和TTL