PHP5 session

FROM:http://blog.csdn.net/ok7758521ok/article/details/1642521

 

php5中session的默认实现方式是cookies原理.

将session_id存储于客户端中,将session_name等session变量存储与服务器session_path指定的目录中

每当客户端发送HTTP请求时都会同时发送session_id过去,服务器根据session_id获取相应的值信息

session_id的发送如果客户端cookies被禁止了那么PHP5会自动采用URL的方式发送

session的配置项目中

php.ini中有关session的一些设定会影响到session函数的使用,所以我们先整体了解一下php.ini中有关session的设定。
以php5版本为例

;处理session存取的模式(预设:files)
session.save_handler = files

;session档案存放路径(预设:/tmp)
session.save_path = /tmp

;session使用cookie的功能(预设:启动 1)
session.use_cookies = 1

;session的名字(预设:PHPSESSID)
session.name = PHPSESSID

;自动启动(预设:关 0,此处可以改为1)
session.auto_start = 0

;session使用cookie的生存期,以秒为单位(预设:随浏览器关闭而消失 0)
session.cookie_lifetime = 0

;session使用cookie的路径(预设:与domian相同或根路径 /)
session.cookie_path = /

;session使用cookie的域名称(预设:空)
session.cookie_domain = 

;处理连续资料的方式,本功能只有WDDX模组或PHP内部使用(预设:php)
session.serialize_handler = php


;按千分之一的比率进行垃圾收集
;垃圾收集的处理几率(预设:1)
session.gc_probability = 1
;设置进程比率,(php5新增参数,预设:1000)
session.gc_divisor = 1000

;(垃圾收集)被处理前的生存期(预设:1440[秒])
session.gc_maxlifetime = 1440

;PHP 4.2和以前的版本都有个BUG,即使你禁止了"允许注册全局变量".仍然可以让你在全局变量范围中初始化一个SESSION的值
;PHP 4.3 和以后的版本会发出相应的警告,你可以禁止警告.PHP5中,只有你打开了bug_compat_42(=ON),警告才会显示.
session.bug_compat_42,0
session.bug_compat_warn = 1

;session在重新整理时检查session是否还存在(预设:空)
session.referer_check = 

;特别设定session值的长度(预设:关)
session.entropy_length = 0

;特别设定session值的文件
session.entropy_file =

;使用cache限制器(预设:不要cache)
session.cache_limiter = nocache

;使用cache的生存期
session.cache_expire = 180

;使用sid值(session_id)传送模式(基于安全,预设:关)
session.use_trans_sid = 0

;选择一个HASH函数,0为MD5(128比特强度),1为SHA-1(160比特强度)
session.hash_function = 0

;定义当转换2进制hash数据为一些可读的数据时,每个字符存储多少个比特.
;4 比特: 0-9, a-f
;5 比特: 0-9, a-v
;6 比特: 0-9, a-z, A-Z, "-", ","
session.hash_bits_per_character = 5

;URL重指向的标签
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

对以上设置进行修改以后应该重启Apache服务器,以加载以上的修改。

在使用session时一般也就是以下几个步骤:
1.启动session,使用session_start()函数;
如果使用的状态是cookie base的session传递方式,之后程式的开头都必须使用session_start()函数,而且一定要放在页面开头,之前不能有任何结果输出(比如:echo输出或者html)
如果在php.ini的设置中session.use_trans_sid = 1,点击页面上的连接可以正常传值到第二页,网址会自动加上(举例)[?PHPSESSID=8234c3f661bd1eac450c23d5650e0881]
如果在php.ini的设置中session.use_trans_sid = 0,需要使用URL的方式传递session id,[SID]是php在启动session后自动产生的变量,可以在URL中使用,如:第二页(URLs)
传递过来的第二页也要先启动session,调用session_start()函数。

2.注册session,不推荐使用session_register()函数,使用$_SESSION[]来注册;
需要先调用session_start()函数,使用$_SESSION["session_name"] = "session_value";的方式注册session

3.清楚session,使用session_destroy()函数
结束session,同时删除session文件,需要事先调用过session_start()

4.取得session的id,使用session_id()函数

5.查看session是否已被注册,使用session_is_registered()函数


下面再将跟session有关的函数罗列一下,用到自己查php手册即可
session_cache_expire ;得到目前cache的存活时间
session_cache_limiter ;得到或设计目前cache的限制器
session_decode ;从某一字符串进行session资料的解码
session_destroy ;注销一个session
session_encode ;把session字符串进行编码
session_id ;得到或设定目前的session id
session_is_registered ;检测session是否已经建立
session_module_name ;取得或设定目前session的组能
session_name ;取得或设定目前session的名称(预设:PHPSESSID)
session_regenerate_id ;更新当前的session id
session_register ;注册session
session_save_path ;得到或设定目前session文件的存储路径
session_start ;启动session
session_unregister ;注销某个指定的session
session_unset ;释放所有session里的资料
session_write_close ;写入session资料并结束session功能
session_set_save_handler;设定使用者session的存储方式
session_get_cookie_params ;取得session在cookie的参数
session_set_cookie_params ;设定session在cookie的参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值