cookie禁用,如何使用session实现文件共享

19 篇文章 0 订阅

1.在同一次会话中,所有的session信息都会保存在一个文件名类似为sess_4e28e33e7c5d3371c173b28163afd8bd(sess_加32位随机字母与数字组成的字符串)的自动随机命名的文件信息中。因为http会为每一次php页面中的session_start()请求都会创建一个sessionID,而又开启了cookie后,浏览器返回的Cookie:PHPSESSID(可以使用网页数据分析工具HttpWatch抓取查看)会与session_start()创建的sessionID相等,信息及时衔接,所以在服务器端一次会话只会创建一个session文件,该session文件包含了所有当前会话的信息。 


禁用cookie后,浏览器的确会在服务器端创建一个session文件,这时候这个session文件也会将PHPSESSID信息返回给浏览器,但是这个时候浏览器已经不能接收这样的信息了。这意味着,当浏览器再次发送另外的session_start()信息的时候就不会带PHPSESSID的值了,因此,当前页面就无法找到原来已经创建的session文件,就会重新自动创建新的session文件。如此一来,每次执行session_start()都会有新的session文件产生,即一次会话就会产生多个session文件,会话信息就不能实现共享。 那么,如何解决这个问题呢?只要把sessionID传递回服务器即可。


这里提供下面三种方法:

 1.在每个超链接上添加一个PHPSESSID=sessionID值,同时在每个页面加上类似如下(伪)代码:if(isset($_GET['PHPSESSID'])){ //设置session_id session_id($_GET['PHPSESSID']); } session_start(); . . . 


2.使用系统常量SID:在超链接action header('Location:xx')可以直接拼接SID常量如echo "<a href='ShopProcess.php?bookid=001&bookname=细说PHP&".SID."'>细说PHP</a>"; 


3. 直接配置php.ini文件。将php.ini文件里的session.use_trans_sid= 0设为1,重启apache即可生效(这样在href action header提供的地址后面会自动加SID,但是js的跳转不会自动加SID)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值