cookie管理
认识cookie
cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
设置cookie
使用函数setcookie,PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。
函数:
setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false]]]]] )
参数:
name: cookie的名称,即$_COOKIE这个全局数组的键值
value: cookie变量的值,参数为空,Cookie的值为空。Cookie不能保存布尔值,用0表示false,1表示true。
expire: 有效期结束的时间,以秒为单位。
path: 有效目录,默认为“/”,即整个域名下有效。如果有需要,可以设置仅在某目录下有效。
domain: 有效域名,顶级域唯一,默认在本域名下。
secure: 是否对Cookie进行加密传输,默认为false.如果值为true,则cookie只能在https连接上有效,如果为默认值false,则http和https都可以。
举个栗子 :
<?php
$value = 'I am a girl';
setcookie("TestCookie", $value); /* 简单cookie设置 */
setcookie("TestCookie", $value, time()+3600); /* 有效期1个小时 */
?>
读取cookie
直接用php内置超级全局变量 $_COOKIE就可以读取浏览器端的cookie.
上面例子中设置了cookie"TestCookie",现在我们来读取:
print $_COOKIE['TestCookie'];
删除cookie
Cookie没有显示的删除,如果要删除Cookie,应该将Cookie的expire设置成过期的时间,如一个小时前、1970年,这回自动触发浏览器的删除机制,或者把值设置为空。例如:
setcookie("name","",time()-1);
session管理
认识session
session又被称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的网页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
使用session
Session在PHP中使用需要先开启session,因此第一步是开启session,函数是session_start()。在开启session的同时,浏览器会自动生成一个session_id。
(1)添加Session
$_SESSION['session键值'] = "session值";
(2)修改session
$_SESSION['session键值'] = "session新值";
(3)查看session值
// 查看全部session
var_dump($_SESSION);
// 单独查看键值为test的Session值
var_dump($_SESSION['test']);
(4)删除session
// 删除session值,但保留数据类型
$_session['session键值'] = array();
// 删除cookie中的session_id
$session_id = session_name();
setCookie($session_id,"",time()-1);
// 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件也不释放对应的session_id
session_unset();
// 删除当前用户对应的session文件以及释放session_id,但内存中的$_SESSION变量内容依然保留
session_destroy();
cookie 和session区别
Cookie和Session的区别:
(1)存储位置:Cookie存储在客户端浏览器中,相对不安全;Session内容所在文件存储在服务器中,一般在根目录下的tmp文件夹中,相对更安全。
(2)数量和大小限制:Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在20个以内,每个cookie值的大小控制在4kb以内。session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。
(3)内容区别:cookie保存的内容是字符串,而服务器中的session保存的数据是对象。
(4)路径区别:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
网友评论