Session的应用
1.Session只是在客户端保存由服务器为创建的一个Session标识符,
称为SessionID.
2.SessionID是一个既不会重复,又不容易被找到规律的,由32位
十六进制数组组成的字符串。
3.SessionID保存在客户端的Cookie中,如果阻止Cookie的使用,那
么可以将SessionID保存在用户浏览器地址栏中的URL中。
4.当用户请求WEB服务器时,就会把SessionID发送给服务器,再通过
SessionID提取保存在服务器中的Session变量。
5.可以把Session中保存的变量,当做是一个用户的全局变量,同一
用户对每个脚本的访问都共享变量。
6.当某个用户向Web服务器发送请求时,服务器首先会检查这个客户端
的请求里是否包含一个SessionID。
7.如果包含一个SessionID,服务器则按照SessionID发送Session的
信息检索出来。
8.如果不包含一个SessionID,服务器则为用户创建一个Session,并
且生成一个与Session关联的一个SessionID,响应中被传送给客户
端保存。
Session会因为两种状态自然消失:
1.当使用者关闭浏览器时,Session消失。再次访问,再次创建新的
Session。
2.Session指定的有效期限到期。在PHP系统当中
session.cookie_lifetime = 0,值为0表示“直到关闭浏览器”
来设定Session有效期限,以秒为单位。当系统赋予的生命周期到期
后,不管浏览器是否开启,Session都会自动消失。
***********************************************************
表:会话配置选项
选项名 描述 默认值
session.auto_start
自动启动会话,0表示禁用,1表示开启 0
session.cache_expire
为缓存中的会话页设置当前时间,单位分钟 180
session.cookie_domain
指定会话Cookie中的域 none
session.cookie_lifetime
Cookie中的SessionID在客户机上保存的时间,
0表示延续到浏览器关闭 0
session.cookie_path
在会话Cookie中要设置的路径 /
session.name
会话的名称,在客户端用作Cookie的标识名称 PHPSESSID
session.save_path
会话在服务器存储的路径 /tmp
session.use_cookies
配置在客户端使用Cookie的会话,1标识允许 1
**********************************************************
Session的声明与使用
1.Session的设置于Cookie不同,必须先启动,在PHP中必须调用
session_start()函数,让PHP核心程序,将和session相关的
内建环境变量预先载入到内存中。
2.session_start()函数的语法格式:bool session_start(void)
3.session_start()函数有两个作用:
一是,开始一个会话;二是,返回已经存在的会话。
4.session_start()函数没有参数,返回值都为true
5.使用基于Cookie的Session在开启的时候,不能有任何输出的
内容。因为调用session_start()函数时候,会生成一个唯一的
SessionID,需要保存在客户端电脑的Cookie中。
6.已经session_start()函数开启了Session,不会再创建一个新的
SessionID。
**********************************************************
注册SESSION变量
//注册一个SESSION变量,并且赋值;
$_session["username"]="swj";
$_session["password"]="123456";
username,$_session关联数组中的键名,于普通的变量名相同的
命名规则。
***********************************************************
存放到服务器的文件夹里面的的文件,保存的Session的变量文件。
内容格式:
变量名|类型:长度:值; 每个变量都使用的相同结构保存
username|s:3:"swj";password|s:6:"123456"
***********************************************************
删除指定SESSION变量
//销毁和当前SESSION有关的所有资料,但是没有释放和当前SESSION
相关的变量,也不会删除客户端上的SESSION ID。
语法格式:bool session_destroy(void)
返回值:成功返回TRUE,失败返回FALSE
//unset释放当前SESSION中注册的单个变量:
语法格式:usert($_session["username"]);
usert($_session["password"]);
usert($_session)删除不了SESSION中的注册的所有变量
如果删除$_session所有变量:$_session=array();
php默认的Session是基于Cookie,注销session,注销cookie
获取session名称seesion_name()函数获取SESSION名称。
**********************************************************
SESSION的缓冲控制方式
session_cache_limiter()函数有1个参数,是可选参数,当函数
没有参数时,返回当前缓存的管理方式,当设置参数时,可根据
实际情况选择下面3种值:
nocache:禁止客户端和中间路由器缓存本页。
public:允许客户端和中间路由器缓存本页。
private:仅允许客户端缓存本页,不允许中间路由器缓存本页。
session_set_cookie_params()函数,用于设置保存SESSION名称的COOKIE,其有5个参数:
第1个参数是必选参数,其值是COOKIE的有效期,单位为秒。当这个COOKIE失效后,与之对应的SESSION也会失效。
第2个参数是可选参数,其值是COOKIE的有效路径,当COOKIE在指定路径下有效时,与之对应的SESSION才可以使用。
第3个参数是可选参数,其值是COOKIE的有效域名,当COOKIE在指定域名下有效时,与之对应的SESSION才可以使用。
第4个参数是可选参数,用于设置是否使用加密方式传输COOKIE值,默认值是FALSE。
第5个参数是可选参数,用于设置是否只使用HTTP协议访问COOKIE值,如果其值是1或TRUE,其他脚本语言,如:JavaScrrpt就不能访问这个COOKIE,这个参数默认的值是FALSE。
SESSION的跨页传递
<?php
//初始页
session_start();
$_SESSION["data"]="SESSION数据";
echo "<a href='id.php?sid=".session_id()."'>传递ID</a>";
?>
<?php
//id.php
$sid=$_GET["sid"];
session_id($sid);
session_start();
print_r($_SESSION);
?>



评论or提问点击发表评论或提问!