浏览器禁用cookie后,怎么使用session,求解决方案

COOKIE

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

Session

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息,每一个网站访客都会被分配给一个唯一的标志符,即会话ID,它的存放形式无非两种:要么经过url传递,要么保存在客户端的Cookies里.当然,你也可以将Session保存到数据库里,这样会更安全,但效率方面会有所下降.url方式传递安全性肯定太差,PHP的会话机制是通过设置Cookie,在Cookie中保存会话id(Session ID),在服务器端会生成session文件,与用户进行关联,Web应用程序存储与这些Session相关的数据,并在各页面间进行传递.

 客户端禁用cookie以后 session还是可以用,此时session的id值是基于cookie传递的,所以session就不能共享传递了,可以通过在url中附加PHPSESSID的值进行传递,这个就是session的id值。

 

禁用cookie,sessionid就不能直接传递了,因为http请求时sessionid就是放在cookie里的。你说的通过url传递的,那是变通的方法,服务器端通过session_id()函数可以获知当前session的sessionid,然后在用PHP生成页面的时候,把sessionid作为参数附加到url里,确实可以实现在禁用cookie的情况下传递sessionid

 

 

第一种方式:

在每个超链接上添加一个PHPSESSID=$sid

//防止返回初始页产生新的session
if(isset($_GET["PHPSESSID"])){
   session_id($_GET["PHPSESSID"]);
}
session_start();
$sid=session_id();
//在每个链接上添加参数PHPSESSID=$sid

其他页面的获取方式为:
if(isset($_GET["PHPSESSID"])){
      session_id($_GET["PHPSESSID"])
}
session_start();

 

第三种方式:

使用session.use_trans_sid=1,php.ini中配置
这种方式会在url上自动加上SID(href,location,action,注意:js跳转不会添加上SID)

 

 

1、设置php.ini的session.use_trans_sid = 1或者打开enable-trans-sid选项,让PHP自动跨页传递session id。

2、手动通过URL传值、隐藏表单传递session id。

3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值