php中session_id()函数详细介绍,会话id生成过程及session id长度 |
php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID 。为了能够将会话 ID 很方便的附加到 URL 之后, 你可以使用常量 SID 获取以字符串格... php中session_id()函数原型及说明 session_id()函数说明: string session_id ([ string $id ] ) session_id() 可以用来获取/设置 当前会话 ID 。 为了能够将会话 ID 很方便的附加到 URL 之后, 你可以使用常量 SID 获取以字符串格式表达的会话名称和 ID 。 请参考 会话处理 。 session_id()函数参数: id 如果指定了 id 参数的值, 则使用指定值作为会话 ID 。 必须在调用 session_start() 函数之前调用 session_id() 函数 。 不同的会话管理器对于会话 ID 中可以使用的字符有不同的限制 。 例如文件会话管理器仅允许会话 ID 中使用以下字符:a-z A-Z 0-9 , (逗号)和 - (减号) Note: 如果使用 cookie 方式传送会话 ID,并且指定了 id 参数, 在调用 session_start() 之后都会向客户端发送新的cookie, 无论当前的会话 ID 和新指定的会话 ID 是否相同 。 session_id()函数返回值: session_id() 返回当前会话ID 。 如果当前没有会话,则返回空字符串("") 。 php会话ID如何生成以及会话ID长度 一个访问者访问你的 web 网站将被分配一个唯一的 id, 就是所谓的会话 id. 这个 id 可以存储在用户端的一个 cookie 中,也可以通过 URL 进行传递. Session会话用来追踪每个用户的会话,使用服务器生成的SessionID进行标识,用以区分用户 。Session存放在服务器的内存中,SessionID存放在服务器内存和客户机的Cookie里面 。这样,当用户发出请求时,服务器将用户Cookie里面记录的SessionID和服务器内存中的SessionID进行比对,从而找到这个用户对应的Session进行操作 。所以,如果客户机禁止Cookie的话,Session也不能使用 。 php会话ID是如何产生的?PHP默认的session id生成算法介绍 以php5.3.6的源码为例,进入/ext/session目录,生成session id的函数位于session.c文件的345行,c语言函数原型如下: PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS); 有兴趣的可以具体分析实现原理 。 PHP默认的session id长度 截取一些实际的php 5.4.6服务端生成的session id如下: sess_00nrqa20hjrlaiac0eu726i4q5 sess_89j9ifuqrbplk0rti2va2k1ha0 sess_g2rv1kd6ijsj6g6c9jq5mqglv5 可见具体的session id 为 “sess_”后面的部分,长度为26位,此长度仅限于php 5.4.6. php session_id()用法代码举例如下: 输出session_id()详细代码: <?php session_start(); echo session_id(); // 输出 08nr1fav9jqs2pdi5qlpsmd247 ?> 设置 session_id()详细代码: <?php session_id("www.169it.com"); session_start(); echo session_id(); // 输出 www.169it.com ?> |