—高级软件人才实作培训专家!
php进阶
讲师:韩顺平
hanshunping@
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-内容介绍
(一) 会话技术
cookie
session
(二) 用户登录系统功能改进
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-会话
•什么是会话?
• 会话可简单理解为:用户开一个浏览器,点击多个超链接,访
问服务器多个web资源,然后关闭浏览器,整个过程称之为一个
会话。
•会话过程中要解决的一些问题?
• 每个用户在使用浏览器与服务器进行会话的过程中,不可避免
各自会产生一些数据,服务器要想办法为每个用户保存这些数据。
• 例如:多个用户点击超链接通过一个servlet各自购买了一个商
品,服务器应该想办法把每一个用户购买的商品保存在各自的地
方,以便于这些用户点结帐servlet时,结帐servlet可以得到用户
各自购买的商品为用户结帐。
• 提问:这些数据保存在request行不行?
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-保存会话数据的两种技术
Session
Cookie
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术cookie
•思考一个问题—抛砖引玉
☞大家在访问某个网站的时候,是否能看到提示你上次登录网站的
时间,而且要注意的是不同用户上次登录的时间肯定是不一样的,这
是怎么实现的?
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie
•思考一个问题—抛砖引玉
☞大家在访问某个购物网站的时候,是否能看到提示你曾经浏览过
的商品,同样也是不同用户浏览过的商品肯定不一样,这是怎么实现的
?
还有我们在登录某个网站的时候,往往
都可以选择保存登录信息多久,不用重
复输入登录信息,这个又是怎么实现的?
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie
• 解决之道—cookie技术
Cookie(小甜饼)是客户端技术,服务器把每个用户的数据以
cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问
服务器中的web资源时,就会带着各自的数据去。这样,web资源
处理的就是用户各自的数据了。
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie
服务器
A B C
什么是 cookie
服务器在客户端保存用户的信息,比如登
录名,密码等..就是cookie,
这些信息就像是小甜饼一样,数据量并不
大,服务器端在需要的时候可以从客户端
读取,保存在客户端的浏览器缓存目录下
,可以通过右边的图来理解
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie
cookie可以用来做什么?
1:保存上次登录时间等信息
2:保存用户名、密码,在一定时间不用
重新登录
3: 记录用户访问网站的喜好(比如有无背景
音乐、网页的背景色是什么
4: 网站的个性化,比如定制网站的服务,
内容。
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie
名字
String
值
String
cookie基本使用
1: Cookie 有点像一张表,分两列,一个是名字
,一个是值,数据类型都是String
2: 如何创建一个Cookie(在服务端创建的)
bool setcookie ( string name [, string value
[, int expire [, string path [, string domain
[, bool secure]]]]] )
3: 如何读取cookie(从客户端读到服务器)
$_COOKIE[‘cookie的名字’];
4: 如何删除一个cookie值
要删除 cookie 需要确保它的失效期是在过去,才能触
发浏览器的删除机制。
案例演示
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie api
setcookie 函数参数一览表
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie 再理解
浏览器 服务器
php1
php2
Set-Cookie: name=顺平Set-Cookie: name=顺平
name=顺平
IE缓存区
cookie: name=顺平 cookie: name=顺平
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie 应用
① 显示用户上次访问时间
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie 应用
我们在雇员管理系统中增加功能:
(1) 登录页面时候,显示该用户登录的上一
次时间
(2) 打开登录页面的时候,自动填写该用户的用户名和密码
【这个要求学员课堂练习】
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie 应用
② 显示用户上次浏览过的商品
—高级软件人才实作培训专家!
主讲 韩顺平php进阶-cookie 细节
一个Cookie只能标识一种字符串信息,它至少含有一个标识该
信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个
WEB浏览器也可以存储多个WEB站点提供的Cookie。
如果创建了一个cookie,并将他发送到浏览器,默认情况下它
是一个会话级别的cookie(即存储在浏览器的内存中),用户退
出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,
则需要使用expire,并给出一个以秒为单位的时间。要删除
cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机
制。
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术 session
• 思考两个问题—抛砖引玉
☞大家都在网上购买过商品吧,比如淘宝网。张三和李四他们
购买的商品不一样,他们的购物车中的显示的商品也不一样,这
是怎么实现的?
☞另外一个问题,不同的用户登录网站后,不管该用户浏览该网
站的哪个页面,都可显示登录人的名字,同样可以随时去查看
自己的购物车中的商品。
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术 session
• 解决之道—session技术
Session是服务器端技术,利用这个技术,服务器在运行时可以
为每一个用户的浏览器创建一个其独享的session对象,由于
session为用户浏览器独享,所以用户在访问服务器的web资源时,
可以把各自的数据放在各自的session中,当用户再去访问服务器
中的其它web资源时,其它web资源再从用户各自的session中取
出数据为用户服务。
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术 session
服务器
A B C
A C
B
A
B
C
当用户打开浏览器,访问某个网站时操作
session时,服务器就会在服务器的内存为
该浏览器分配一个session,该session被这
个浏览器独占。
这个session也可看做是一个数组,session
数据默认存在时间为1440s(即24min),从
~\ 的[session]节可以配置
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术 session
1:网上商城中的购物车
2:保存登录用户的信息
3:将某些数据放入到Session中,
供同一用户的各个页面使用
4 :防止用户非法登录到某个页
面
…….
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术 session
名字
String
值
Object
session不是特别好理解,你可以把
session 看作是一容器类似数组,
有两列。每一行就是session的一个数据。
每个数据包含有两个部分,一个是该
数据的名字(String),另外一个是它的
值(Object)。
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术 session
key值
String
数据值
1:初始化session
session_start();
2:向session添加数据
$_SESSION[‘key值’]=$val;
3: 从session得到某个数据值
$val=$_SESSION[‘key值’];
4: 删除session关联的数据
//初始化session
session_start();
//销毁和当前session关联的所有数据.
session_destory();
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 保存会话数据技术 session
在WEB开发中,服务器可以为每个用户浏览器创建一个超全局变量
$_SESSION ,注意:一个浏览器独占一个$_SESSION(默认情况下)。
因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏
览器独占的$_SESSION中,当用户使用浏览器访问其它php页面时,其
它php页面可以从用户的$_SESSION中取出该用户的数据,为用户服务。
Session和Cookie的主要区别在于:
lCookie是把用户的数据写给用户的浏览器。
lSession技术把用户的数据写到用户独占的$_SESSION中,存
在服务器的某个路径的文件中。
$在使用$_SESSION 前要保证session被初始化,具体的方法有:
① 先调用session_start();
② 配置 _start =1 (不推荐,会影响效率)
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- session 原理深入理解
• 疑问:服务器是如何实现一个session为一个用户浏览器服务的?
浏览器B
浏览器A
php1
start_session();
php2
start_session();
Session
Id=11
Session
Id=22
Cookie: PHPSESSID=11
cookie:phpsessid=11
cookie:phpsessid=22
cookie:phpsessid=22
问题:如何实现多个IE浏览器共享同一session?(应用:关掉IE后,再开IE)
.实验
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- session的实际案例
购物车实际案例—给出界面,然后实现为后面讲解禁用cookie后
还能使用session的知识点.
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- session 原理深入理解
实验演示禁用Cookie后php共享数据导致的问题。
解决方案:URL重写
lresponse. encodeRedirectURL( url)
l用于对sendRedirect方法后的url地址进行重写。
lresponse. encodeURL( url)
l用于对表单action和超链接的url地址进行重写
附加:
lSession的失效, 使用session_destory()
文件配置session失效时间
l IE禁用Cookie后的session处理方案
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- session 的实际应用
防止用户非法登录到某个页面
要求用户必须登录后,才能操作管理页面.
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- session 的实际应用
用户登录时验证输入的验证码是否正确
(1)一次性验证码的主要目的就是为了限制人们利用工具软件
来暴力猜测密码。
(2)服务器程序接收到表单数据后,首先判断用户是否填写了
正确的验证码,只有该验证码与服务器端保存的验证码匹配
时,服务器程序才开始正常的表单处理流程。
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- session 的实际应用
请在我们的雇员管理系统添加验证码功能
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 关于cookie和session配置说明
中关于cookie和session配置说明(重点,难点)
= 名字
说明:Name of the session (used as cookie name)
_trans_sid = 0
说明:给每个url启用 session名=sessionId ,对安全有影响,不推荐开启
_path =“c:/mysession”
说明: session保存路径
【下面三个是一组,用于控制session文件存在时间】
_maxlifetime = 1440
说明:session默认最大生命周期
_probability = 1
_divisor = 1000
这两个值根据网站规模
大小合理设置
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 关于cookie和session配置说明
中关于cookie和session配置说明(重点,难点)
_cookies =1
说明:是否使用cookie
_path = /
说明: The path for which the cookie is valid. 删除时要对应.
_name =
说明: 根据规范产生域名,自动生成,无需设置.
_lifetime= 0
说明: cookie保存时间.默认0,关闭浏览器就失效.
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- 关于cookie和session配置说明
中关于cookie和session配置说明(重点,难点)
* 自定义会话处理器
_handler = files [user|memcache]
说明: session 使用何种方式存取.
Handler used to store/retrieve data 这个我们在项目中再说
需求: 为什么session文件打头是sess_* ,我们能
不能自己定义session文件名?
我们能不能把session信息高效的保存到
memcache中。。。,这里我们就需要对php 技
术对session处理的机制做更加深入的了解
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- cookie vs session
服务器
A B
A CB
A B
1:存在的位置
cookie保存在客户端,session保存在服
务器端的文件系统/数据库/memcache
2: 安全性
比较而言 cookie的安全性比session要弱
3: 网络传输量
cookie通过网络在客户端与服务器端传输。
而session保存在服务器端,不需要传输。
C c
—高级软件人才实作培训专家!
主讲 韩顺平php进阶- cookie vs session
0 10 20
cookie生命周期
0 10 20
session生命周期
4: 生命周期(20分钟为例)
(1) cookie的生命周期是累计的,从创建时,
(2)就开始计时,20分钟后cookie生命周期结
(3)束,cookie就无效
(2) session的生命周期是间隔的,从创建时,
开始计时如在20分钟,没有访问过 session,
那么session信息无效,如果在20分钟内,比
如第19分钟时,访问过session,那么,它的生
命周期将重新开始计算.
—高级软件人才实作培训专家!
主讲 韩顺平雇员管理系统功能改进
■ 雇员管理系统网站()
在这一讲的雇员管理系统中添加如下功能:
新增加的功能:
1: 显示上一次用户登录时间
2: 防止用户非法登录到管理界面
知识点 :
技术
技术
3. 框架图分析程序的技巧
—高级软件人才实作培训专家!