




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——php中session的基础知识PHP是一种通用开源脚本语言。下面是我整理的php中session的根基学识,梦想对大家有扶助!
session的生命周期是多长
1欣赏器终止时其生命周期也同时终止,但是档案依旧存在于/tmp/sess_???
2下次重新开欣赏器时会重新调配sessionID,假设你使用session_id把以前的ID带回来,那么会去读取残存在/tmp处的sess_???,取回你之前全体已经设定的参数
3可以在PHP.ini里修改session档案残存的时间
session.gc_maxlifetime=1440;afterthisnumberofseconds,stored
datawillbeseenasgarbageand
cleanedupbythegcprocess
默认是1440秒,24分钟
使用session留神的存储路径问题,看看php.ini里对于session的设置
[Session]
session.save_handler=files;handlerusedtostore/retrievedata
session.save_path=/tmp;argumentpassedtosave_handler
inthecaseoffiles,thisisthe
pathwheredatafilesarestored
默认是存于/tmp目次下,这个目次可不确定真有啊,最好改为你的php安装路径,譬如c:/php
彻底理解PHP的SESSION机制
1.session.save_handler=files
*1.session_start
1.session_start是session机制的开头,它有确定概率开启垃圾回收,由于session是存放在文件中,
PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php.ini的配置抉择的,
但是有的系统是session.gc_probability=0,这也就是说概率是0,而是通过cron脚本来实现垃圾回收.
session.gc_probability=1
session.gc_pisor=1000
session.gc_maxlifetime=1440//过期时间默认24分钟
//概率是session.gc_probability/session.gc_pisor结果1/1000,
//不建议设置过小,由于session的垃圾回收,是需要检查每个文件是否过期的。
session.save_path=//犹如不同的系统默认不一样,有一种设置是N;/path
//这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本
2.session会判断当前是否有$_COOKIE[session_name];session_name返回保存session_id的COOKIE键值,这个值可以从php.ini找到
=PHPSESSID//默认值PHPSESSID
3.假设不存在会生成一个session_id,然后把生成的session_id作为COOKIE的值传递到客户端.相当于执行了下面COOKIE操作,留神的是,这一步执行了setcookie操作,COOKIE是在header头中发送的,这之前是不能有输出的,PHP有另外一个函数session_regenerate_id假设使用这个函数,这之前也是不能有输出的。
setcookiesession_name,
session_id,
session.cookie_lifetime,//默认0
session.cookie_path,//默认/当前程序跟目次下都有效
session.cookie_domain,//默认为空
4.假设存在那么session_id=$_COOKIE[session_name];
然后去session.save_path指定的文件夹里去找名字为SESS_.session_id的文件.
读取文件的内容反序列化,然后放到$_SESSION中
*2.为$_SESSION赋值
譬如新添加一个值$_SESSION[test]=blah;那么这个$_SESSION只会维护在内存中,当脚本执行终止的时候,用把$_SESSION的值写入到session_id指定的文件夹中,然后关闭相关资源.这个阶段有可能执行更改session_id的操作,譬如销毁一个旧的的session_id,生成一个全新的session_id.一半用在自定义session操作,角色的转换上,譬如Drupal.Drupal的匿名用户有一个SESSION的,当它登录后需要换用新的session_id
ifisset$_COOKIE[session_name]
setcookiesession_name,,time-42000,/;//旧sessioncookie过期
session_regenerate_id;//这一步会生成新的session_id
//session_id返回的是新的值
*3.写入SESSION操作
在脚本终止的时候会执行SESSION写入操作,把$_SESSION中值写入到session_id命名的文件中,可能已经存在,可能需要创造新的文件。
*4.销毁SESSION
SESSION发出去的COOKIE一般属于即时COOKIE,保存在内存中,当欣赏器关闭后,才会过期,假使需要人为强制过期,譬如退出登录,而不是关闭欣赏器,那么就需要在代码里销毁SESSION,方法有好多:
o1.setcookiesession_name,session_id,time-8000000,..;//退出登录前执行
o2.usset$_SESSION;//这会删除全体的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。
o3.session_destroy;//这个作用更彻底,删除$_SESSION删除session文件,和session_id
当不关闭欣赏器的处境下,再次刷新,2和3都会有COOKIE传过来,但是找不到数据
2.session.save_handler=user
用户自定义session处理机制,更加直观
*session_set_save_handleropen,close,read,write,destroy,gc;
1.session_start,执行open$save_path,$session_name开启session操作句柄
$save_path在session.save_handler=files的处境下它就是session.save_path,
但是假设用户自定的话,这个两个参数都用不上,直接返回TRUE,执行read$id从中读取数据.//这个参数是自动传递的就是session_id,可以通过这个值举行操作。
*2.脚本执行终止
执行write$id,$sess_data//两个参数,很简朴
*3.假使用户需要session_destroy
先执行destroy.在执行第2步
一个实际例子,代码如下:
//SESSION初始化的时候调用
functionopen$save_path,$session_name
global$sess_save_path;
$sess_save_path=$save_path;
returntrue;
//关闭的时候调用
functionclose
returntrue;
functionread$id
global$sess_save_path;
$sess_file=$sess_save_path/sess_$id;
returnstring@file_get_contents$sess_file;
//脚本执行终止之前,执行写入操作
functionwrite$id,$sess_data
echosdfsf;
global$sess_save_path;
$sess_file=$sess_save_path/sess_$id;
if$fp=@fopen$sess_file,w
$return=fwrite$fp,$sess_data;
fclose$fp;
return$return;
else
returnfalse;
functiondestroy$id
global$sess_save_path;
$sess_file=$sess_save_path/sess_$id;
return@unlink$sess_file;
functiongc$maxlifetime
global$sess_save_path;
foreachglob$sess_save_path/sess_*as$filename
iffilemtime$filename+$maxlifetimetime
@unlink$filename;
returntrue;
例:PHPSession在您把用户信息存储到PHPsession中之前,首先务必启动会话。
解释:session_start函数务必位于标签之前,代码如下:
?
phpsession_start;?
上面的代码会向服务器注册用户的会话,以便您可以开头保存用户信息,同时会为用户会话调配一个UID。
存储Session变量
存储和取回session
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猪羊养殖知识培训课件
- 2025重庆涪陵“才聚涪州·引雁回巢”引才专项招聘410人(第一批)笔试参考题库附带答案详解
- 2025福建福州左台置业有限公司项目建设合同制人员招聘33人笔试参考题库附带答案详解
- 2025浙江省安全生产科学研究有限公司招聘15人笔试参考题库附带答案详解
- 2025建信人寿保险股份有限公司滨州中心支公司招聘9人笔试参考题库附带答案详解
- 角膜及眼表疾病知到智慧树章节测试课后答案2024年秋温州医科大学
- 2025年河北石家庄印钞有限公司招聘13人笔试参考题库附带答案详解
- 2025年安徽三洲水利建设有限公司工作人员招聘9人笔试参考题库附带答案详解
- 2025年中国人寿招聘笔试笔试参考题库附带答案详解
- 2025山东省联合农药工业有限公司招聘102人笔试参考题库附带答案详解
- 2024年鄂尔多斯市国资产投资控股集团限公司招聘公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 竞赛试卷(试题)-2023-2024学年六年级下册数学人教版
- 《研学旅行课程设计》课件-辨识与研学旅行场混淆的概念
- 创维电视55寸说明书
- 部编版道德与法治三年级下册教案全册
- 山西众辉电力服务公司历年真题
- 修建蓄水池施工合同协议书范本
- CJJ-181-2012(精华部分)城镇排水管道检测与评估技术规程
- 《乳腺癌的防治》课件
- 个人所得税个人所得税
- 大班健康《爱是什么》课件
评论
0/150
提交评论