php中session_id()函数详细介绍,会话id生成过程及session id长度


Posted in PHP onSeptember 23, 2015

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 
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

可见具体的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
?>
PHP 相关文章推荐
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
php异步多线程swoole用法实例
Nov 14 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
WordPress自定义时间显示格式
Mar 27 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 PHP
PHP常用header头定义代码示例汇总
Aug 29 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 #PHP
php实现简单的MVC框架实例
Sep 23 #PHP
php实现的单一入口应用程序实例分析
Sep 23 #PHP
PHP中常见的缓存技术实例分析
Sep 23 #PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 #PHP
PHP提高编程效率的20个要点
Sep 23 #PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 #PHP
You might like
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
简单JS代码压缩器
2006/10/12 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python中bisect的用法及示例详解
2020/07/20 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
股份转让协议书
2014/04/12 职场文书
宣传工作经验材料
2014/06/02 职场文书
文明社区申报材料
2014/08/21 职场文书
质量月活动总结
2014/08/26 职场文书
公司离职证明样本
2014/09/13 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书