Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保持用户登录的最佳方法?_Php_Cookies - Fatal编程技术网

Php 保持用户登录的最佳方法?

Php 保持用户登录的最佳方法?,php,cookies,Php,Cookies,我想知道在我的应用程序中,主要是php,这是保持用户登录站点直到他们注销的最佳方法。可能是代币、会话生活、饼干等吗 目前,我的登录和注销系统是这样工作的: 当用户登录时,它会将其详细信息存储在$\u会话中: if (isset($_SESSION['teacherid'])) { $userid = $_SESSION['teacherid']; } if (isset($_SESSION['teacherusername'])) { $username =

我想知道在我的应用程序中,主要是php,这是保持用户登录站点直到他们注销的最佳方法。可能是代币、会话生活、饼干等吗

目前,我的登录和注销系统是这样工作的:

当用户登录时,它会将其详细信息存储在$\u会话中:

if (isset($_SESSION['teacherid'])) {

      $userid = $_SESSION['teacherid'];

  }

if (isset($_SESSION['teacherusername'])) {

      $username = $_SESSION['teacherusername'];

  }
然后,在每个脚本中,它都包含以下代码,其中会话寿命持续12小时:

<?php

ini_set('session.gc_maxlifetime',12*60*60);
ini_set('session.gc_divisor', '1');
ini_set('session.gc_probability', '1');
ini_set('session.cookie_lifetime', '0');
require_once 'init.php'; 

session_start();

?>

init.php如下所示:

 <?php
 session_save_path('Session'); 
 ?>

现在,在用户下次刷新页面12小时后,由于会话将被破坏,它将进入注销页面:

    if ((isset($username)) && (isset($userid))){
        session_destroy();
        echo "You have been Logged Out | <a href='./home.php'>Home</a>";
    }

    else {

        echo "You are Not Logged In";

    }
if((isset($username))&&(isset($userid))){
会话_destroy();
echo“您已注销”;
}
否则{
回显“您未登录”;
}
显然,如果用户单击注销页面,它就会导航到上面的脚本

但这是一种好的方式吗?有没有一种更方便的方法,因为如果您查看适当的web应用程序,它们可以让用户登录数天,但他们是如何做到这一点的


谢谢

会话将在紧要关头完成,而且它们足够安全(尽管不要引用我的话),但根据服务器使用情况和配置,您的会话可能会在12小时标记之前被清除

登录后,我启动会话,并将cookie保存到他们的计算机。此cookie包含唯一生成的字符串及其帐户id

刷新页面时,将运行以下命令(伪代码):


当然,使用Cookie对于这个功能来说是必不可少的-你的Cookie可以存活一个月或更长时间,直到被删除+1而且对xss攻击也很有用(针对黑客)
if (session_exists) continue();
else if (!session_exists AND cookie_exists AND validate_cookie()) {
    login_user_via_cookie();
    continue();
else show_login_page();