Cookie
Cookie
由于Http协议是无状态协议,当同一个用户请求一个页面后,再请求同一个网站的另一个页面时,http协议并不能告诉服务器两个请求是来自同一个用户,不能将两次访问联系到一起。
Cookie可以让Web服务器将一些网站登录用户的资料存放于客户端的电脑上。例如:当通过验证,成功登陆网站后,在同一个网站下第一个页面的PHP脚本,会把这个用户有关的信息设置到客户端电脑的Cookie中,当再次访问同一个网站中的其他脚本时,会自动携带Cookie中的数据一起访问,服务器中的每个脚本都可以接受Cookie中的数据,不需要每访问一个页面就重新输入一次登陆者的信息。
Cookie的建立
1. 向用户端电脑设置Cookie setcookie();
2. 在服务器端读取Cookie内容 $_COOKIE
3. 将多维数组应用于Cookie中 setcookie(“member[name]”,’liangjie’); setcookie(“member [email]”,’1853881164@qq.com’);
4.删除Cookie setcookie(“member”,‘ ’,time()-3600); //将时间设为超时
实验1
新建文件下,在其下面创建第一个.php文件,建立Cookie。代码如下:
<?php header('Content-type:text/html;charset=utf-8'); /* var_dump(setcookie('name','liangjie',time()+3600)); echo '<br />'; var_dump($_COOKIE); */ //向客户端电脑设置Cookie,有效时间为当前时间+3600s var_dump(setcookie("member[name]",'liangjie',time()+3600)); //打印结果,若返回true则设置成功 echo '<br />'; var_dump(setcookie("member[email]",'185@163.com',time()+3600));//打印结果,若返回ture则设置成功 ?>
在同文件夹下面创建第二个.php文件,验证Cookie。代码如下:
<?php header('Content-type:text/html;charset=utf-8'); var_dump($_COOKIE); ?>
在同文件夹下面创建第三个.php文件,删除Cookie。代码如下:
<?php //遍历删除 foreach($_COOKIE['member'] as $key => $val){ var_dump(setcookie("member[{$key}]",'',time()-3600)); }
注:实验前最好清空一下浏览器浏览记录
实验2
此实验说明同一个用户使用不同的浏览器访问同一个网站时,设置的Cookie值不同
新建文件下,在其下面创建第一个.php文件,建立Cookie。代码如下:
<?php header('Content-type:text/html;charset=utf-8'); //随机产生一个ID,并在此ID前随机产生一个数作为前缀(避免ID重复)交给Cookie $id = uniqid(rand(1000,9999).'_'); var_dump(setcookie('id',$id,time()+3600)); //打印结果,返回值为ture,设置成功 ?>
新建文件下,在其下面创建第二个.php文件,验证Cookie。代码如下:
<?php header('Content-type:text/html;charset=utf-8'); var_dump($_COOKIE); ?>
新建文件下,在其下面创建第三个.php文件,删除Cookie。代码如下:
<?php //遍历删除 foreach($_COOKIE['member'] as $key => $val){ var_dump(setcookie("member[{$key}]",'',time()-3600)); }