php中如何传递Session ID
一般通过在各个页面之间传递的唯一的 Session ID,并通过 Session ID 提取这个用户在服务器中保存的 Session 变量,来跟踪一个用户。常见的 Session ID 传送方法主要有两种。
第一种方法是基于 Cookie 的方式传递 Session ID,这种方法比较优化,但是不能经常使用,因为用户在客户端可以屏蔽Cookie 。
第二种方法则是通过 URL 参数进行传递,直接将会话 ID 嵌入到 URL 中去。
在 Session 的实现中通常都是采用基于 Cookie的方式,客户端保存的 Session ID 就是一个 Cookie 。当客户端禁用 Cookie时,Session ID就不能再 Cookie 中保存,也就不能再页面之间传递,此时 Session失效。不过在 Linux 平台上可以自动检查 Cookie 状态,如果客户端禁用它,则系统自动把 Session ID 附加到 URL 上传送。而使用 Windows 系统则没有此功能。
1.通过 Cookie 来传递 Session ID
如果客户端没有禁止 Cookie,则在 PHP脚本中通过 session_start()函数进行初始化后,服务器会自动发送 HTTP 标头将 Session ID 保存到客户端计算机的 Cookie 中。类似如下的的设置方式:
虚拟向 cookie 中设置 Session ID 的过程
|
1
|
setcookie(session_name(), session_id(), 0, '/') |
第一个参数调用 session_name()函数,返回当前 Session 的名称作为 Cookie的标识名称。可以再调用 session_name()函数时提供参数改变当前 Session 的名称。
第二个参数调用 session_id()函数,返回当前 Session ID 作为 Cookie 的值。也可以通过调用 session_id()函数时提供参数设定当前的Session ID。
第三个参数值为 0,通过在php.ini文件中由 session.cookie_lifetime 选项设置的值。默认为0,表示 Session ID 将在客户端的 Cookie 中延续到浏览器关闭。
第四个参数 “ / ”,也是通过PHP配置文件指定的值,在 php.ini 中由 session.cookie_path 选项设置的值。默认为 “ / ”,表示在cookie 中要设置的路径在整个域内都有效。
2. 通过 URL 来传递 Session ID
如果客户端浏览器支持 Cookie,就把 Session ID 作为 Cookie 保存在浏览器中。但如果用户禁止 Cookie 的使用,则浏览器中就不存在作为 Cookie 的 Session ID,因此在客户端请求中不包含 Cookie 信息。如果调用 session_start()函数时,无法从客户端浏览器中取得作为 Cookie 的 Session ID,则又创建了一个新的 Session ID,也就无法跟踪用户状态。 因此,每次用户请求支持 Session 的 PHP脚本,session_start()函数在开启 Session 时都会创建一个新的 Session,这样就失去了跟踪用户状态的功能。
在 PHP 中提供了跟踪 Session 的另一种机制,如果客户端浏览器不支持 Cookie,则 PHP 可以重写客户端请求 URL,把
Session ID 添加到 URL 中。可以手动在每个超链接的 URL 中都添加一个 Session ID,这种方法工作量比较大,一般不建议使用这种方式。其示例的代码如下所示:
|
1
2
3
4
5
6
|
<?php//开启 sessionsession_start();// 在 URL 后面附加参数,变量名为session_name()获取的名称,值为session_id()获取echo '<a href="test.php?'.session_name().'='.session_id().'">演示</a>';?> |
php中如何传递Session ID的更多相关文章
- web存储中cookie、session区别
http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的.为了使得web能够产生一些动态信息,就需要保存”状态”,而cookie和session机制就是为了解决http协议无状态而产生.c ...
- php中session_id()函数详细介绍,会话id生成过程及session id长度
php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID. ...
- 设置aspx页面的地址栏中的Session ID的显示与隐藏
设置aspx页面的地址栏中的Session ID的显示与隐藏修改web.config文件中的sessionState节点下的cookieless的值 1.cookieless的值是false的时候隐藏 ...
- 关于缓存中Cookie,Session,Cache的使用
文章来源:http://canann.iteye.com/blog/1941173 以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application. 其中C ...
- 【转】Session ID/session token 及和cookie区别
Session + Cookie 知识收集! cookie机制采用的是在客户端保持状态的方案.它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持.cookie的作用就是为了解决 ...
- C# WebApi的controller中如何存取session
在MVC以后,Session方式可能已经不太常用,但偶尔还是会用到,比如页面验证码之类的.例如登录页面使用的验证码通过Controller提供一个View来实现,可以使用Session来存储这个值.但 ...
- PHP中Cookie与Session的异同以及使用
Cookie与Session的异同: 一.cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF RFC 2965 HTTP State Mana ...
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...
- Session id实现通过Cookie来传输方法及代码参考
1. Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.因此从上述的定义中我们可以看到,Session实际上是一个特定的 ...
随机推荐
- Computer Vision_33_SIFT:SAR-SIFT: A SIFT-LIKE ALGORITHM FOR SAR IMAGES——2015
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_18_Image Stitching:A survey on image mosaicing techniques——2013
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Computer Vision_33_SIFT:Speeded-Up Robust Features (SURF)——2006
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- MySQL表的修改
修改表的名字 ALTER TABLE 旧表名 RENAME 新表名; 字段的修改: 添加字段 ALTER TBALE 表名 ADD COLUMN 新字段 INT; 删除字段 ALTER TBALE 表 ...
- 【西北大学2019新生赛】序列排序II
原题: 想了很久,想的是模仿冒泡,从大到小检查每一个数后面的数是否都与它互质,然后把它设为1(等价于放到最后不考虑) 然后一直想数据结垢 出来跟人交流,“这不是挺典型的思维题么哈哈哈” 利用性质: 调 ...
- golang 2 ways to delete an element from a slice
2 ways to delete an element from a slice yourbasic.org/golang Fast version (changes order) a := []st ...
- Nginx中ngx_http_fastcgi_module
转发请求到 FastCGI 服务器器,不不⽀支持 php 模块⽅方式指令:15.1 fastcgi_pass设置 fastcgi 服务器器的地址.地址可以指定为域名或 IP 地址,以及端⼝口Synta ...
- Java集合--Iterator和Enumeration比较
转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311275 第1部分 Iterator和Enumer ...
- webpack安装,常见问题和基本插件使用
一:webpack认识 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关 ...
- J-Link OB F103 固件提取及维修
焊接心得挺不错的,可以学习到了 事情起因 某日在调试stm32的时候,错将5v接入3.3v电源输入,开发板烧掉.而且因为jlink没拔掉,也一同阵亡了.光烧了个芯片把整个板换掉太亏,遂打算动手修复. ...