资源描述:
《传智播客php培训19》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
php进阶讲师:韩顺平hanshunping@tsinghua.org
1主讲韩顺平php进阶-内容介绍(一)会话技术1.1cookie1.2session(二)用户登录系统功能改进
2主讲韩顺平php进阶-会话什么是会话?会话可简单理解为:用户开一个浏览器,点击多个超链接,访问效劳器多个web资源,然后关闭浏览器,整个过程称之为一个会话。会话过程中要解决的一些问题?每个用户在使用浏览器与效劳器进行会话的过程中,不可防止各自会产生一些数据,效劳器要想方法为每个用户保存这些数据。例如:多个用户点击超链接通过一个servlet各自购置了一个商品,效劳器应该想方法把每一个用户购置的商品保存在各自的地方,以便于这些用户点结帐servlet时,结帐servlet可以得到用户各自购置的商品为用户结帐。提问:这些数据保存在request行不行?
3主讲韩顺平php进阶-保存会话数据的两种技术SessionCookie
4主讲韩顺平php进阶-保存会话数据技术cookie思考一个问题—抛砖引玉☞大家在访问某个网站的时候,是否能看到提示你上次登录网站的时间,而且要注意的是不同用户上次登录的时间肯定是不一样的,这是怎么实现的?
5主讲韩顺平php进阶-cookie思考一个问题—抛砖引玉☞大家在访问某个购物网站的时候,是否能看到提示你曾经浏览过的商品,同样也是不同用户浏览过的商品肯定不一样,这是怎么实现的?还有我们在登录某个网站的时候,往往都可以选择保存登录信息多久,不用重复输入登录信息,这个又是怎么实现的?
6主讲韩顺平php进阶-cookie解决之道—cookie技术Cookie(小甜饼)是客户端技术,效劳器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问效劳器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
7主讲韩顺平php进阶-cookie效劳器ABC什么是cookie效劳器在客户端保存用户的信息,比方登录名,密码等..就是cookie,这些信息就像是小甜饼一样,数据量并不大,效劳器端在需要的时候可以从客户端读取,保存在客户端的浏览器缓存目录下,可以通过右边的图来理解
8主讲韩顺平php进阶-cookiecookie可以用来做什么?1:保存上次登录时间等信息2:保存用户名、密码,在一定时间不用重新登录3:记录用户访问网站的喜好(比方有无背景音乐、网页的背景色是什么4:网站的个性化,比方定制网站的效劳,内容。
9主讲韩顺平php进阶-cookie名字String值Stringcookiecookie根本使用1:Cookie有点像一张表,分两列,一个是名字,一个是值,数据类型都是String2:如何创立一个Cookie(在效劳端创立的)boolsetcookie(stringname[,stringvalue[,intexpire[,stringpath[,stringdomain[,boolsecure]]]]])3:如何读取cookie(从客户端读到效劳器)$_COOKIE[‘cookie的名字’];4:如何删除一个cookie值要删除cookie需要确保它的失效期是在过去,才能触发浏览器的删除机制。案例演示cookie1.phpcookie2.phpcookie4.php
10主讲韩顺平php进阶-cookieapisetcookie函数参数一览表
11主讲韩顺平php进阶-cookie再理解浏览器效劳器php1php2Set-Cookie:name=顺平Set-Cookie:name=顺平name=顺平IE缓存区cookie:name=顺平cookie:name=顺平
12主讲韩顺平php进阶-cookie应用①显示用户上次访问时间cookie3.php
13主讲韩顺平php进阶-cookie应用我们在雇员管理系统中增加功能:(1)登录manageEmp.php页面时候,显示该用户登录的上一次时间(2)翻开登录页面的时候,自动填写该用户的用户名和密码【这个要求学员课堂练习】
14主讲韩顺平php进阶-cookie应用②显示用户上次浏览过的商品cookie5.php
15主讲韩顺平php进阶-cookie细节一个Cookie只能标识一种字符串信息,它至少含有一个标识该信息的名称〔NAME〕和设置值〔VALUE〕。一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。如果创立了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie〔即存储在浏览器的内存中〕,用户退出浏览器之后即被删除。假设希望浏览器将该cookie存储在磁盘上,那么需要使用expire,并给出一个以秒为单位的时间。要删除cookie需要确保它的失效期是在过去,才能触发浏览器的删除机制。cookie6.php
16主讲韩顺平php进阶-保存会话数据技术session思考两个问题—抛砖引玉☞大家都在网上购置过商品吧,比方淘宝网。张三和李四他们购置的商品不一样,他们的购物车中的显示的商品也不一样,这是怎么实现的?☞另外一个问题,不同的用户登录网站后,不管该用户浏览该网站的哪个页面,都可显示登录人的名字,同样可以随时去查看自己的购物车中的商品。
17主讲韩顺平php进阶-保存会话数据技术session解决之道—session技术Session是效劳器端技术,利用这个技术,效劳器在运行时可以为每一个用户的浏览器创立一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问效劳器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问效劳器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户效劳。
18主讲韩顺平php进阶-保存会话数据技术session效劳器ABCACBA:效劳器分配给A客户端的session对象B:效劳器分配给B客户端的session对象C:效劳器分配给C客户端的session对象当用户翻开浏览器,访问某个网站时操作session时,效劳器就会在效劳器的内存为该浏览器分配一个session,该session被这个浏览器独占。这个session也可看做是一个数组,session数据默认存在时间为1440s(即24min),从~\php.ini的[session]节可以配置
19主讲韩顺平php进阶-保存会话数据技术sessionSession可以用来做什么1:网上商城中的购物车2:保存登录用户的信息3:将某些数据放入到Session中,供同一用户的各个页面使用4:防止用户非法登录到某个页面…….
20主讲韩顺平php进阶-保存会话数据技术session如何理解Sessionsession数据名字String值Objectsession不是特别好理解,你可以把session看作是一容器类似数组,有两列。每一行就是session的一个数据。每个数据包含有两个局部,一个是该数据的名字(String),另外一个是它的值(Object)。
21主讲韩顺平php进阶-保存会话数据技术sessionSession根本使用key值String数据值session数据1:初始化sessionsession_start();2:向session添加数据$_SESSION[‘key值’]=$val;3:从session得到某个数据值$val=$_SESSION[‘key值’];4:删除session关联的数据//初始化sessionsession_start();//销毁和当前session关联的所有数据.session_destory();session1.phpsession2.phpsession3.php
22主讲韩顺平php进阶-保存会话数据技术session在WEB开发中,效劳器可以为每个用户浏览器创立一个超全局变量$_SESSION,注意:一个浏览器独占一个$_SESSION(默认情况下)。因此,在需要保存用户数据时,效劳器程序可以把用户数据写到用户浏览器独占的$_SESSION中,当用户使用浏览器访问其它php页面时,其它php页面可以从用户的$_SESSION中取出该用户的数据,为用户效劳。Session和Cookie的主要区别在于:Cookie是把用户的数据写给用户的浏览器。Session技术把用户的数据写到用户独占的$_SESSION中,存在效劳器的某个路径的文件中。$在使用$_SESSION前要保证session被初始化,具体的方法有:①先调用session_start();②配置php.inisession.auto_start=1(不推荐,会影响效率)
23主讲韩顺平php进阶-session原理深入理解疑问:效劳器是如何实现一个session为一个用户浏览器效劳的?浏览器B浏览器Aphp1start_session();php2start_session();SessionId=11SessionId=22Cookie:PHPSESSID=11cookie:phpsessid=11cookie:phpsessid=22cookie:phpsessid=22问题:如何实现多个IE浏览器共享同一session?(应用:关掉IE后,再开IE).实验
24主讲韩顺平php进阶-session的实际案例购物车实际案例—给出界面,然后实现为后面讲解禁用cookie后还能使用session的知识点.
25主讲韩顺平php进阶-session原理深入理解实验演示禁用Cookie后php共享数据导致的问题。解决方案:URL重写response.encodeRedirectURL(java.lang.String url)用于对sendRedirect方法后的url地址进行重写。response.encodeURL(java.lang.String url)用于对表单action和超链接的url地址进行重写附加:Session的失效,使用session_destory()php.ini文件配置session失效时间IE禁用Cookie后的session处理方案
26主讲韩顺平php进阶-session的实际应用防止用户非法登录到某个页面要求用户必须登录后,才能操作管理页面.
27主讲韩顺平php进阶-session的实际应用用户登录时验证输入的验证码是否正确(1)一次性验证码的主要目的就是为了限制人们利用工具软件来暴力猜测密码。(2)效劳器程序接收到表单数据后,首先判断用户是否填写了正确的验证码,只有该验证码与效劳器端保存的验证码匹配时,效劳器程序才开始正常的表单处理流程。
28主讲韩顺平php进阶-session的实际应用请在我们的雇员管理系统添加验证码功能
29主讲韩顺平php进阶-php.ini关于cookie和session配置说明php.ini中关于cookie和session配置说明(重点,难点)session.name=名字说明:Nameofthesession(usedascookiename)session.use_trans_sid=0说明:给每个url启用session名=sessionId,对平安有影响,不推荐开启session.save_path=“c:/mysession〞说明:session保存路径【下面三个是一组,用于控制session文件存在时间】session.gc_maxlifetime=1440说明:session默认最大生命周期session.gc_probability=1session.gc_divisor=1000这两个值根据网站规模大小合理设置
30主讲韩顺平php进阶-php.ini关于cookie和session配置说明php.ini中关于cookie和session配置说明(重点,难点)session.use_cookies=1说明:是否使用cookiesession.cookie_path=/说明:Thepathforwhichthecookieisvalid.删除时要对应.session.domain_name=说明:根据标准产生域名,自动生成,无需设置.session.cookie_lifetime=0说明:cookie保存时间.默认0,关闭浏览器就失效.
31主讲韩顺平php进阶-php.ini关于cookie和session配置说明php.ini中关于cookie和session配置说明(重点,难点)*自定义会话处理器session.save_handler=files[user|memcache]说明:session使用何种方式存取.Handlerusedtostore/retrievedata这个我们在工程中再说需求:为什么session文件打头是sess_*,我们能不能自己定义session文件名?我们能不能把session信息高效的保存到memcache中。。。,这里我们就需要对php技术对session处理的机制做更加深入的了解
32主讲韩顺平php进阶-cookievssession效劳器ABACBABcookiesession1:存在的位置cookie保存在客户端,session保存在效劳器端的文件系统/数据库/memcache2:平安性比较而言cookie的平安性比session要弱3:网络传输量cookie通过网络在客户端与效劳器端传输。而session保存在效劳器端,不需要传输。Cc
33主讲韩顺平php进阶-cookievssession01020cookie生命周期01020session生命周期4:生命周期(20分钟为例)cookie的生命周期是累计的,从创立时,就开始计时,20分钟后cookie生命周期结束,cookie就无效(2)session的生命周期是间隔的,从创立时,开始计时如在20分钟,没有访问过session,那么session信息无效,如果在20分钟内,比如第19分钟时,访问过session,那么,它的生命周期将重新开始计算.
34主讲韩顺平雇员管理系统功能改进■雇员管理系统网站(3.0)在这一讲的雇员管理系统中添加如下功能:version3.0新增加的功能:1:显示上一次用户登录时间2:防止用户非法登录到管理界面知识点:1.cookie技术2.session技术3.框架图分析程序的技巧
35