一、会话技术的概念
1、会话技术
是一种维护同一个浏览器与服务器之间多次请求数据状态的技术,它可以很容易地实现对用户登录的支持,记录该用户的行为,并根据授权级别和个人喜好显示相应的内容。
2、PHP中Cookie和Session是目前最常用的两种会话技术
Cookie指的是一种在浏览器端存储数据并以此来跟踪和识别用户的机制
Session指的是将信息存放在服务器端的会话技术
*
*二、cookie技术
1、cookie简介**
在Web应用程序中,Cookie的功能类似与会员卡。
它是网站为了辨别用户身份而存储在用户本地终端上的数据。
当用户通过浏览器访问Web服务器时,服务器会给客户发送一些信息,这些信息都保存在Cookie中。
当该浏览器再次访问服务器时,会在请求头中同时将Cookie发送给服务器,这样,服务器就可以对浏览器做出正确的响应。
2、Cookie在浏览器和服务器之间的传输过程
尽管Cookie实现了服务器与浏览器的信息交互,但也存在一些缺点,具体如下:
Cookie被附加在HTTP消息中,无形中增加了数据流量。
Cookie在HTTP消息中是明文传输的,所以安全性不高,容易被窃取。
Cookie存储于浏览器,可以被篡改,服务器接收后必须先验证数据的合法性。
浏览器限制Cookie的数量和大小(通常限制为50个,每个不超过4KB),对于复杂的存储需求来说是不够用的。
3、创建Cookie
在PHP中,使用setcookie()函数可以创建或修改Cookie,其声明方式如下所示:
省略第3个参数时,Cookie仅在本次会话有效,用户关闭浏览器时会话就会结束。
4、获取Cookie
在PHP中,任何从客户端发送的Cookie数据都会被自动存入到COOKIE超全局数组变量中。通过_COOKIE超全局数组变量中。通过COOKIE超全局数组变量中。通过_COOKIE数组可以获取Cookie数据。
5、如何在浏览器端查看Cookie?
按住F12键,打开Chrome浏览器的开发者工具,切换到【Network】-【Cookie】
6、删除Cookie的两种方式
Cookie创建时未设置有效时间,则Cookie文件会在关闭浏览器时自动被删除
利用setcookie()函数设置过期时间
与使用setcookie()函数创建Cookie不同,删除Cookie时只需将setcookie()函数中的参数value设置为空,参数value设置为空,参数value设置为空,参数expire设置为小于系统的当前时间即可。
三、session技术
1、session简介
Session在网络应用中称为“会话”,在PHP 中用于保存用户连续访问Web应用时的相关数据,有助于创建高度定制化的程序、增加站点的吸引力。
Session是一种服务器端的技术,它的生命周期从用户访问页面开始,直到断开与网站的连接时结束。
当PHP启动Session时,Web服务器在运行时会为每个用户的浏览器创建一个供其独享的Session文件。
2、session传输过程
在创建Session文件时,每一个Session都具有一个唯一的会话ID,用于标识不同的用户,且会话ID会分别保存在客户端和服务器端两个位置。
客户端通过Cookie保存,服务器端则以文件的形式保存到php.ini指定的Session目录中,对于Windows系统,默认情况下保存到“C:\Windows\Temp”目录中。
3、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的配置
php.ini中与Session相关的配置
从PHP 7.0版本开始,可以在程序中通过session_start()函数的参数对Session进行配置,用于覆盖php.ini中对应的Session配置指令,示例代码如下。
上述代码表示将“session.name”配置项的值修改为“MySESSID”。