会话控制

会话控制的目的:
为了使网站可以跟踪客户端与服务器之间的交互,保存和记忆每个用户的身份和信息
 
 
会话跟踪技术:
1.隐藏表单域
2.URL重写
3.Cookie
4.Session
 
 
Cookie:
1.cookie是在http协议下,服务器或脚本可以维护客户端信息的一种方式。
2.用于保存用户信息
3.用户访问服务器时,服务器可以设置和访问cookie
4.cookie保存在客户端,
5.利用网页代码的HTTP头信息传递,每一次网页请求都可以伴随Cookie传递
 
设置:setcookie("user","Mc",time()+60*60);
接收、使用:
$_COOKIE["user"];
删除:
setcookie("user","Mc",time()-1);
 
setcookie()之前不能有任何输出,就是空格,空白行都不行,
 
Session:
1.Session从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期。在会话期间,分配客户唯一的一个SessionID,用来标识当前用户,与其他用户进行区分。
2. Session会话时,SessionID会分别保存在客户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的Session目录中。
3.Session通过ID接受每一个访问请求,从而识别当前用户、跟踪和保持用户具体资料,以及Session变量(在Session活动期间,可在Session中存储数字或文字资料),比如session_name等等,这些变量信息保存在服务器端。
4.SessionID可以作为会话信息保存到数据库中,进行Session持久化,这样可以跟踪每个用户的登陆次数、在线与否、在线时间等。
二、使用会话的基本步骤: 开始会话   注册会话变量     使用会话变量      注销变量并销毁会话 
 三、开始会话 
 session_start() 开始一个会话或者返回已经存在的会话。 说明:这个函数没有参数,且返回值均为true。
如果你使用基于cookie的session,那么在使用session_start()之前浏览器不能有任何输出,否则会发生以下错误: Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/html/test.php:2) 
 也可以在php.ini里启动session.auto_start=1,这样就无需每次使用session之前都要调用session_start()。启用此指令的缺点是无法在会话中存储对象,因为为定义要在会话开始之前加载才能重新创建对象。
四、注册、使用会话变量
$_SESSION['username']
五、注销会话变量
unset($_SESSION['username']);
六、销毁会话
session_unset();//函数清除存储在当前会话中的所有变量,它能有效地将会话重置为创建时的状态。
session_destroy()//函数从存储机制中完全删除会话,使当前会话失效。
七、会话配置
php.ini配置文件中有一组会话配置选项,可以对其进行设置:
session.save_handler = files ; 如何存储session信息
session.save_path = /tmp; save_handler 设为文件时, session文件保存的路径 
 session.use_cookies = 1 ; 是否使用cookies 
 session.name = PHPSESSID;  用在cookie里的session的名字 
 session.auto_start = 0 ; 是否自动启动
session session.cookie_lifetime = 0 ; 设置会话cookie的有效期,以秒为单位,为0时表示直到浏览器被重启 
 session.cookie_path = / ; cookie的有效路径 
 session.cookie_domain = ; cookie的有效域 
 session.cache_expire = 180 ; 设置缓存中的会话文档在 n 分钟后过时
八、cookie和session区别:
 cookie和session都可以暂时保存多个页面中使用的变量,但是它们有本质的差别:cookie存放在客户端浏览器中; session保存在服务器上; 它们之间的联系是session ID 一般保存在cookie中,或者放在URL上。
 
 
 

你可能感兴趣的:(会话)