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&amp;&amp;mysql)二
Oct 09 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
php输入流php://input使用浅析
Sep 02 PHP
php静态文件返回304技巧分享
Jan 06 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
分析php://output和php://stdout的区别
May 06 PHP
php实现等比例压缩图片
Jul 26 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
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
javascript 类方法定义还是有点区别
2009/04/15 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
Python Json序列化与反序列化的示例
2018/01/31 Python
python操作redis方法总结
2018/06/06 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
python中的django是做什么的
2020/07/31 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
基层工作经历证明
2014/01/13 职场文书
高中生物教学反思
2014/02/05 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS