Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
PHP会话(SESSION)使用入门 - NOTEBOOK
PHP会话(SESSION)使用入门
PHP / MySQL
Posted on 2022-12-23
摘要 : SESSION 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 SESSION 是以文本文件形式存储在服务器端的,客户端无法修改 SESSION 内容,所以比cookie安全得多。
可以使用 SESSION 判断是否登录。
相对于Cookie,Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。

如何创建 Session?非常简单。
启动 Session 会话,并创建一个 $admin 变量:
// 启动 Session
session_start();
// 声明一个名为 admin 的变量,并赋空值。
$_SESSION["admin"] = null;


❱ 自定义Session路径和过期时间

注意,session_start() 一定要放在任何网页内容输出的前面,不然会导致每一次刷新页面都产生一个新的Session文件。
date_default_timezone_set('PRC'); // 时区
$sessionPath = './sessionCache';
session_save_path($sessionPath);

global $sessionlifeTime;
$sessionlifeTime = 12 * 3600; // 保存12个小时
session_set_cookie_params($sessionlifeTime);
session_start();

session_write_close(); // 关闭 session(因为除了判断登录没有其他要求了)


❱ 判断是否登录

// user 登出动作
function logout_action(){
global $_SESSION,$sessionlifeTime;
unset($_SESSION['loginTime']);
session_destroy();
}
// 判断是否登录
function is_logged(){
global $_SESSION,$sessionlifeTime;
// 判断登陆
if(@$_SESSION['loginTime'] && ( (time() - @$_SESSION['loginTime']) < $sessionlifeTime ) ){ // 生存时间之内
if(time() - $_SESSION['loginTime'] > 2*3600){ // 上次登陆超过2小时的,再次刷新登陆时间。
$_SESSION['loginTime'] = time();
}
return true;
}else{
return false;
}
}