客户端禁用cookie时,实现Session值跨页面传递
2017-02-16 12:43
232 查看
Session会话中传递SESSIONID有两种方式:
1. 基于cookie传递(常用方式);
2. 基于URL传递;
###如果用户的客户端(浏览器)禁止了cookie,那么基于cookie的传递就不能成功,跨页面就无法传递session值了, 这个时候,有以下两种方法继续进行跨页面传递session值(其实就是一种,只是两种不同的形式,都是用URL传递session_id):
在要跳转的的页面链接后面加上session_id();
例如:第一个页面test.php里面代码如下:
第二个页面:session.php代码,跳转的链接地址:
代码:
得到的结果是:
可以通过D:\wamp64\bin\apache\apache2.4.18\bin\php.ini中设置session.use_trans_sid=1达到跨页面专递的效果,具体情况看下面的实例,这个时候还要看另外两个参数:
上面的session.use_only_cookies的值改成0,就可以使用url传递session_id了,而且比较有用的事如果客户端禁用cookie,地址栏就会自动填充PHPSESSID
地址会自动变成:
如果启用cookie,就会优先使用cookie传递session,地址栏就不会出现PHPSESSID(这个名字也是可以修改的)
得到的结果还是一样的:
是不是很不错?
记住了,session会话有两种模式!cookie相对安全一些,基于url的可能会造成不安全因素,譬如发邮件直接把地址栏整个复制过去了,发给别人,那别人就可能直接就进去你的页面了。或者收藏这个地址,历史记录等等,所以慎用此模式。
下面是配置解释:
本文参考并修改了以下文章:
1. 基于cookie传递(常用方式);
2. 基于URL传递;
###如果用户的客户端(浏览器)禁止了cookie,那么基于cookie的传递就不能成功,跨页面就无法传递session值了, 这个时候,有以下两种方法继续进行跨页面传递session值(其实就是一种,只是两种不同的形式,都是用URL传递session_id):
在要跳转的的页面链接后面加上session_id();
例如:第一个页面test.php里面代码如下:
<?php session_start(); $_SESSION['name']="SHUIPINGYANG"; $sid = session_id(); $url="<a href='session.php?sid=$sid'>下一页</a>"; echo $url; ?>
第二个页面:session.php代码,跳转的链接地址:
http://localhost/test/session.php?sid=0f9pf2i4fcap6mc4rjvebjogc3
代码:
<?php session_id($_GET['sid']); session_start(); echo "<pre>"; print_r($_SESSION); echo "</pre>"; ?>
得到的结果是:
Array ( [name] => SHUIPINGYANG )
可以通过D:\wamp64\bin\apache\apache2.4.18\bin\php.ini中设置session.use_trans_sid=1达到跨页面专递的效果,具体情况看下面的实例,这个时候还要看另外两个参数:
session.use_cookies=1 //是否基于cookie传递 session.use_only_cookies=1 //是否只是基于cookie传递
上面的session.use_only_cookies的值改成0,就可以使用url传递session_id了,而且比较有用的事如果客户端禁用cookie,地址栏就会自动填充PHPSESSID
地址会自动变成:
http://localhost/test/session.php?PHPSESSID=e9ekmat00g4ma0g28366dbei17
如果启用cookie,就会优先使用cookie传递session,地址栏就不会出现PHPSESSID(这个名字也是可以修改的)
得到的结果还是一样的:
Array ( [name] => SHUIPINGYANG )
是不是很不错?
记住了,session会话有两种模式!cookie相对安全一些,基于url的可能会造成不安全因素,譬如发邮件直接把地址栏整个复制过去了,发给别人,那别人就可能直接就进去你的页面了。或者收藏这个地址,历史记录等等,所以慎用此模式。
下面是配置解释:
; trans sid support is disabled by default. ; Use of trans sid may risk your users' security. ; Use this option with caution. ; - User may send URL contains active session ID ; to other person via. email/irc/etc. ; - URL that contains active session ID may be stored ; in publicly accessible computer. ; - User may access your site with the same session ID ; always using URL stored in browser's history or bookmarks. ; http://php.net/session.use-trans-sid session.use_trans_sid = 0
本文参考并修改了以下文章:
http://blog.csdn.net/zhao_liwei/article/details/53324300
相关文章推荐
- java-用HttpURLConnection发送Http请求.
- Android Manifest 用法
- Android学习笔记(二九):嵌入浏览器
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Basilisk:一个有着经典的外观和扩展的 Firefox 复刻
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Angularjs 跨域请求
- 回顾 Firefox 历史
- 小白观察:微软释放出其基于 Chromium 的 Edge 浏览器
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- 杰奇登录后的东西都是在session里面的
- cookie的secure属性详解
- 浏览器 cookie 限制
- VBScript 剪贴板抓取URL并在浏览器中打开
- 玩转浏览器IE7的5个顶级使用技巧
- 字符集导致的浏览器跨站脚本攻击分析
- 通过nginx配置修改网页cookie属性
- Netscaler URL/Cookie domain Transformation 转换