php 通过设置session_name 实现控制同意空间内控制多个项目,还有很多其他应用啦

<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了。

 

posted @ 2019-10-18 17:33  没事就更  阅读(479)  评论(0编辑  收藏  举报