php核心课程进阶笔记图解_第1页
php核心课程进阶笔记图解_第2页
php核心课程进阶笔记图解_第3页
php核心课程进阶笔记图解_第4页
php核心课程进阶笔记图解_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、思考问题?我们在浏览网站,去购物的时候,张三和李四,可以购买不同的商品,并且在查看购物车时候,可以看到各自购买的商品?思路1: 数据库 2. cookie 3 -?当你登陆某个网站,你可以在任何一个网页,查看登陆的名字?思路数据库cookie问题: 安全性/ 在网络传数据(带宽的问题)解决之道-session.思考的问题?用户无需登陆,就可以访问到我们的管理页面,并且可以对用户进行curd操作.解决之道-sessionSession的初步介绍Session是服务器端技术注意:一个会话对应一个Session文件原理示意图:session的基本用法(crud) 增删改查.如何保存session 数

2、据代码 :?phpecho *演示如何保持session数据*;/1.初始化sessionsession_start();/2.保存数据$_SESSIONname=shunping;/session文件中可以保存dobule , integer, bool, array, object/保存inter bool$_SESSIONage=100;$_SESSIONisBoy=true;/保存数据$arr1=array(北京,小明,hello);$_SESSIONarr1=$arr1;/保存一个对象到session文件class Dogprivate $name;private $age;priv

3、ate $intro;function _construct($name,$age,$intro)$this-name=$name;$this-age=$age;$this-intro=$intro;$dog1=new Dog(大狗,5,很好的一只狗);$_SESSIONdog1=$dog1;echo 保存ok;?对代码说明:* 保存的数据格式:name|s:8:shunping;age|i:100;isBoy|b:1;arr1|a:3:i:0;s:6:北京;i:1;s:6:小明;i:2;s:5:hello;dog1|O:3:Dog:3:s:9:name 就是 keys: 表示数据类型8: 数

4、据大小* 我们的session中可以保存的数据类型是string, integer,double , bool array, object.如何获取session的数据代码?phpecho 获取session数据;require_once Dog.class.php;session_start();/获取session/1.把所有的session获取echo ;print_r($_SESSION);echo ;/2.通过key来指定获取某个值echo 名字是:.$_SESSIONname;$arr1=$_SESSIONarr1;echo 数组的数据是:;foreach($arr1 as $ke

5、y=$val)echo -$val;/3.取出对象/保存一个对象到session文件/类的定义重新引入到该文件,我们必须 把它放在session_start()前$xiaogou=$_SESSIONdog1;echo 小狗的名字:.$xiaogou-getName();?小结:要使用session,都需要初始化 sesssion_start();session文件中可以放入多个 keyval对 , 注意 key不能重复,val可以是基本数据类型,和array,对象.如果我们要取出对象,则需要实现申明一下类的定义信息.3.3更新session数据删除session数据?php/删除sessoin

6、信息/1.删除某一个keyvalsession_start();/unset($_SESSIONname);/2.删除所有的 keyval/这样就会把当前这个浏览器对应的session文件删除.session_destroy();echo 删除session成功!;?思考: 如果没有手动删除session,那么系统是怎么维护.session的细节讨论session数据默认存放时间是 1440秒, 这个时间可以通过 php.ini文件来修改session.gc_maxlifetime = 1440时间可以自定 ,修改后,也要重新启动apache,这个时间是指定在1440秒内,没有使用sessio

7、n文件,该session才会被当做垃圾,从而被回收.session 文件存放的路径是可以修改 php.ini 文件session.save_path = c:/mysession 修改后,需要重新启动apache在使用session的时候,应当保证 对session进行初始化,方法1; 在需要使用session页面都写入 session_start();2. 在php.ini 文件中,配置session.auto_start=1 (不推荐) 服务器是怎样实现,一个session文件为一次会话服务的,原理是session的实际运用购物车实际案例给出界面,然后实现为后面讲解禁用cookie后还能使

8、用session的知识点.要求不使用数据库,使用session 完成.代码:MyHall.php?php/购物大厅echo 欢迎购买;echo 天龙八部;echo 红楼梦;echo 西游记;echo 聊斋;echo ;echo 查看购买到的商品列表;?ShowProcess.php?php/接收用户购买请求,并把书保存到session中.$bookid=$_GETbookid;$bookname=$_GETbookname;/保存到session中session_start();$_SESSION$bookid=$bookname;echo 购买商品成功!;echo 返回购物大厅继续购买;?S

9、howCart.php?phpecho 购物车商品有;session_start();foreach($_SESSION as $key=$val)echo 书号-$key 书名-$val;?再请思考一个问题?:如果用户禁用cookie?当用户禁用cookie后,服务器每次 session_start() 都会 创建一个全新的seesion文件,后果就是无法让多个页面php,去共享同一份session文件.如何解决问题? 从cookie sessoin 和http协议入手解决请问? 如果客户端禁用cookie,怎样实现session技术共享多个页面?答: (1)在每个超链接上添加一个PHPSE

