上一篇: php超全局变量
下一篇: php与session技术
在web应用中,cookie类似于会员卡,但用户浏览访问web服务器是,服务器会给用户发送一些信息,这些信息都会保存在cookie中。这样但该浏览器再次访问服务器时,都会请求头中将cookie发送给服务器,方便服务器对浏览器做出正确的响应
服务器想客户端发送cookie时,会在PHP响应头中增加Set-Cookie响应头字段。Set-Cookie头字段中设置的cookie遵循一定的语法格式
Set-Cookie: City=shanghai; Path=/;
city表示cookie的名称,shanghai表示cookie的值,path表示cookie的属性。需要注意的是cookie必须以键值对的形式存在,其属性可以有多个,但这些属性之间必须用分号(;)和空格分隔
cookie在浏览器和服务器之间的传输过程
但用户第一次访问服务器时,服务器会在响应信息中添加Set-Cookie头字段,经信息一cookie的形式发送给浏览器,一但用户接受了服务器发送cookie信息,就会保存到浏览器的缓冲区中,这样,当浏览器后续访问服务器时,就会将信息以cookie的形式发送给服务器,从而使服务器分辨出当前请求是由那个用户发出的。
在使用cookie之前,首先需要创建cookie,在php中通过setcookie()函数创建cookie,其声明格式如下
bool setcookie(string $name[, string $value [, int $expire=0 [, srting $path [, string $domain [, bool $secure]]]]])
参数$name是必须的,其他的参数都是可选的。其中,$value表示cookie的值;$expire表示cookie的有效期;$path表示cookie在服务器端的有效路径;$domain表示cookie的有效域名; $secure用于指定cookie是否通过安全的https链接来传输
案例:使用setcookie()函数来创建cookie
<?php
//创建2个cookie,并设置cookie的有效期为1小时
setcookie("city","火星城",time() +60*60*1);
setcookie("district","火星区",time() +60*60*1);
echo "cookie创建成功";
?>
运行结果
注意
1.用于cookie是http请求信息头的一部分,因此setcookie()函数必须在其它信息被输出到浏览器前调用,否则会导致程序出错
2.一个浏览器或一个域名下最多可以春风cookie的数量以及每个cookie的大小都与浏览器的版本相关
当用户通过浏览器访问服务器时,服务器会给用户发型一些信息,这些信息很多都会被保存在coolie中,要想获取cookie的xinxi,可以使用超全局数组$_COOKIE[]来读取,具体示例如下
$key=$COOKIE['key']
$val表示一个变量,由于存储从cookie中获取的数据,key是一个字符串。
案例
<?php
$city=$_COOKIE['city']; //读取$_COOKIE[]中的信息
$district=$_COOKIE['district'];
echo "city:".$city."<br>";
echo "district:".$district."<br>";
?>
运行结果
当cookie创建后,如果没有设置它的有效期,其cookie文件会在关闭浏览器时自动被删除,但是,如果希望在关闭浏览器前删除cookie文件,则可以使用setcookie()函数实现,与使用setcookie()函数创建cookie不同,删除cookie时只需要将setcookie()函数中的参数$value设置为空,参数设置为小于系统当前时间即可
案例
<?php
//删除名为city的cookie
setcookie("city","",time()-60*60*1);
echo "city的cookie被删除";
?>
运行结果
创建一个名为cookie.php的文件
<?php
header('content-type:text/html;charset=utf-8');
//设置当前登陆时间到cookie中,有效期为1小时
setcookie("LoginTime",time()+60*60*1);
//判断cookie是否存在
if(isset($_COOKIE['LoginTime'])){
echo "你的上次访问时间是".date('H:i:s',$_COOKIE['LoginTime']);
}else {
echo "你是首次访问本站";
}
?>
使用stecookie()函数创建一个名为LoginTime的cookie,然后通过if语句判断该cookie是否存在,如果存在,说明不是第一次访问,提示上次访问的时间,否则,提示您是首次访问本站
第一次访问
第二次访问
上一篇: php超全局变量
下一篇: php与session技术
*声明:内容来源于网络收集和整理,版权归原著所有,如来源信息有误或侵犯权益,请联系站长作修改和删除处理。