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 相关文章推荐
Search Engine Friendly的URL设计
Oct 09 PHP
提升PHP速度全攻略
Oct 09 PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
php中的动态调用实例分析
Jan 07 PHP
PHP中的traits简单使用实例
May 13 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 PHP
PHP7.3.10编译安装教程
Oct 08 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 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开发微信支付的代码分享
2014/05/25 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
Django 使用logging打印日志的实例
2018/04/28 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
财务方面个人工作的自我评价
2013/12/28 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
小学新教师培训方案
2014/02/03 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
眼镜促销方案
2014/03/15 职场文书
公证委托书模板
2014/04/03 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
导游词开场白
2015/01/31 职场文书
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL