php浏览器cookie被禁用了 session还能用么?

网上搜了 在浏览器禁用cookie的情况下是可以使用session的,我也在本地尝试了,方法是在php.ini中设置trans_sid为1,然后通过url中加入?PHPSESSID=XXXXXX的方式达到登录的状态,但是这个xxx在没有登录的时候我怎么会知道是什么呢?我尝试的时候是在没禁用cookie的时候把之前一次的登录的PHPSESSID复制过来的

阅读 6k
8 个回答

SESSION_ID可以自己指定是什么,只是使用COOKIE的时候PHP会默认帮你生成唯一的一个SESSION_ID.

可以使用session,只需要带上SESSION_ID就行了.

http://...x.com/?sessionid=xxxx 然后用$_GET获取这个sessionid就行了.

还可以通过表单隐藏域来传输,反正只要你能带上sessionid就可以用session..

参考:http://blog.csdn.net/zhao_liw...

test.php

<?php
session_id('sessionid');
session_start();
echo $sesid = session_id();
$_SESSION['name'] = 'zhangsan';
echo "<a href='./test3.php?sessionid=$sesid'>获取session</a>";
?>

test3.php

<?php 
session_id($_GET['sessionid']);
session_start();
var_dump($_SESSION);

?>

输出结果:(我已经禁用了cookie)
图片描述

没有登录的时候session id会存在吗,只要执行session_start()后就会生成吧

在默认情况下,你的session_id是保存在cookie中的,在你禁用了cookie后,session是无法使用的。但是如果你把session_id存储位置做了处理,那么是可以用的

以前弄过一种比较坑的方法,
用户登录以后把session_id相关信息保存在一张表中,例如session_id、用户ID、过期时间、浏览器信息等。

一个是客户端存储,一个是服务端存储,但禁用cookie的情况下就无法使用了,因为他无法判断浏览者身份

禁用了cookie。session也就无法使用了

楼上正解已出,在url上拼装session参数,但安全性大大降低

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题