<p>一、在session_start() 前设置session_name();
例子: string session_name([string $name])
说明:
PHP会话控制之如何正确设置session_name
定义:
string session_name([string $name])
说明:
在php.ini中配置为:session.name = PHPSESSID
在请求开始的时候,会话名称会被重置并存储到session.name配置项。
所以要想在不改变php.ini配置文件的情况下,更改session_name 必须要在 session_start()或
session_register()之前设置session_name。
代码演示:
[ 先启动会话,再设置session_name]
<?php
/**
* 深入理解PHP会话控制
* User: gutops
*/
//启动新会话
session_start();
//设置session_name
session_name('PHPSESSID_NEW');
echo session_name(); //输出为PHPSESSID_NEW
这样sesssion_name并未改变,查看浏览器cookies name为PHPSESSID(php.ini中默认设置的session.name)
[ 先设置session_name 再启动会话(正确的修改方式)]
<?php
/**
* 深入理解PHP会话控制
* User: gutops
*/
session_name('PHPSESSID_NEW');
session_start();
echo session_name(); //输出为PHPSESSID_NEW
查看浏览器cookies,可以看到name变为PHPSESSID_NEW
二、如何应用呢
方法1、可通过token ,将session_id 存入token,每次请求带回
1.前端传账号密码给后端
2.后端将账号密码作处理加密生成token,并返回给前端
3.前端将token存入缓存,在每次请求时,在header或url中将token传给后端
4.将前端传来的token与数据库账号密码生成的token作比对,相等则成功。
方法2: 可在session_start();前, 通过$_COOKIE['你的session_name名称'] 来获取session_id
************** 接着搞:
拿到session_id后,通过session_id(你的sessionid); 告诉session你要使用sessionname名字为你刚设置的session了。
注意设置session_id(); 必须在session_start()前,这和设置session_name()是一样的,
然后你var_dump($_SESSION); 就能看到你设定的session_name的所有session了。