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()函数说明:
stringsession_id([string$id])
session_id()可以用来获取/设置当前会话ID。
为了能够将会话ID很方便的附加到URL之后,你可以使用常量SID获取以字符串格式表达的会话名称和ID。请参考会话处理。
session_id()函数参数:
id
如果指定了id参数的值,则使用指定值作为会话ID。必须在调用session_start()函数之前调用session_id()函数。不同的会话管理器对于会话ID中可以使用的字符有不同的限制。例如文件会话管理器仅允许会话ID中使用以下字符:a-zA-Z0-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默认的sessionid生成算法介绍
以php5.3.6的源码为例,进入/ext/session目录,生成sessionid的函数位于session.c文件的345行,c语言函数原型如下:
PHPAPIchar*php_session_create_id(PS_CREATE_SID_ARGS);
有兴趣的可以具体分析实现原理。
PHP默认的sessionid长度
截取一些实际的php5.4.6服务端生成的sessionid如下:
sess_00nrqa20hjrlaiac0eu726i4q5 sess_89j9ifuqrbplk0rti2va2k1ha0 sess_g2rv1kd6ijsj6g6c9jq5mqglv5
sess_04es72a83tqsl0jqd3cvrc4s01 sess_8b7a5lme60g49lvk4u4jiemdn1 sess_g3uk6d3gbashg5eoq0b2k7vsk0
sess_04u0ns0oobh2g93t009bij2rq0 sess_8dfvkiv8ml44fdqrk1rcmjchs4 sess_g64tddhbo8pbj8bs7bel44rf35
sess_0592dolr5m0k392fah6c9preg7 sess_8fhgkjuakhatbeg2fa14lo84q1 sess_g6kl828qqsnvdrse7ff52cl2a4
sess_066g8irr0m22iqotscepub4e13 sess_8gn03i9j1tta7655qfj6nl1l53 sess_g8t45j6qce7mf55nk14cotj5i4
sess_08nr1fav9jqs2pdi5qlpsmd247 sess_8gvu05313o7p9usksaacaiegu6 sess_gbtjmr57iat86c8ve86ar5nh30
可见具体的sessionid为“sess_”后面的部分,长度为26位,此长度仅限于php5.4.6.
phpsession_id()用法代码举例如下:
输出session_id()详细代码:
<?php session_start(); echosession_id(); //输出08nr1fav9jqs2pdi5qlpsmd247 ?>
设置session_id()详细代码:
<?php session_id("www.169it.com"); session_start(); echosession_id(); //输出www.169it.com ?>