文章目录 [+]
今天去面试,问到这么一个问题,就是PHP禁用Cookie之后Session还能使用吗?然后回来去问朋友果断回答我,禁用Cookie之后Session肯定不能使用咯,我回答他,Cookie只是实现Session的一种方式而已,如果禁用了Cookie,Session还可以使用其他的方式来实现,例如URL重写来实现Session,这篇文章就是来写Cookie禁用之后来实现Session。
首先,你得禁止浏览器的Cookie,我这里用的Chrome浏览器。打开设置->隐私设置和安全性->内容设置->Cookie->允许网站保存和读取 Cookie 数据(推荐)关闭掉就行了。
那么我们禁用Cookie之后,有这么几种方式来实现。
1.设置php.ini配置文件中的“session.use_trans_sid = 1”,或者编译时打开打开了“--enable-trans-sid”选项,让PHP自动跨页传递Session ID。
2.手动通过URL传值、隐藏表单传递Session ID。
3.用文件、数据库等形式保存Session ID,在跨页过程中手动调用。
具体代码如下:
途径1举例说明:(暂未解决,安装网上方式,设置use_trans_sid、use_only_cookies、use_cookies不管用),如果亲们有办法,帮我贴一下,学习一下,谢谢。
途径2举例说明:
index.php内容如下:
session_start(); $_SESSION['name'] = '猫巷'; $sessid = session_id(); $url = "<a href='http://127.0.0.1/test/a.php?sessid=" . $sessid . "'>下一页</a>"; echo $url;
a.php内容如下:
session_id($_GET['sessid']); session_start(); echo $_SESSION['name'];
这样就会正常输出“猫巷”。
途径3举例说明:
index.php内容如下:
session_start(); $_SESSION['name'] = '猫巷'; file_put_contents('session', session_id()); $url = "<a href='http://127.0.0.1/test/a.php'>" . $_SESSION['name'] . "</a>"; echo $url;
a.php内容如下:
$session_id = file_get_contents('session'); session_id($session_id); session_start(); echo $_SESSION['name'];
这样也可以输出猫巷,入数据库同样一个道理。
发表评论