10、SSID=sesssionId;同时在每个页面加入:if(isset($_GETPHPSESSID)/设置sesssion_idsession_id($_GETPHPSESSID);session_start();.(2) 使用常量SID 使用方法如下:在超链接 action header(“Location: xx”) 可以直接拼接 SID常量即可echo 西游记;(3) 可以启用session.use_trans_sid 指定是否启用透明 SID 支持 即可以这样设置ssssion. use_trans_sid = 1 ,这样重启apache即可生效.具体处理代码:MyHall.php?p

11、hpif(isset($_GETPHPSESSID)session_id($_GETPHPSESSID);session_start();/echo sid=.SID;/购物大厅echo 欢迎购买;echo 天龙八部;echo 红楼梦;echo 西游记;echo 聊斋;echo ;echo 查看购买到的商品列表;?ShopProcess.php?php/接收用户购买请求,并把书保存到session中./保存到session中if(isset($_GETPHPSESSID)session_id($_GETPHPSESSID);session_start();$bookid=$_GETbookid

12、;$bookname=$_GETbookname;$_SESSION$bookid=$bookname;echo 购买商品成功!;echo 返回购物大厅继续购买;?ShowCart.php?phpecho 购物车商品有;/这里不能让服务器创建一个新的sessionif(isset($_GETPHPSESSID)session_id($_GETPHPSESSID);session_start();foreach($_SESSION as $key=$val)echo 书号-$key 书名-$val;?再看一个session的实际运用案例如何防止用户非法登录.思路如图:代码loginProcess

13、.php 增加:if($name!=)/把登陆信息写入cookie loginname:$name/把登陆表 把登陆的人ip id./合法session_start();$_SESSIONloginuser=$name;header(Location: empManage.php?name=$name); exit();在编写commmon.php文件中添加了一个函数/把验证用户是否合法封装函数function checkUserValidate()session_start();/先写在封if(empty($_SESSIONloginuser)header(Location: login.p

14、hp?errno=1);在需要防止用户非法登录页面中引入这样两句(这两句话,放在页面的开头)require_once common.php;checkUserValidate();session技术的实际运用验证码为什么我们需要验证码防止登录时,恶意攻击防止灌水.验证码实现思路图分析:代码: 直接在我们雇员管理系统中增加验证码功能:checkCode.php 这个文件引入到你的项目中在login.php页面中添加一个标签 ,向checkCode.php发送请求在loginProcess.php 页面中,添加对验证码的处理代码/先看看验证码是否 oksession_start();if($che

15、ckCode!=$_SESSIONmyCheckCode)header(Location: login.php?errno=2);exit();php.ini文件中关于cookie和session的设置该配置用于设置session的名字,这个值可以通过 session_name() 来获取.session.use_trans_sid 默认是0,session.use_trans_sid = 0 说明:给每个url启用 session名=sessionId ,对安全有影响,不推荐开启sessoin.save_path = 路径可以配置把网站的session文件放在哪个目录下.三个一组:面试ses

16、sion.gc_maxlifetime = 1440 说明:session默认最大生命周期session.gc_probability = 1 session.gc_divisor = 1000请简述php 中 session的垃圾回收机制?答: session的垃圾回收机制于 php.ini中的三个配置相关: 一个是指定session生命周期, 一个是启动的概率 ,该概率是计算,当用户操作session的时候(比如 session_start() 就可能启动我们的session垃圾回收机制,去删除超时的session文件., 如果网站规模大,可以把启动 gc (garbage collect

17、ion)的概率设置小.引出一个问题? 如何统计网站当前在线用户的个数.说明: 上面三个配置,共同来决定,session的垃圾回收清除.原理图 机制说明: 当某个用户操作session的时候,会使用到session_start(), 该函数会调用gc ,但是其概率是 session.gc_probability/ session.gc_divisor 原因是: 对于一个网站说,有很多用户访问,因此当大量用户访问的时候,概率很多. 如果网站的规模越大,我们建议 把这个概率设置越小.演示session.gc_maxlifetime = 30 说明:session默认最大生命周期session.gc_

18、probability = 1000 session.gc_divisor = 1000 session.cookie_lifetime= 0 该设置可以指定cookie默认生命周期,默认是0,表示当关闭浏览器后,该cookies失效,你可以这样setcookie(“名字”,”val”,time()+3600);setcookie(“名字”,”val”);自定义会话处理器$_SESSIONname=”shunping”;说: session 的各种操作,都可以同自定义会话处理来自己决定, 靠session_set_save_handler如果你要自定义处理session,需要在php.ini文

19、件中做一个设置.session.save_handler = filesuser需求: 为什么session文件打头是sess_* ,我们能不能自己定义session文件名? hsp_*代码如下:?phpfunction open($save_path, $session_name) global $sess_save_path; $sess_save_path = $save_path; return(true);function close() return(true);function read($id) global $sess_save_path; $sess_file = $sess_save_path/hsp_$id; return (string) fil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论