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

CMB*_*CMB 0 php cookies

我想在我的应用程序中知道主要是php,这是最好的方法,以便让用户登录到站点,直到他们注销.可能是令牌,会话生活,饼干等?

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

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

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

      $userid = $_SESSION['teacherid'];

  }

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

      $username = $_SESSION['teacherusername'];

  }
Run Code Online (Sandbox Code Playgroud)

然后在每个脚本中它包含下面的代码,其中sessionlife持续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();

?>
Run Code Online (Sandbox Code Playgroud)

init.php如下:

 <?php
 session_save_path('Session'); 
 ?>
Run Code Online (Sandbox Code Playgroud)

下次用户刷新页面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";

    }
Run Code Online (Sandbox Code Playgroud)

显然,如果用户点击了注销页面,那么它会导航到上面的脚本.

但这是一个很好的方式吗?是否有更方便的方法,因为如果您查看正确的Web应用程序,他们可以让用户登录数天,但他们如何做到这一点?

谢谢

Jul*_*Lam 7

会话将在紧要关头,并且它们足够安全(虽然不引用我),但根据服务器使用情况和配置,您的会话可能会在12小时之前清除.

在登录时,我发起会话以及一个cookie保存到自己的电脑.此cookie包含唯一生成的字符串及其帐户ID.

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

if (session_exists) continue();
else if (!session_exists AND cookie_exists AND validate_cookie()) {
    login_user_via_cookie();
    continue();
else show_login_page();
Run Code Online (Sandbox Code Playgroud)