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 smarty模版引擎中的缓存应用
Dec 02 PHP
PHP中的strtr函数使用介绍(str_replace)
Oct 20 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 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判断图片格式的七种方法小结
2013/06/03 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
小程序实现投票进度条
2019/11/20 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
Python单元和文档测试实例详解
2019/04/11 Python
Python文件路径名的操作方法
2019/10/30 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
教育课题研究自我鉴定范文
2013/12/28 职场文书
学生爱国演讲稿
2014/01/14 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
承诺书格式
2014/06/03 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
南湾猴岛导游词
2015/02/09 职场文书
《花钟》教学反思
2016/02/17 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
Go中的条件语句Switch示例详解
2021/08/23 Golang
redis protocol通信协议及使用详解
2022/07/15 Redis