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实现的生成静态HTML速度快类库
Mar 31 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
May 12 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
PHP getDocNamespaces()函数讲解
Feb 03 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
php与阿里云短信接口接入操作案例分析
May 27 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
drupal 代码实现URL重写
2011/05/04 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php实现网站留言板功能
2015/11/04 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
js 控制页面跳转的5种方法
2013/09/09 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python 实现链表实例代码
2017/04/07 Python
Python set常用操作函数集锦
2017/11/15 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
Python中extend和append的区别讲解
2019/01/24 Python
python3.6实现学生信息管理系统
2019/02/21 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
python 实现视频 图像帧提取
2019/12/10 Python
python中有关时间日期格式转换问题
2019/12/25 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
学院书画协会部门岗位职责
2013/12/01 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
师德师风培训感言
2015/08/03 职场文书
《日月潭》教学反思
2016/02/20 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python