Professional Documents
Culture Documents
php会话操作
php会话操作
一、会话概述
1、什么是会话?
简单的讲: 用户打开一个浏览器访问网站,点击多个超链接,
称之为一次会话。
会话---->谁跟谁会话?---->浏览器和服务器之间的会话!
2、什么是会话技术?
交互过程中一些数据进行持久化存储的技术,以实现连续的业务
逻辑。这就是会话技术!
通俗易懂: 会话技术就是将用户的数据以文件的形式进行持久
化存储。
3、会话周期
闭浏览器为止,这段时间称为会话周期。
4、会话技术分类
按照数据持久化存储的文件位置分为两种。
话技术。
会话技术。
5、总结:
会话---->浏览器和服务器会话---->会话产生数据 ---->
数据文件形式存储!
会话技术: 就是实现进行跨脚本数据共享的一种解决方案!
会话操作: 增 删 改 查 判
二、Cookie 会话技术
是 cookie 会话技术。
1. 当浏览器第一次当问 a.php 的时候, 服务器会向浏览器发送设置
cookie 的信息
件)的形式保存到指定的目录中。
3. 当浏览器再次(包括以后)请求其他.php 或者服务器其他的资源的
据。
1、发送 Cookie&获取 Cookie
1.1 setcookie()函数
setcookie() 发送 Cookie
参数:
设置 "/",Cookie 对整个域名对应的根目录及其
子目录有效
/foo 目录及其子目录有效
域名以及三级域名有效
域名以及三级域名有效
返回值:
1.2 获取 Cookie
超全局变量。
php10/setcookie.php
1.3 浏览器访问
浏览器第一次访问 php10/setcookie.php
浏览器再次访问 php10/setcookie.php
1.4 新建 get_cookie.php
php10/get_cookie.php
1.5 查看浏览器(chrome)中的 Cookie 信息
C:\Users\admin\AppData\Local\Google\Chrome\
User Data\Default\Cookies
注意: 不同浏览器 Cookie 无法共享,Chrome 浏览器的 cookie
火狐浏览器访问不了,火狐的浏览器 ie 访问不了。总之哪个浏览器
访问哪个浏览器的 cookie。
2、Cookie 保存的数据类型
源、对象,都不可以!!!
2.1 字符串、整型、浮点型
php10/cookie_str.php
使用 Chrome 浏览器开发者工具查看 浏览器 请求服务器附带的
Cookie 信息。
2.2 不能保存 Bool 类型
php10/cookie_bool.php
2.3 不能保存 NULL 类型
php10/cookie_null.php
2.4 不能保存数组类型
保存数组类型数据。直接报错。
php10/cookie_array.php
2.5 总结: cookie 只能保存字符串
3、Cookie 支持下标存储数据
php10/cookie_key.php
php10/cookie_get.php
4、修改 Cookie 的值
setcookie('name', $newvalue)
5、删除 Cookie
php10/cookie_delete.php
6、Cookie 过期时间
Cookie 可以分为两类:
时 cookie 基础上添加过期时间。
6.1 临时 Cookie
setcookie ( string $name , string $value) 不设置第三
个参数过期时间就是临时 cookie!
php10/temp_cookie.php
php10/get_temp_cookie.php
关闭浏览器,再打开浏览器,直接访问
get_temp_cookie.php。Cookie 无效了!
6.2 有过期时间 Cookie
式: time()+过期时间(时间戳 int 型)
php10/cookie_expire.php
7、Cookie 的有效时间
参数$expire:
Cookie 的有效期(过期时间),时间格式: time()+时间戳
(int 型),单位: 秒
php10/cookie_time.php
7.2 设置 cookie 有效时间为过去时间点,表示删除一个
cookie
8、Cookie 的有效目录
第四个参数:
设置 "/",Cookie 对整个域名对应的根目录及其子目
录有效
目录及其子目录有效
默认值是设置 Cookie 的脚本所在当前目录有效。
8.1 默认有效目录
及子目录下起有效。
php10/cookie_path.php
8.1 设置有效为根目录
php10/cookie_path.php
9、Cookie 的有效域名
扩展域名知识:
域名---->www.baidu.com---->访问网站
.....
baidu.com 顶级域名
www.baidu.com 一级域名
new.baidu.com 一级域名
mp.weixin.qq.com 二级域名
域名从地区上分分为:
国别域名:从域名上可以区分国家
国际域名:从域名上不能区分那个国家
.net: 表示与网络有关的公司
.org: 表示非盈利组织
....
第五个参数:
括它的全部子域名)
以及三级域名有效
以及三级域名有效
php10/cookie_domin.php
10、Cookie 是否安全传输(了解)
第六个参数:
客户端,默认值 false。
通过 http。
https 传输。
开头
php10/cookie_secure.php
11、Cookie 是否安全访问(了解)
Cookie 是以文件的形式包数据存储在浏览器指定目录。
第七个参数:
认 false。
的脚本语言访问。
设置 $httponly 为 false
php10/cookie_httponly.php
php10/cookie_httponly_get.php
设置 $httponly 为 true
12、Cookie 的特点
1. cookie 保存在客户端,相对安全性不高。
cookie 的功能就用不了。
5. cookie 只支持字符串类型
6. 不同的浏览器存储不同的 cookie
13、Cookie 应用
1. 网站中常用来记住登录信息(用户名和密码),或者叫保存
登录状态,或者叫下次自动登录。
2. 浏览过的商品或者叫你的足迹
3. 总之 cookie 用来跟踪客户端状态
三、Session 会话技术
术。
1. 浏览器不可以随意的访问 session 数据,浏览器需要一个 身份验
session 中数据。
1、开启 session
自 动 开 启 session , 需 要 修 改 php.ini 中 的
session.auto_start = 1
在运行的时候都会开启 session,会消耗系统资源。也就是
需要的时候,可以使用系统函数启动 session。
1.2 开启 session 函数
session_start() 开启 session,在需要的脚本中使用次函
数开启 session!
php10/session_start.php
1.3 Session 文件
中的数据。
Session 中的数据。
$_SESSION['name'] = value;
php10/session_save.php
查看 session 文件中保存的数据
php10/session_get.php
可以视为一个 关联数组。
php10/session_get_all.php
2.3 修改 Session 中的数据
$_SESSION['name'] = new_value;
3、删除 Session
unset($_SESSION[‘name’]) 或 者
$_SESSION[‘name’] = null;
3.3 销毁 Session 会话
session_destroy() 调用此函数会销毁 session 会话--->
删除 session 文件。
4、session 运行机制
第一步:
第二步:
当客户端浏览器第一次访问,服务器会给客户端浏览器 Session
第三步:
Session 文件。
第四步:
的数据操作。操作。
session_id 是服务器识别客户端用户身份的唯一信息。所以每个客
户端用户只能访问自己的会话,不能访问别人的会话。
php10/session_id.php
4.2 获取会话的名称
Cookie 中保存的名称。
php10/session_name.php
5、php.ini 中关于 session 的配置项
中的数据存储方式,默认: 文件形式
件保存路径
4、session.gc_maxlifetime = 1440 Session 会 话 过
圾文件。
务器之间传递的。
一些配置。
2、session.use_only_cookies = 1 是 否 强 制 Session
存在 cookie 中名字
4、session.cookie_lifetime = 0 设 置 session_id 在
5、session.cookie_path = / 设 置 保 存 session_id
6、session.cookie_domain = 设 置 保 存 session_id
的 cookie 有效域名
7、session.cookie_httponly = 设置保存 session_id 的
session.cookie_lefttime = 0
设置此配置想值为 0,会导致关闭浏览器,存储
时候。
php10/session_cookie_lefttime.php
第一次访问:
关闭浏览器。然后进行第二次访问,并且获取 Session 中数据。
解决方案:
session.cookie_lifetime 配置项目设置的时间和
session.gc_maxlifetime 一致!!
注意重启 apache。
件。
的文件视为垃圾文件,那么垃圾文件怎么删除呢?
Session 会 话 过 期 , 失 效 的 文 件 不 会 立 刻 删 除 , 是 通 过
Session 的垃圾回收机制删除失效文件。
当开启一个 Session 会话时:
和 session.gc_divisor 两个配置项的值,来决定是否启动一
个 GC(Garbage Collector)。
默认情况下:
session.gc_probability = 1
session.gc_divisor =1000
也 就 是 说 有 千 分 之 一 概 率 可 能 性 会 启 动 GC 清 除 过 期 的
session 会话文件。
1、相同点
端技术
2. 都有会话的生存周期
3. 都是把数据以文件的形式保存,实现数据跨脚本共享
2、区别
cookie ses
文件存储位置 客户端 服务
保存数据大小 4K 没有
数据安全性 低 高
3、联系
1、客户端浏览器是可以禁用 cookie 的
1、客户端浏览器不会把数据存储在 Cookie 中
2、浏览在发送请求的不会附带 Cookie 数据
IE 浏览器禁用 Cookie
禁用 Cookie。
session.use_trans_sid = 1 表示运行通过其他方式传输
session_id。
3.2 通过 ini_set()函数动态修改
php10/session_url.php
方式传递 session_id。
php10/session_url.php
php10/data.php
3.4 表单传递 session_id
如果是表单,则在表单中自动添加一个隐藏域用来传递
session_id。
php10/session_form.php