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的参数
相关推荐
### PHP5 Session 详解 #### 一、HTTP 协议与 Session 的必要性 HTTP(HyperText Transfer Protocol)协议作为 Web 服务器与客户端之间通信的基础协议,其本质特征之一是无状态性。这意味着每次 HTTP 请求都是独立...
### PHP5 Session 详解 #### 一、Session 的概念与作用 **Session** 在中文中通常被称为“会话”,它的本意是指从一系列有始有终的动作或消息组成的一个完整过程,例如打电话从拨号到挂断电话的过程。在网络开发...
**PHP5 Session生命周期详解** 在PHP中,Session是一种用于存储用户状态信息的机制,它允许在不同的页面间共享数据,而无需使用Cookie或其他方法。Session的核心是Session ID,这是一个唯一的标识符,通常由服务器...
**PHP的Session基础** 在Web开发中,PHP的Session机制是一种非常重要的用户状态管理工具,它允许开发者在用户的浏览器会话之间存储数据,确保在不同页面间传递信息。本篇文章将深入探讨Session的工作原理以及其在...
在PHP编程中,Session是一种非常重要的机制,用于在用户的不同页面请求之间保持状态。它允许开发者存储用户信息,如登录状态、购物车内容等,即使用户在网站上浏览不同的页面,也能保持这些信息的连续性。现在我们来...
在PHP中,Session是一种非常重要的会话管理机制,它允许开发者在用户的不同页面请求之间保持状态。本篇文章将深入探讨如何在PHP中设置Session,包括过期、失效以及有效期的管理。 首先,让我们关注`session.save_...
### PHP中的Session全面教程 #### 一、Session概念解析 在深入探讨PHP中Session的具体用法之前,我们首先需要理解Session到底是什么以及它为何如此重要。 **1.1 Session的基本定义** Session是一种用来追踪用户...
5. **结算**:在结账页面,我们清空购物车(`$_SESSION['cart'] = array();`)并处理订单,可能涉及到数据库操作,如创建订单记录,更新库存等。 在提供的"CarSession"压缩包文件中,可能会包含实现以上功能的PHP源...
5. **销毁Session**:`destroy_session`方法可能是用来结束当前用户的Session,清除所有Session数据,并删除客户端的Session ID cookie。 6. **管理Session ID**:类可能还提供了管理Session ID的功能,如`...
在PHP开发中,Session管理是不可或缺的一部分,尤其是在大型分布式系统中。传统的session存储方式,如文件或数据库,可能无法满足高并发、高可用性的需求。为了解决这个问题,我们可以利用memcache(或其升级版...
5. 限制SESSION存储时间:定期失效SESSION,降低被利用的风险。 6. 使用服务器端SESSION存储:不依赖客户端的cookie,减少SESSION ID被盗用的机会。 结合标题和描述,我们可以推测这个压缩包可能包含一个示例代码,...
4. **检查Session状态**:`session_status()`函数可以检查当前的Session状态,返回值为`PHP_SESSION_DISABLED`、`PHP_SESSION_NONE`或`PHP_SESSION_ACTIVE`。 四、Session与Cookie的对比 虽然Session和Cookie都能...
在PHP编程中,Session是用于跟踪用户状态的一种机制,它在用户访问网站的不同页面时保持数据。当用户登录系统时,通常会创建一个session来存储用户的登录信息,如用户名、用户ID等。然而,有时在处理PHP Session时,...
5. **注册session处理**:在PHP代码中调用`session_set_save_handler()`函数,注册我们刚才创建的`Session`类作为session的处理器。 6. **启动session**:最后,在需要使用session的地方调用`session_start()`,...
5. **session.use_cookies**: 是否使用Cookie来传递Session ID。 6. **session.use_only_cookies**: 是否只使用Cookie传递Session ID,不通过URL。 #### 七、Session的常见问题与解决方案 - **Session丢失问题**:...
5. **优化与扩展**:根据需求,可能需要考虑session数据的序列化和反序列化策略,以及在服务器扩展时的负载均衡和故障恢复策略。 除了memcache,还有其他如Redis等分布式存储系统也可用于session共享,它们各有优...
5. **自定义session存储处理**:如果以上方法仍无法满足需求,可以考虑自定义session存储处理器,通过实现`session_set_save_handler()`函数来自行管理session的创建、读取、写入和销毁过程,从而更好地控制session...
标题中的问题涉及到PHP 5.3版本中对`session_register()`函数的弃用,这是一个旧的会话管理函数,从PHP 5.3.0开始被标记为不推荐使用,并在PHP 5.4.0中完全移除。在升级到PHP 5.3后,使用`session_register()`的代码...
**5. 退出登录** 当用户选择退出时,需要清除所有会话数据并结束会话: ```php session_start(); session_unset(); // 清除会话数据 session_destroy(); // 结束会话 header('Location: login.php'); exit; ``` ...