Session的一些小疑问

1、Cookie禁用了以后Session还能用吗?如果可以,怎么做

2、默认配置下,以session为登录凭证的站点,浏览器关闭了以后需要重新登录,如果想浏览器关闭以后重开还能用该怎么处理

3、服务器上session文件的清理机制是怎样的,怎样做可以保证会话关闭之后session文件及时清除,这样可取吗

session.cookie_lifetime //客户端cookie的生命周期 - 默认设置为0也就是浏览器关闭就删除该cookie
session.gc_maxlifetime //session文件在服务器的声明周期-不保证session信息立即会得到删除 - 修改session.gc_probability=1可以但是对服务器压力加大

ini函数设置:

ini_set("session.cookie_lifetime",'3600');
 
将客户端的cookie时间设置的长一点就不会每次重新开启浏览器都要重新登录
 
浏览器禁用cookie的时候session如何启用:
 
<?php

session_start();

$sn = session_id();//获取session_id的值并拼接到链接之中

$url='<a href="http://localhost/test/b.php?sn='.$sn.'">下一页</a>';

echo $url;

通过get参数设置会话ID - (浏览器存储的PHPSESSION的值):

<?php

//获取session_id之后设置当前的会话ID
session_id($_REQUEST['sn']);

session_start();

date_default_timezone_set('PRC');

var_dump($_SESSION['a']);

设置以下参数会自动给链接带上会话ID

session.use_cookies = 0
session.use_only_cookies = 0
session.use_trans_sid = 1

测试脚本

<?php

ini_set('session.use_cookies', 0);
ini_set("session.use_only_cookies",0);
ini_set("session.use_trans_sid",1);

session_start();
$url='<a href="b.php">下一页</a>';
echo $url;

你会看到生成的链接是这样的:

http://localhost/test/b.php?PHPSESSID=***
 
 
 
原文地址:https://www.cnblogs.com/xuweiqiang/p/10724797.html