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 木马攻击防御技巧
Jun 13 PHP
PHP简洁函数小结
Aug 12 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
Yii2.0 模态弹出框+ajax提交表单
May 22 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 PHP
详解phpstorm2020最新破解方法
Sep 17 PHP
php TP5框架生成二维码链接
Apr 01 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
YII实现分页的方法
2014/07/09 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
js实现聊天对话框
2020/02/08 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
在Python下尝试多线程编程
2015/04/28 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
Python 中Pickle库的使用详解
2018/02/24 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
毕业生找工作自荐书
2014/06/30 职场文书
长江三峡导游词
2015/01/31 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
详解MySQL主从复制及读写分离
2021/05/07 MySQL
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL