我想在我的应用程序中知道主要是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应用程序,他们可以让用户登录数天,但他们如何做到这一点?
谢谢
会话将在紧要关头,并且它们足够安全(虽然不引用我),但根据服务器使用情况和配置,您的会话可能会在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)