11(Cookie和Session)-爱代码爱编程
目录
修改session保存位置(session.save_path):
Cookie:
Cookie简介:
Cookie是客户的数据,数据是由服务器生成的,传回并保存在客户端(本地浏览器)上,下次请求时,会将Cookie数据发往服务器,服务器就可以使用该Cookie的数据了,因为Cookie是保存在客户端的,因此不太安全,而且Cookie的保存数量是有限制的,常用在例如:网站自动登录、记录用户浏览爱好、购物车等。
Cookie的工作原理:
设置Cookie:
描述:发送一个COOKIE到客户端
语法:bool setcookie(string $name[,string $value[,int $expire=0[,string $path]]]);
参数:
$name:Cookie的名称;
$value:Cookie的值;
$expire:Cookie的有效期,默认是0,表示浏览器关闭cookie就失效了;
$path:Cookie的有效路径;
Cookie的名称和值的类型:
COOKIE的名称和值一般都是是字符串,不能是其他类型!
读取Cookie:
Cookie的设置:
Cookie的有效时间:
通过设置setcookie()的第三个参数。
Cookie的有效路径:
有时候一个存储Cookie的数据量还是很大的,一个普通的门户网站的Cookie数据大约为1GB,每次请求该网站的任何页面,都要把1GB的Cookie数据带过去,这样效率太低。为了提高效率我们将不同的Cookie设置到不同的目录。当访问指定目录时,只携带指定目录的Cookie数据。
通过设置setcookie()的第四个参数来实现。
说明:
默认是网站的根目录“/”,即在本网站的任何子目录都可以访问该Cookie,例如:Setcookie(“uname”,”lyg”,0,”/”);表示该Cookie数据可以在任何目录使用。而Setcookie(“uname”,”xx”,0,”/etl”);//该Cookie数据只可以在etl目录下使用。
删除Cookie:
方式一,设置有效时间为过去时间:
方式二,将COOKIE的值设置为false:
注意的是false不要带引号。
方式三,将COOKIE的值设置为空字符串:
方式四,不设置COOKIE的值:
方式五,清除浏览器缓存:
Session:
Session简介(与Cookie对比):
1.Cookie将数据保存在客户端,而Session是保存在服务器上;
2.Cookie保存的数据类型只能是字符串,而Session可以保存除了资源值之外的任何数据类型;
3.Cookie保存的数据相对较小,Session可以保存很大的数据;
4.Session是基于Cookie技术的,没有Cookie就没有Session;
5.Session在服务器上是以文件的形式存储的;
6.Session是将Session的ID存储在Cookie中,而Session数据保存在服务器上,每次请求时,只需要发送Session的ID,通过Session的ID将服务器端保存的用户数据调出来。
开启SESSION:
描述:开启一个新的SESSION会话,或者重用一个SESSION会话。
语法:bool session_start();
说明:开启Session,就是创建一个Session的ID,会自动生成在Cookie中,该ID是一个唯一随机值。
注意:
哪个页面需要用到Session的ID,那个页面就必须要开启Session,一个页面只能开启一次,不能开启第二次,同一个网站,对于一个用户来说,只有一个Session的ID。
添加Session数据:
开启Session之后,系统就会自动生成$_SESSION预定义变量,添加Session的数据实际上只需要给该变量数组赋值即可。
语法:$_SESSION[name] = value;
设置Session在服务器中的存储位置:
通过php.ini可以设置:
session.save_path=’…’
读取session数据:
删除session数据:
方式一,使用unset()来删除单个session数据:
unset($_SESSION[‘username’]);
方式二,将一个空的数组,赋值给$_SESSION变量:
$_SESSION = array();
销毁当前Session文件:
正常退出一个应用会删除当前的Session文件,例如点击“退出按钮”而不是直接关闭网页,这样可以减少系统垃圾。注意的是只会删除该ID下的Session文件,不会删除别的用户的Session文件。
描述:删除当前用户的Session文件
语法:bool session_destroy();
Session设置:修改php.ini文件:
修改session保存位置(session.save_path):
修改session ID名称(session.name):