php中会话机制相关问题
程序员文章站
2022-05-23 14:26:59
...
问题思考?
1、客户端禁用cookie后,还能访问SESSION吗?
PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。但是Session并不完全依赖Cookie,它还可以通过URL Get传递session id的。这需要你将php.ini中session.use_trans_sid = 1,这表示允许SessionID通过URL明文传输
php.ini 中 SESSION 的配置
session.use_only_cookies = 1; // 开启仅使用cookies存放会话id
session.use_trans_sid = 1; // 允许SessionID通过URL明文传输
在这种情况下虽然已经允许了SessionID通过URL明文传输,担是同时又开启了仅使用cookies存放会话SessionID,所以在URL中明文传输的PHPSESSIONID参数值是无效的,SESSION不能用。
php.ini 中 SESSION 的配置
session.use_trans_sid = 0; // 禁止SessionID通过URL方式明文传输
2、7天免登录的实现方式
(1)cookie方式
setcookie('uname',加密信息,time()+3600*7);//cookie方式实现免登录
对$_COOKIE['uname']解密;
(2)session
setcookie(session_name(),session_id(),time()+3600,"/");
session('uname',加密信息); //设置cookie
对$_COOKIE['uname']解密;