关于PHP中浏览器禁止Cookie后,Session能使用吗?
2016-03-21 11:08
1111 查看
关于PHP中浏览器禁止Cookie后,Session能使用吗?
发布时间: 2013-09-2 浏览次数:3350 分类: PHP教程关于PHP中浏览器禁止Cookie后,Session能使用吗?我们来做些测试,然后说明原理。我建立两个文件session_test.php和session_a.php内容分别是:
<?php session_start(); $_SESSION['url'] = 'http://www.phpddt.com'; echo '这个页面取到的session值:'.$_SESSION['url']; echo "<a href='session_a.php'>另一个页面</a>";
<?php session_start(); echo "看这里是否获取到session的值:".$_SESSION['url'];
运行session_test.php结果:
![](http://www.phpddt.com/usr/uploads/2013/09/751415030.jpg)
点击另一个页面,默认当然是可以获取的,但是当我禁止cookie后呢?
![](http://www.phpddt.com/usr/uploads/2013/09/3198419631.jpg)
看看session_a.php结果:
![](http://www.phpddt.com/usr/uploads/2013/09/927011221.jpg)
PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。但是Session并不完全依赖Cookie,它还可以通过URL Get传递session id的。这需要你将php.ini中session.use_trans_sid = 1,这表示允许SessionID通过URL明文传输,既然GET可以,那么POST传递session id我觉得也可以吧。
好,这样,把上面session_test.php和session_a.php改造下就可以使用sesson了:
<?php session_start(); $_SESSION['url'] = 'http://www.phpddt.com'; echo '这个页面取到的session值:'.$_SESSION['url']; ?> <a href="session_a.php?<?php print session_name() ?>=<?php print session_id() ?>">另一个页面</a>
<?php session_id($_GET['PHPSESSID']); session_start(); echo "看这里是否获取到session的值:".$_SESSION['url'];
如愿以偿:
![](http://www.phpddt.com/usr/uploads/2013/09/2521893358.jpg)
最后说明:
php.ini 中 SESSION 的配置
session.use_only_cookies = 1; // 开启仅使用cookies存放会话id
session.use_trans_sid = 1; // 允许SessionID通过URL明文传输
在这种情况下虽然已经允许了SessionID通过URL明文传输,担是同时又开启了仅使用cookies存放会话SessionID,所以在URL中明文传输的PHPSESSIONID参数值是无效的,SESSION不能用。
php.ini 中 SESSION 的配置
session.use_trans_sid = 0; // 禁止SessionID通过URL方式明文传输SESSION 不能用, 这是最这安全的做法,也是php.ini 的默认配置
或许大家都明白了吧。。。
相关文章推荐
- php强制文件下载(避免文件或图片直接在浏览器中打开)
- php进阶:cookie的有效路径
- php中,error_reporting(E_ALL || ~E_NOTICE)是何意?
- 【转载】调用dede:sql,dede:php标签 调用文章的静态链接地址
- Zend Framework实现多文件上传功能实例
- 一个经典实用的PHP图像处理类
- 【转载】dedecms中的{dede:php}{/dede:php}的详细用法
- PHP进阶:cookie的删除与过期时间
- 通过PHP current函数获取未知字符键名数组第一个元素的值
- 【转载】php list,each 函数
- PHP数组内部的指针函数
- php数组指针如何移动到指定单元?
- PHP array_slice() 函数
- PHP中JSON的应用
- DedeCMS Error:Tag disabled:php错误的完整处理方法_DedeCms教程
- 【php】assert函数的用法
- php error_reporting 用法
- PHP进阶:设置cookie
- 阳历到农历转换的一个PHP类
- PHP函数rand和mt_rand mt_rand() 比rand() 快四倍