当我们在浏览网页时,访问每一个web页面都需要使用“HTTP协议”实现,但是HTTP协议是无状态协议,就是说HTTP协议没有一个内建的机制来维护两个事物之间的状态。当一个用户请求一个页面以后,在请求同一个网站上的另外一个页面时,HTTP协议并不能告诉我们两个请求是来自同一个用户,而不能将这两次访问联系到一起,那利用什么解决呢?利用Cookie和Session可以解决。
一、Cookie
Cookie是用来将网站的资料记录在客户端的技术,这种技术让web服务器能将一些资料,存放于客户端(用户的电脑)之中。
比如:当通过验证,成功登陆网站后,在网页的PHP脚本中,会把这个用户有关的信息,设置到客户端电脑的Cookie中,当再次访问同一个网站中的其他脚本时,就会自动携带Cookie中的数据一起访问,在服务器中的每个脚本中都可以接受Cookie中的数据,不需要每访问一个页面就重新输入一次登录者的信息。
步骤:
1、向客户端(用户的电脑)电脑中设置Cookie。
Setcookie();
2、在服务器端上读取Cookie的内容
$_COOKIE
3、将多维数组应用于Cookie中
Setcookie("member[name]",‘刘科彤‘);
Setcookie("member[email]",‘[email protected]‘);
4、删除Cookie
Setcookie("member",time()-1);
案例实现:
1、往服务端里面上传Cookie数据(demo/1.php)
<?php //往服务端里面传Cookie数据 header(‘Content-type:text/html;charset=utf-8‘); var_dump(setcookie(‘member[name]‘,‘刘科彤‘,time()+3600)); var_dump(setcookie(‘member[email]‘,‘[email protected]‘,time()+3600)); ?>
2、在浏览器客户端输出Cookie里的数据(demo/2.php)
<?php //在浏览器客户端输出Cookie里的数据 header(‘Content-type:text/html;charset=utf-8‘); var_dump($_COOKIE); ?>
3、删除name和email的Cookie数据(demo/3.php)
<?php var_dump(setcookie(‘member[name]‘,‘‘,time()-1000));//消除name的Cookie数据 var_dump(setcookie(‘member[email]‘,‘‘,time()-1000));//消除email的Cookie数据 ?>
4、用遍历数组一次性删除name和email的Cookie数据(demo/4.php)
<?php foreach ($_COOKIE[‘member‘] as $key=>$value){ var_dump(setcookie("member[{$key}]",‘‘,time()-1000)); } ?>
新函数:uniqid — 生成一个唯一ID
5、假如要在不同的浏览器上传和删除数据,可以用uniqid和rand来识别不同的浏览器
(具体看demo/test文档)