COOKIE操作
1、添加COOKIE数据
ü 描述:向客户端发送一个 HTTP cookie。
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
ü 参数:
þ $name,cookie的名称;
þ $value,cookie的值,会自动进行 URL 编码。接收时会进行 URL 解码。COOKIE值的类型只能是标量数据类型,不可是数组、对象、资源。
þ $expire,cookie的有效期;
þ $path,cookie的服务器路径;
þ $domain,cookie的域名;
þ $secure,规定是否通过安全的 HTTPS 连接来传输 cookie。
ü 返回:设置成功返回TRUE,失败返回FALSE。
2、读取COOKIE数据
ü 描述:获取cookie数据是通过超全局数组$_COOKIE来实现的。
ü 语法:value = $_COOKIE[key]
COOKIE设置
1、COOKIE过期有效性设置
(1)即时性COOKIE设置
ü 描述:默认cookie的有效期是关闭浏览器时,自动失效。该cookie称为临时cookie;
ü 语法:bool setcookie ( string $name , string $value [, int $expire = 0 ])
ü 参数:$expire可选,指定cookie保存的时间,默认为0,关闭浏览器失效;
(2)有效性COOKIE设置
ü 语法: bool setcookie ( string $name , string $value [, int $expire = 0 ])
ü 参数:$expire可选,指定cookie保存的时间,默认为0,关闭浏览器失效;
ü 说明:$expire为一个时间戳。一般用time()+N表示新的时间戳。在当前时间点,再加上N秒后,产生一个新的时间戳。
ü 提示:一旦指定了有效的过期时间,cookie失效跟关闭浏览器无关(持久cookie)。
2、COOKIE路径有效性
ü 描述:设置COOKIE只能在指定的目录及其子目录下有效
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path]]] )
ü 参数:$path默认为”/“,代表当前网站根目录,在当前目录及其所有子目录都可以使用。
说明:由于浏览器每次请求时,携带到服务器端很多的COOKIE数据,会导致请求数据变得庞大;将COOKIE划分到各个路径中,减少每个路径下COOKIE的数量
例如:京东保存在客户端的有1万个COOKIE数据,大小为100MB,每次请求都需要1个小时。这样一来,每次请求带1个万COOKIE,但是当前页码只使用2个COOKIE,造成带宽浪费。
解决方案是:请求页面需要什么COOKIE,就带什么COOKIE过去,有针对性,会节省宽带。
3、COOKIE域名有效性
ü 描述:给一个COOKIE指定访问的域名
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain]]]] )
ü 提示:默认情况下,cookie只能在当前域名下有效。
ü 域名划分:
þ 主域名:itcast.cn
þ 一级域名:www.itcast.cn
þ 二级域名:news.itcast.cn
þ 三级域名:php.news.itcast.cn
ü 说明:如果COOKIE域名有效性,设置为主域名,则在所有域名下都可以使用。如果设置为子域名,则只能在子域名下使用该COOKIE。
4、是否仅https安全连接才能发送cookie呢?
ü 描述:是否仅限https来发送COOKIE数据,默认情况下,为http协议发送;
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false]]]]] )
ü https:是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL 。
5、是否只能通过http协议来使用COOKIE呢?
ü 描述:客户端的COOKIE除了可以通过HTTP协议来使用外,还可以使用JS来使用COOKIE。
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
提示:除了COOKIE通过http发往服务器使用,JS也可以使用该COOKIE。
删除COOKIE数据
1、设置COOKIE有效性为过去的某一个时间
ü 描述:设置有效期为过去的某一个时间
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 ]] )
2、设置COOKIE的值为false或空字符串
3、清理浏览器缓存
COOKIE的总结
ü COOKIE存储在客户端,相对来说不太安全。
ü COOKIE存储的数据类型,只能是字符串。
ü COOKIE存储的数据容量,大约只能存储4KB数据。
ü 浏览器可以禁用缓存,也可以禁用COOKIE,则COOKIE功能就失效。
SESSION概述
开启SESSION会话功能
ü 描述:启动新会话或者重用现有会话 ;
ü 语法:bool session_start (void )
ü 提示:$_SESSION变量默认是不存在的,与$_POST、$_GET、$_FILES不一样。因此,必须先开启SESSION,才能使用$_SESSION变量;
ü 提示:每个需要SESSION数据的页面,都要开启SESSION功能;
ü 注意:SESSION功能,不能重复开启(同一个页面不能开2次);
ü 返回:成功开始会话返回 TRUE ,反之返回 FALSE;
提示:SESSION文件的保存位置 c:\windows\temp
SESSION操作
1、添加SESSION数据
ü 描述:对Session的管理(增删改查),都是通过超全局数组$_SESSION进行的;
ü 语法:$_SESSION[key] = value
ü 提示:一个网站不管添加多少个SESSION数据,最终在浏览器端只存储一个SESSION的ID值,该ID值是经过加密的,并且永不重复。Key只能是String类型的数据。
ü SESSION文件在服务器端的存储位置:c:\windows\temp
2、读取SESSION数据
ü 语法:$value = $_SESSION[key]
ü 提示:每次SESSION操作,都要先开SESSION功能;
3、删除SESSION数据
ü 使用 unset() 函数,删除一个SESSION数据;
4、销毁SESSION文件
描述:删除当前的SESSION文件,不影响其它的SESSION文件。
ü 语法:bool session_destroy ( void )
SESSION对应COOKIE的配置(php.ini)
1、SESSION对应COOKIE过期时间设置
修改php.ini配置项:session.cookie_lifetime
2、SESSION对应COOKIE有效路径设置
修改php.ini配置项:session.cookie_path
3、SESSION对应COOKIE域名有效性设置
修改php.ini配置项:session.cookie_domain
4、是否仅限https来发送SESSION对应的COOKIE数据
修改php.ini配置项:session.cookie_secure
5、是否仅限http来使用SESSION对应的COOKIE数据
修改php.ini配置项:session.cookie_httponly
SESSION垃圾回收机制
1、什么是SESSION的垃圾回收机制?
ü SESSION垃圾回收, 就是将过期的SESSION服务器文件删除的机制;
ü SESSION会自动删除那些过期的服务器端session数据区文件;
ü 修改php的配置文件php.ini。
2、垃圾回收的周期:session.gc_maxlifetime
3、垃圾回收的概率:session.gc_divisor
首先判断时间是否达到24分钟,如果时间达到24分钟,再看访问的人数够不够1000。如果人数够1000,则进行清理,如果人数没有达到1000,则不清理,要等第2个24分钟。