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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
php微信开发自定义菜单
Aug 27 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
Oct 16 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批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
php实现微信支付之企业付款
2018/05/30 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
Python代码的打包与发布详解
2014/07/30 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
python 决策树算法的实现
2020/10/09 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
C/C++程序员常见面试题一
2012/12/08 面试题
数控技校生自我鉴定
2014/04/19 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
2015感人爱情寄语
2015/02/26 职场文书
总经理致辞
2015/07/29 职场文书
Python Django项目和应用的创建详解
2021/11/27 Python