PHPSESSID COOKIE 拦截 篡改

用户的浏览器登录新版时,COOKIE 中的 PHPSESSID 被 改成了 ,_PHPSESSID ,造成 SESSION 无法跨页面传递,所以登录会失败。

暂且不管用户浏览器中的 SESSIONID 是被什么东东篡改的,想解决这个问题有2个办法.

办法一:修改session_name

直接修改 php.ini 找到 session.name = PHPSESSID , 改为 session.name = 自定义名称
$_COOKIE['自定义名称']


办法二:自动匹配cookie

在所有使用SESSION的页面,调用session_start(); 语句之前加入以下代码

$session_name = session_name();//获取当前的session_name

if(!isset($_COOKIE[$session_name])) //查找sessionid是否存在 不存在说明cookie中的session_name被篡改了,需要去设置
{
foreach($_COOKIE as $key=>$val)
{
$key = strtoupper($key); //转换为大写

    //如果包含 session_name 关键字则把该字串当做 sessionid 启用
    if(strpos($key,$session_name))
    {
      session_id($_COOKIE[$key]);//获取新的 session_id
    }
 }

}
session_start();

你可能感兴趣的:(PHPSESSID COOKIE 拦截 篡改)