cookie和session均可以暂时保存在多个页面中使用的变量,可是它们有本质的差异。php
cookie存放在客户端浏览器中,session保存在服务器上。它们之间的联系是session ID通常保存在cookie中。html
cookie工做原理浏览器
当客户访问某个网站时,在PHP中可使用setcookie函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在c:Documents and Settings用户名\Cookies服务器
目录下。cookie是HTTP标头的一部分,所以setcookie函数必须在任何内容送到浏览器以前调用。这种限制与header()函数同样。当客户再次访问该网站时,浏览器会cookie
自动把c:Documents and Settings用户名\Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。session
经过$_COOKIE['xxx']读取客户端发来的cookie。dom
建立 cookie函数
经过 setcookie() 函数来建立一个 cookie ,成功返回 TRUE ,不然返回 FALSE 。网站
语法:加密
bool setcookie( string name [, string value [, int expire [, string path [, string domain ]]]] )
参数说明:
name cookie 名称
value 可选,cookie 值
expire 可选,过时时间,时间戳格式
path 可选,服务器端有效路径,/ 表示整个域名有效,默认为当前设置 cookie 时页面的路径
domain 可选,该 cookie 有效的域名
<?php
setcookie("username", "nostop", time()+3600); //设置了一个名称为 username 的cookie,其值为 xiaoli ,并在1小时候后过时。若是时间也被省略,cookie 将会在会话结束后(通常是浏览器关闭)失效。
?>
cookie 会以必定格式被存储在用户计算机特定位置。
<?php
setcookie("username", "nostop", time()+3600, "/", ".example.com"); //在example.com 域名的 / 路径下该 cookie 都有效(即全站有效)。
?>
读取 cookie
PHP 内置了 $_COOKIE 变量以访问设置的 cookie 值。
例子:
<?php
echo $_COOKIE["username"]; //nostop
?>
销毁 cookie
能够经过设置 cookie 过时时间为之前的时间点来销毁一个 cookie :
<?php
setcookie("username", "", time()-3600);
?>
cookie注意事项
一、SetCookie()以前不能有任何html输出,就是空格,空白行都不行。
二、SetCookie()后,你在当前页调用echo $_COOKIE["name"]不会有输出。必须刷新或到下一个页面在过时以前才能够看到Cookie值。
三、因为 cookie 信息存储于用户的计算机中,那么就有可能伪造或修改 cookie 从而形成 cookie 欺骗,通常能够对 cookie 的值进行加密来预防欺骗。读取 cookie 的时候,对 cookie 解密便可。
四、Cookie是保存在客户端的,用户禁用了Cookie,你的Cookie天然也就没做用啦!
<?php
setcookie('username','nostop',time()+3600); //建立cookie
if(isset($_COOKIE["username"])){ //使用isset()函数检测cookie变量是否已经被设置
echo "您好!".$_COOKIE["username"]; //您好!nostop 读取cookie
}else{
echo "请登录";
}
?>