php中session的基础知识_第1页
php中session的基础知识_第2页
php中session的基础知识_第3页
php中session的基础知识_第4页
php中session的基础知识_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论