一、
1.session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经历的时间。
当登录网站的时候,启动session会话,在服务器中随机生成一个唯一的session_id 这个session_ID在本次登录结束之前在页面一直有效。当关闭页面或者执行注销操作胡,这个session_ID在服务器中自动注销。
2.创建会话四个步骤:启动会话、注册会话、使用会话和删除会话
1)启动会话:
方法一:session_start()函数创建
bool session_start(void)
方法二:将php.ini文件中的register_globals选项之设置为on,使用session_register()函数
boolean session_register(string name)
2)注册会话
会话变量被启动以后,全部保存在数组$_SESSION中。通过数组$_SESSION创建一个会话变量,直接给数组添加一个元素即可。
<?php
session_start(); //启动session
$_SESSION["user"]=null; //声明一个名为user的变量,并赋空值
?>
3)使用会话
<?php
session_start(); //启动会话
if(isset(session_id())){ //判断是否存在会话ID
echo $_SESSION['DD']; //存在就直接访问
}else{
$_SESSION['DD']="doudou"; //不存在就创建一个并且对它进行赋值为doudou
}
4)删除会话
删除单个会话:
unset($_SESSION['user']);
删除多个会话:
$_SESSION=array();
结束当前会话
session_destroy();
1.在客户端支持cookie的前提下,控制session的声明周期
1)
void_session_set_Cookie_params(int lifetime [, string path [, string domain [, bool secure]]])
session_set_cookie_params()函数
lifetime——必要参数 cookie的生存期
path—— 可省参数,cookie的有效路径
domain——可省参数,cookie的有效域
secure——可省参数,cookie在安全的范围内被发送
例:
<?php
$time=1*60; //设定过期时间
session_set_cookie_params($time); //设置 sess
session_start(); //启动session
$_SESSION[id]="豆豆"; //注册变量
?>
2)setCookie()函数控制session的过期时间
<?php
session_start(); //启动session
$time=1*60;
setCookie(session_name(),session_id(),time()+$time,"/"); //设置session过期时间
$_SESSION[id]="豆豆"; //注册session变量
?>
2.session临时文件
在服务器中,如果将所有用户的session都保存到临时目录中,会降低服务器的安全性和服务器的效率,导致打开服务器所在的站点会非常的慢。解决这个问题的办法就是将session存储到数据库或者临时文件中。
完成此操作需要使用PHP中session_save_path()函数、该函数取得或者重新配置目前的session的存放路径。
string session_save_path([string path])
3、session缓存
平时我们会经常用一些清理软件清理缓存,他是什么原理呢:
session缓存就是将网页中的内容临时存储到客户端IE的Temporary Internet Files文件下,并且可以设置缓存时间。当网页第一次被浏览以后,页面的部分内容在规定的时间被临时存在客户端的临时文件夹中,这样下次访问这个页面的时候,就可以就直接读取缓存中的内容,从而提高网站的浏览效率。
1)实现session缓存功能的语法:
string session_cache_limiter([string cache_limiter])
cache_limiter参数值的说明:nochache:不设置缓存;private: 私有方式 ; private nochache:私有方式,但不过期;public:公有方式;
2)设置缓存时间:
int session_cache_expire([int new_cache_expire]);
cache_expire为可选的参数,单位为分钟,默认为180分钟。
4.session数据库存储
将session存储在指定的文件夹中,如果一个大型网站的访问率很高,一个月登陆了40000人,这样站点就存在了40000个session文件,如果在这40000个文件里查询一个session_id,那么速度就会特别慢,如果将session_ID放到数据库中,那么查询的速度受影响就会小很多。
将session_ID存储在数据库中的操作:
bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);
session_set_save_handler()函数里的参数不是六个变量,而是六个函数
open(save_path,session_name)--------找到session存储地址,取出变量名称
close()--------不必要函数,关闭数据库
read(key)------读取session的键值,key 对应session_id
write(key,data)------其中data对应设置的session变量
destroy(key)-----注销session对应的session键值
gc(expiry_time)----清除过期的session记录
5、创建cookie
cookie是web服务器暂时存在用户硬盘上的一个文本文件,然后被浏览器读取。当用户再次访问web网站时,网站通过读取cookie文件记录这位访客的信息(访问位置,话费时间,用户名和密码),从而迅速做出反应。
创建cookie:
bool setCookie(string name [,string value [,int expire[, string path[,string domain[, int secure]]]]])
如果cookie被创建以后,没有设置过期时间,那么cookie文件会在浏览器关闭时自动删除。