cookie
Cookie指的是一种在浏览器端存储数据并以此来跟踪和识别用户的机制
1,cookie的特性
- 存储在客户端
- cookie是一个文件
- 浏览器限制cookie的大小(4k)和数量
- cookie在http中是明文传输,安全性不高
- cookie被附加在http消息中无形中增加了数据流量
2、cookie的创建
bool setcookie (
string $name , // Cookie的名(必选)
string $value = "" , // Cookie的值(可选)
int $expire = 0 , // Cookie的有效期(可选)
string $path = "" , // Cookie在服务器端的路径(可选)
string $domain = "" , // Cookie的有效域名(可选)
bool $secure = false , // 指定是否通过安全的HTTPS连接来传输(可选)
bool $httponly = false // 指定Cookie只能通过HTTP协议访问(可选)
)
3、Cookie在浏览器和服务器之间的传输过程
4、删除Cookie的两种方式:
Cookie创建时未设置有效时间,则Cookie文件会在关闭浏览器时自动被删除
利用setcookie()函数设置过期时间
setcookie('data', '', time() - 1); // 立即过期(相当于删除COOKIE)
5、Cookie路径与域名
Cookie在用户的计算机中是以文件形式保存的,浏览器通常会提供Cookie管理程序
以Chrome浏览器为例,执行
【设置】-【高级设置】-【隐私设置】-【内容设置】-【所有Cookie和网站数据】
可以找到Cookie的管理程序。
session
Session指的是将信息存放在服务器端的会话技术
1、创建session
在创建Session文件时,每一个Session都具有一个唯一的会话ID,用于标识不同的用户,且会话ID会分别保存在客户端和服务器端两个位置。
客户端通过Cookie保存,服务器端则以文件的形式保存到php.ini指定的Session目录中,对于Windows系统,默认情况下保存到“C:\Windows\Temp”目录中。
2、session的使用
(1)启动Session
在使用Session之前,需要先通过session_start()函数启动Session。该函数的返回值是布尔类型,如果Session启动成功,返回true,否则返回false。
(2)查看SessionID与Session文件
浏览器访问开启Session的文件,可在开发者工具中查看Cookie中保存的会话ID。
Cookie名称“PHPSESSID”是php.ini中配置项session.name的默认值。
在服务器中,打开Session文件默认的保存目录“C:\Windows\Temp”。
服务器保存了文件名为“sess_会话ID”的Session文件,该文件的会话ID与浏览器Cookie中显示的会话ID一致,表示这个文件只允许拥有会话ID的用户访问。
(3)Session的使用
在完成Session的启动后,接下来Session的使用与Cookie的用法类似,可以通过超全局变量$_SESSION添加、读取或修改Session中的数据。
(4)Session的配置
session.name ——指定Cookie的名字,只能由字母数字组成,默认为PHPSESSID
session.save_path——读取或设置当前会话文件的保存路径,默认为“C:\Windows\Temp”
session.auto_start ——指定是否在请求开始时自动启动一个会话,默认为0(不启动)
session.cookie_lifetime ——以秒数指定发送到浏览器的Cookie生命周期,默认为0(直到关闭浏览器)
session.cookie_path ——指定要设定会话Cookie的路径,默认为“/”
session.cookie_domain ——指定要设定会话Cookie的域名,默认为无
session.cookie_secure—— 指定是否仅通过安全连接发送Cookie,默认为off
session.cookie_httponly ——指定是否仅通过HTTP访问Cookie,默认为off
3、session机制
interface SessionHandlerInterface
{
public function close();
public function destroy(string $session_id);
public function gc(int $maxlifetime);
public function open(string $save_path, string $session_name);
public function read(string $session_id);
public function write(string $session_id, string $session_data);
}