PHP-会话控制

来源:互联网 发布:tomcat修改域名 编辑:程序博客网 时间:2024/05/16 17:46

一.cookie

是一种将用户的数据记录在客户端的技术。

cookie数据以键值对的形式保存到客户端,当再次访问同一个服务器中的其它页面时,就会自动携带cookie数据一起访问,服务器重新对登录者的身份进行验证,而不需要用户每访问该服务器的一个页面都登录一次。

设置cookie:

bool setcookie(string name,string value,int expiretime,string path,string domain,bool secure)

参数说明:

name ---名称

value ---可以是数字或者字符串形态

exprietime----生存时间 (Unix时间戳,从nuix纪元开始的秒数,如 time()+60*60*24  为1天后失效)

path------在服务器端的指定路径,只有该路径下的页面存取此cookie

domain-----指定该cookie所属服务器的网址 ,如:要设置在example.com域名下的所有子域都有效,就设置为“.example.com”

secure-----指定cookie是否通过https连接传送 默认为false

<?phpsetcookie("haolei","q23442",time()+3600*24,"/",".xinxiaonet.com",1);?>
说明:如果需要向客户端设置多个cookie,可以多次调用setcookie()函数来实现,但如果两次设置相同名称的cookie则后者会把前者覆盖

读取cookie

从php5以后,任何从客户端发来的cookie信息都被保存在$_COOKIE数组中

<?phpprint_r($_COOKIE);?>

数组形态的cookie

cookie也可以利用多维数组的形式,将多个内容值储存在相同cookie名称下

<?phpsetcookie("xin[username]","haolei");setcookie("xin[pwd]","bjjkf");setcookie("xin[time]",1);?>


删除cookie

1.setcookie("cookiename");

2.setcookie("cookiename","",time()-1);


二:session

在客户端仅保存由服务器为用户创建的一个sessionID,而服务器端保存session变量的值。

当用户向服务器发出请求时,服务器首先会检查这个客户端的请求中是否已经包含了一个sessionID。如果包含,说明之前已经为该用户创建过session,则按照sessionID把session变量值检索出来。如果请求中不包含sessionID,则为该用户创建一个session,并且把生成sessionID在本次响应中保存在客户端。

session的生命周期:

1.当客户端与服务器端失去连接(网络中断、浏览器关闭、服务器关闭)时,session自动失效

2.session有效期限到期,不管客户端浏览器是否关闭,session都会失效 (修改php.ini 中的session.cookie.lifetime=0  单位/秒)

php.ini文件中相关session的配置:



bool session_start();

如果使用的是基于cookie的session,在使用该函数开启session之前不能有任何输出

注册session

session_start();$_SESSION["username"]="haolei";$_SESSION["password"]="asdfasdf";
销毁session

1.bool session_destroy();//

2.unset($_SESSION["$name"])  //删除session中注册的变量

3.$_SESSION=array()  //将$_SESSION的值修改为空数组

php session 默认是基于cookie的,sessionID被存储在客户端的cookie中,所以销毁session时也需要清除cookie中的sessionID :

<?phpsession_start();$_SESSION=array();if(isset($_COOKIE["session_name()"])){setcookie("session_name()","",time()-1);}session_destroy();?>



原创粉丝点击