PHP中Cookie和Session
PHP中Cookie和Session
计应134班凌豪
Cookie
1.什么是Cookie
Cookie是一种在客户浏览器端村粗数据并以此来跟踪和识别用户的机制,简单的说Cookie是Web服务器暂时存储在用户硬盘上的一个文本文件,并随后被web服务器读取。Web服务器可以通过Cookie包含的信息来筛选或维护这些信息,以判断在HTTP中传输的状态。
Cookie文本文件的命令格式如下:
用户名@网站地址【数字】.txt
2.如何创建Cookie
在PHP中通过setcookie()函数创建Cookie,语法格式如下:
bool setcookie(string name,【string value【int exprie【,string path【,string domain【,int secure】】】】】) 其基本参数说明及举例如下:
参数 |
说明 |
举例 |
name |
Cookie的变量名 |
可以通过$_COOKIE["cookiename"]调用变量名为cookiename的Cookie |
value |
Cookie变量的值,该值保存在客户端,不能用来保存敏感数据 |
可以通过$_COOKIE["values"]获取名为values的值 |
expire |
Cookie的失效时间,expire是标准的UNIX时间标记,可以用time()函数或mktime()函数获取,单位为秒 |
如果不设置Cookie的失效时间,那么Cookie将永远有效,除非手动将其删除 |
path |
Cookie在服务器端的有效路径 |
如果该参数设置为“/”,则它在整个domain内有效,如果设置为“/11”,它在domain下的/11目录及子目录内有效。默认是当前目录 |
domain |
Cookie有效的域名 |
如果要使Cookie在mrbccd.com域名下的所有子域都有效,应该设置为mrbccd.com |
secure |
指明Cookie是否仅通过安全的HTTPS,值为0或1 |
如果值为1,则Cookie只能在HTTPS连接上有效;如果值为默认值0,则Cookie在HTTP和HTTPS连接上均有效 |
3.读取Cookie
在PHP中可以直接通过超级全局数组$_COOKIE[]来读取浏览器端的Cookie值
<?php
date_default_timezone_set("Etc/GMT-8");
if(!isset($_COOKIE["visittime"])){ //如果Cookie不存在
setcookie("visittime",date("y-m-d H:i:s")); //设置一个Cookie变量
echo "欢迎您第一次访问网站!"."<br>"; //输出字符串
}else{ //如果Cookie存在
setcookie("visittime",date("y-m-d H:i:s"),time()+60); //设置带Cookie失效时间的变量
echo "您上次访问网站的时间为:".$_COOKIE["visittime"]; //输出上次访问网站的时间
echo "<br>"; //输出回车符
}
echo "您本次访问网站的时间为: ".date("y-m-d H:i:s"); //输出当前的访问时间
?>
4.删除Cookie
当Cookie被创建后,如果没有设置它的失效时间,其Cookie文件会在关闭浏览器时被自动删除。如果要在关闭浏览器之前删除Cookie文件,方法有两种:一种是使用setcookie()函数删除,另一种是在浏览器中手动删除Cookie。其基本方法如下:
使用setcookie()函数删除Cookie:
将Cookie的过期时间设置为当前时间减1秒,代码如下:
setcookie("name", "", time()-1);
在浏览器中手动删除Cookie
在使用Cookie时,Cookie自动生成一个文本文件存储在IE浏览器的Cookies临时文件夹中。
如果Cookie不设定时间,就表示它的生命周期为浏览器会话的期间,只要关闭IE浏览器,Cookie就会自动消失。这种Cookie被称为会话Cookie,一般不保存在硬盘上,而是保存在内存中。 如果设置了过期时间,那么浏览器会把Cookie保存到硬盘中,再次打开IE浏览器时会依然有效,直到它的有效期超时。
5.Session管理
Session译为“会话”,其本义是指有始有终的一系列动作/消息,如打电话时从拿起电话拨号到挂断电话这一系列过程可以称为一个Session。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间。因此,Session实际上是一个特定的时间概念。
6.创建会话
在PHP中有两种方法可以创建会话。
bool session_start(void) ;
session_register()函数用来为会话登录一个变量来隐含地启动会话,但要求设置php.ini文件的选项,将register_globals指令设置为on,然后重新启动Apache服务器。
7.注册会话
启动会话,创建一个Session变量并赋予空值,代码如下:
<?php
session_start(); //启动Session
$_SESSION["admin"] = null; //声明一个名为admin的变量,并赋空值
?>
8.使用会话
判断存储用户名的Session会话变量是否为空,如果不为空,则将该会话变量赋给$myvalue,代码如下:
<?php
if ( !empty ( $_SESSION['session_name'])) //判断用于存储用户名的Session会话变量是否为空
$myvalue = $_SESSION['session_name'] ;//将会话变量赋给一个变量$myvalue
?>
9.删除会话
删除单个会话
注销$_SESSION['user']变量,可以使用unset()函数,代码如下
unset ( $_SESSION['user'] ) ;
删除多个会话
如果想要一次注销所有的会话变量,可以将一个空的数组赋值给$_SESSION,代码如下:
$_SESSION = array() ;
结束当前会话
如果整个会话已经结束,首先应该注销所有的会话变量,然后使用session_destroy()函数清除结束当前的会话,并清空会话中的所有资源,彻底销毁Session,代码如下:
session_destroy() ;