php页面每次刷新都会产生新的SESSION_ID
2021/08/17    

php页面每次刷新都会产生新的SESSION_ID

  1. session文件夹禁止写

  2. php.ini配置

  3. 浏览器禁用cookie

  4. 本地服务器使用的集群,nginx配置iphash来区分用户,正式服务器没有使用iphash区分

  5. php页面session_start不能正确启动

    解决办法:

    1.session文件夹禁止写入

    windows下添加写入权限。

linux下chmod 0777

2.php.ini配置

session.use_trans_sid = 1

[Session] 
session.save_handler = files ; 用于保存/取回数据的控制方式 
session.save_path = C:\win\temp ; 在 save_handler 设为文件时传给控制器的参数, 
; 这是数据文件将保存的路径。 
session.use_cookies = 1 ; 是否使用cookies 
session.name = PHPSESSID 
; 用在cookie里的session的名字 
session.auto_start = 0 ; 在请求启动时初始化session 
session.cookie_lifetime = 0 ; 为按秒记的cookie的保存时间, 
; 或为0时,直到浏览器被重启 
session.cookie_path = / ; cookie的有效路径 
session.cookie_domain = ; cookie的有效域 
session.serialize_handler = php ; 用于连接数据的控制器 
; php是 PHP 的标准控制器。 
session.gc_probability = 1 ; 按百分比的'garbage collection(碎片整理)'进程 
; 在每次 session 初始化的时候开始的可能性。 
session.gc_maxlifetime = 1440 ; 在这里数字所指的秒数后,保存的数据将被视为 
; '碎片(garbage)'并由gc 进程清理掉。 
session.referer_check = ; 检查 HTTP引用以使额外包含于URLs中的ids无效 
session.entropy_length = 0 ; 从文件中读取多少字节 
session.entropy_file = ; 指定这里建立 session id 
; session.entropy_length = 16 
; session.entropy_file = /dev/urandom 
session.cache_limiter = nocache ; 设为{nocache,private,public},以决定 HTTP 的 
; 缓存问题 
session.cache_expire = 180 ; 文档在 n 分钟后过时 
session.use_trans_sid = 1 ; 使用过渡性的 sid 支持,若编译时许可了 
; --enable-trans-sid 
url_rewriter.tags = " a=href,area=href,frame=src,input=src,form=fakeentry"

3.浏览器禁用cookie

启用cookie或者session.use_trans_sid = 1

4.服务器使用的集群,nginx配置iphash来区分用户,正式服务器没有使用iphash区分

php页面里,如果有

ini_set('session.name',$_SERVER['DOCUMENT_ROOT']),注释掉。

5.php页面session_start不能正确启动

将php.ini里session.auto_start设置为1;页面内

if( !isset($_SESSION)){session_start()};

其他相关

if (!is_writable(session_save_path()))
{
 echo 'Session save path "'.session_save_path().'" is not writable!'; 
}

服务器配置为集群模式,防止session跨域在页面顶部ini_set('session.name',$_SERVER['DOCUMENT_ROOT'])