5Web交互编程_第1页
5Web交互编程_第2页
5Web交互编程_第3页
5Web交互编程_第4页
5Web交互编程_第5页
已阅读5页,还剩90页未读, 继续免费阅读

下载本文档

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

文档简介

1、PHP 动态网站程序设计(第2版) 唐四薪 主编 人民邮电出版社ISBN:978-7-115-50524-8 2020年3月第5章 Web交互编程 浏览器和服务器的作用浏览器Web服务器HTTP请求HTTP响应浏览器发送HTTP请求的方式提交表单输入网址服务器怎么获取这些信息?获取HTTP请求信息PHP提供了很多预定义的超全局变量,用来获取HTTP请求信息 超全局变量功能$_POST获取客户端以POST方式发送的HTTP请求信息$_GET获取客户端以GET方式发送的HTTP请求信息$_REQUEST包含了$_GET,$_POST和$_COOKIE数组中信息$_SERVER获取HTTP请求中的环

2、境变量信息$_SESSION存储单个用户的信息$_COOKIE读取和写入客户端的Cookie信息$_FILE获取通过POST方式上传文件时的相关信息,为多维数组5.1 接收浏览器数据4.1.1使用$_POST获取表单数据4.1.2使用$_GET获取表单数据4.1.3使用$_GET获取URL字符串信息4.1.4发送HTTP请求的基本方法4.1.5 使用$_SERVER获取环境变量信息5.1.1使用$_POST获取表单数据$_POST:获取POST方式提交的表单数据语法为:变量名=$_POST参数名 获取用户登录表单中的内容 用户名: 密码: 需用$_POST获取数据获取该表单的文件必须是4-2.

3、php$_POST userName $_POSTPS服务器获取表单信息的过程浏览器ApacheHTTP请求userPSuserPS$user=$_POSTusertang123服务器将获取的信息保存到数据库浏览器IISHTTP响应userpwd数据库服务器发送信息的过程浏览器IISHTTP响应userpwdecho $user;练 习怎样获取下面表单提交的数据 用户名: 密 码 : 练 习怎样使该获取页(ew.php)能获取到内容?$userName=$_POST“ucn;$PS=$_POST“phd;echo 您输入的用户名是:.$userName;echo 您输入的密码是:.$PS;?2

4、. 使用一张网页?if(isset($_POSTdenglu) $userName=$_POSTuserName;$PS=$_POSTPS;echo 您输入的用户名是:.$userName;echo 您输入的密码是:.$PS;? 判断用户是否提交了表单2. 使用一张网页想一想:如果只希望输出获取的信息,而不再显示表单,该怎么改 使用双分支条件语句获取复杂一点的表单页面4-4.php用来显示表单,4-5.php用来获取表单数据 单选框、复选框、下拉框只有被选中才会发送该元素的value值必须设置它们的value属性值。 当多个复选框属于同一组具有相同名称时,则对其name属性值命名时一定要命名成

5、数组的形式,如name= hobby 对$_POST数组的深入认识 ,$_POST是一个数组,保存了接收到的所有的表单元素值 var_dump($_POST);则输出结果为:array(5) name= string(6) 张三丰 Sex= string(1) 1 hobby= array(2) 0= string(6) 太极拳 1= string(4) 旅游 career= string(6) 医疗业 intro= string(10) 千杯不醉! 5.1.2使用$_GET获取表单数据 用户名: 密码: 需用$_GET获取数据获取该表单的文件必须是4-7.php$_GET userName

6、$_GETPSGET方式与POST方式提交的区别 GET方式会将表单中的数据以URL字符串的形式发送给服务器 GET方式http:/localhost/4-7.php?user=tang&PS=123 POST方式http:/localhost/4-1.php 5.1.3使用$_GET获取URL字符串信息什么是URL字符串/otype.php?owen1=近期工作&page=2 怎样获取URL变量的值呢?变量=$_GETURL变量 作用:在网页间传递数据例题在超链接中设置查询字符串在标记中设置查询字符串 服务器获取URL字符串信息的过程浏览器ApacheHTTP请求owenpageowenpa

7、ge$owen=$_GETowen;4-9.php4-9.php练习查询结果第5页如何获取?如何获取?设置查询字符串的方法 在超链接的href属性值的URL中添加; 在表单的action属性值中的URL后添加; 直接在地址栏中的URL后手工输入查询字符串想一想:能否设置表单以GET方式提交,同时在表单的action属性值中也设置URL字符串5.1.4发送HTTP请求的基本方法输入网址提交表单$_REQUEST 包含了$_GET、$_POST和$_COOKIE数组中的信息 发送HTTP请求的方法发送请求的方式服务器获取请求的方法输入网址GET方式$_GET提交表单method=getmethod

8、=postPOST方式$_POST5.1.5 使用$_SERVER获取环境变量信息? $IP=$_SERVERREMOTE_ADDR; $From=$_SERVERHTTP_REFERER; echo 您的IP地址是: . $IP;echo 您是单击.$From.页面中的链接进来的? 获取用户IP 获取用户来路常用的环境变量 环境变量名功能说明QUERY_STRING查询字符串信息SCRIPT_NAME当前文件相对于网站目录的路径和文件名SCRIPT_FILENAME当前文件在硬盘中的路径和文件名PHP_SELF当前正在执行脚本的文件名DOCUMENT_ROOT当前网站根目录SERVER_SO

9、FTWAREWeb服务器软件的名称,如IIS/5.1SERVER_PORT服务器端的端口号SERVER_NAME服务器主机的名称SERVER_SIGNATURE包含服务器版本和虚拟主机名的字符串REQUEST_METHODHTTP请求的方式,如:“GET”,“POST”REQUEST_TIMEHTTP请求开始时的时间戳5.2 发送信息给浏览器5.2.1 使用echo方法输出信息?echo 欢迎您:; /输出字符串常量$i=小花;echo $i; /输出变量echo 欢迎您:.$i .; echo 新用户注册; echo alert(留言修改成功);location.href=4-10.php;

10、echo 欢迎您:,$i; ? 说明 echo的简写形式,即 ?=欢迎您:.$i .; ? 提示:print、print_r、var_dump也能输出信息 输出数组输出数据类型和值5.2.2 使用header()函数重定向网页header()函数可使浏览器自动转到另一个页面 header()函数的其它功能文件延迟转向 header(Refresh:3; url=); 禁用浏览器缓存 强制下载文件 5.2.2 操作缓冲区缓冲区,是指服务器内存中的一块区域。1. 使用ob_start()打开缓冲区如果打开缓冲区,程序输出的内容会先输出到缓冲区,直到程序执行完毕时再将缓冲区内容发送给浏览器5.2.2

11、 操作缓冲区2. ob_flush:立即输出缓冲区的内容ob_ clean():清空缓冲区的内容3. ob_get_contents和ob_get_length函数ob_get_contents可以获取缓冲区中的内容,并将内容作为字符串返回。ob_get_length将返回缓冲区中内容的长度 2. ob_flush和ob_ clean()方法 5.3 使用$_SESSION操作Session5.3 为什么需要Session问题:如何在网页之间共享一些信息?普通变量的作用域都是在一个网页文件内引入Session的概念,只要把用户的信息存储在Session变量中,用户在网站页面之间跳转时,存储在S

12、ession变量中的信息不会丢失 当然,还有其他一些方法,比如Cookie为什么要用Session对象?当用户在Web站点的多个页面间切换时,利用Session可以保存该用户的一些有用信息,网站可以利用这些信息获得该用户在网站的活动情况交友网站购物车需要登录后才能访问的网页Session有什么用使用Session对象可以存储特定用户会话所需的信息。这样,当用户在网站的各页面之间跳转时,存储在Session变量中的信息将不会丢失,而是在整个用户会话中一直存在下去。用途:可以使用Session变量作为全局变量,用于在该会话的所有页面中共享信息什么是SessionSession代表服务器与客户端之间

13、的“会话”,意思是服务器端和客户端在不断地交流。如果不使用Session,当用户在网站的多个页面间切换时(请求了多个页面),页面之间无法传递用户的相关信息。 服务器会为每个用户建立一个Session不同用户拥有各自独立的Session5.3.1 存储和读取Session信息存储Session信息$_SESSION“Session名”=Session值读取Session信息变量=$_SESSIONSession名存储Session信息燕子,pwd=111); /将数组存入Session变量?读取Session信息 Session的创建和使用过程 HTTP请求某网站服务器创建Session将Ses

14、sion_id发送给浏览器 将Session_id保存到会话Cookie中HTTP请求(包含Session_id信息)某网站服务器根据Session_id查找相关Session变量信息echo 欢迎您,.$_SESSIONuser第一次访问某网站以后每次访问该网站Session的应用过程(第一次访问网站)浏览器HTTP请求4-1.phpSessionID=345823423SessionID=345823423$_sessionuser=“张三”http:/localhost/4-1.phpSession的应用过程(第二次访问网站)浏览器HTTP请求9-2.aspSessionID=34582

15、3423$_sessionuser=“张三”SessionID比较“欢迎您”& $_sessionuser=“张三”http:/localhost/4-2.php服务器为每个用户建立一个Session Session数组记载某一特定的客户信息,不同的客户用不同的Session数组来记载一个用户访问网页所建立的Session变量,别人是看不到的。Session数组Session变量Session变量SessionID理解Session的生命期Session的生命期用户从到达某个站点直到不再访问该站点为止的这段时间开始于:打开这个站点的任意一个网页结束于:不再访问这个站点(超时或主动结束)注意:不

16、再访问这个站点关闭浏览器关闭浏览器并不会使一个Session结束,但会使这个Session永远都无法访问到Session对象的两种结束方式Session对象有两种结束方法:一种是隐式方式,另一种是显式方式。隐式方式:当用户访问Web服务器的时间间隔超过Session的默认有效期后,Session对象自动结束显式方式:session_destroy()方法主动结束。当Session结束之后,Session对象的变量也将被释放,其值不可再用。设置Session的生命期 Session生命期默认为24分钟(1440秒) 修改Session有效期为60秒session_start();ini_set(

17、session.save_path,/tmp/);ini_set(session.gc_maxlifetime, 60);setcookie(session_name(), session_id(), time() + 60, /); 提示:不能单独对某个用户的Session设置生命期 5.3.3 Session限制未登录用户的访问网站中有些页面要求只有登录成功的用户才能访问,如网站后台管理页面。利用Session就可实现这种需求。 登录的过程登陆的过程是:当验证用户的用户名和密码通过后转到欢迎页(管理页)if ($user=admin & $pw=123)header(Location:4-

18、15.php);elseecho 用户名或密码错误; 缺陷:可以在地址栏直接输URL的方法绕过登陆页面限制未登陆用户对页的访问解决办法在登陆页一旦用户登陆成功为该用户建立一个Session变量$_SESSIONuser=用户名在欢迎页判断$_SESSIONuser是否为空,如果为空,则表明用户没有登陆而是直接访问该页面的为登陆成功的用户发一张“票”修改后的代码if ($user=“admin” & $pw=123)$_SESSIONuser=$user;header(Location:4-15.php);elseecho 用户名或密码错误; 为登录成功的用户设置一个Session变量登陆成功用

19、户和未登陆用户的区别登陆用户张三登陆用户李四未登陆用户SessionID431357403 431357404 431357405 $_SESSIONuser 张三李四NULL限制未登陆用户对页的访问示例在欢迎页最前面检查用户是否拥有特定的Session变量if (isset($_SESSIONuser)echo 欢迎您,.$_SESSIONuser.注销 ;elseecho 未登录用户不允许访问;5.3.4 删除和销毁Session session_unset只能删除$_SESSION数组中的所有元素,并不能删除对应的Session ID,也不能删除保存SessionID的文件 sessio

20、n_destroy()函数就能删除Session ID,并销毁Session文件 注销登录的实现原理:清空和删除Session(4-16.php) 5.4 使用$_COOKIE读取Cookie什么是CookieCookie俗称甜饼,可以在客户端长期保存信息。它是服务器端发送到客户端的一些文本,保存在客户机的硬盘上在HTTP协议下,Cookie仅仅是一个文本文件,是服务器在浏览器端写入的小文件。 Cookie存放在浏览器端的本机上C:Documents and Settings登录用户名Cookies,而不是存放在服务器端。Cookie可以做什么下次自动登录记录浏览历史个性化推荐记录用户登录次数

21、总之:Cookie是网站识别老客户的一种方法Cookie是怎么实现的Cookie的本质:记住了用户的一些信息实现方式:向用户硬盘上写入一些信息类似于超市,向会员发放一张卡片,记录会员的消费信息Cookie的分类每个网站都可以有自己的Cookie,但是每个网站只能读取自己的Cookie。Cookie有两种形式:会话Cookie:浏览器关闭就消失永久Cookie:存放在硬盘上,总是可用(本节讨论的)。使用Response对象的Cookies集合可设置Cookie变量的值,使用Request对象的Cookies集合可获取Cookie变量的值。什么是CookieCookie俗称甜饼,可以在客户端长期保

22、存信息。它是服务器端发送到客户端的一些文本,保存在客户机的硬盘上在HTTP协议下,Cookies仅仅是一个文本文件,是服务器在浏览器端写入的小文件。 Cookies存放在浏览器端的本机上C:Documents and Settings登录用户名Cookies,而不是存放在服务器端。Cookie可以做什么下次自动登录记录浏览历史个性化推荐记录用户登录次数Cookie是网站识别老客户的一种方法Cookie是怎么实现的Cookie的本质:记住了用户的一些信息实现方式:向用户硬盘上写入一些信息类似于超市,向会员发放一张卡片,记录会员的消费信息Session与Cookies的区别一家奶茶店有喝5杯奶茶免

23、费赠一杯奶茶的优惠客户端保持状态(Cookies):发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期(Expires)。服务器端保持状态(Session):发给顾客一张会员卡,除了卡号之外什么信息也不记录,店员在店里的电脑上找到这个卡号对应的消费记录。会员卡消费次数:正会员卡38574343321Cookie的类型每个网站都可以有自己的Cookie,但是每个网站只能读取自己的Cookie。Cookie有两种形式:会话Cookie:浏览器关闭就消失永久Cookie:存放在硬盘上,总是可用(本节讨论的)。使用setcookie函数可设置Cookie变量的值使用$_COOKIE数组可获取Co

24、okie变量的值。创建Cookie 一般用setcookie函数setcookie(name, value, expire, path, domain, secure)Name:cookie的变量名Value:cookie变量值Expire:cookie的有效期;path、domain、secure分别用来规定cookie的有效目录、有效域名和是否采用HTTPS来传输cookie 创建cookie示例修改Cookie变量的值 用setcookie函数给变量重新赋值。例如:setcookie(age,24,time()+60); 修改cookie时设置过期时间的参数不能省略,否则该cookie会

25、被修改成临时cookie 使用setcookie函数前,不要有任何HTML内容输出到浏览器 使用header函数设置Cookie在PHP中,还能使用header函数设置Cookie。例如:header(Set-Cookie: nickname=小泥巴; expires=. gmstrftime(%A, %d-%b-%Y %H:%M:%S GMT, time() + (86400 * 30);4.4.2 读取Cookie通过$_COOKIE数组 练习:获取下面程序写入的Cookie 5.4.3 Cookie数组写入Cookie数组 Cookie数组元素的索引不要加引号5.4.3 Cookie数组

26、读取Cookie数组 $value)echo $key.=.$value. ; echo $_COOKIEusername; ? 4.4.4 删除Cookie两种方法将Cookie变量值设置为空,并且不设置有效期将Cookie的有效期设置为过去的某个时间。 5.4.5 Cookie程序设计举例1. 实现用户自动登录2.记录用户的浏览路径用户自动登录的流程图(4-19.php)获取Cookie变量显示登录成功界面显示用户登录框修改Cookie变量写入Cookie变量有没有若要记录用户登录时间次数登录成功下次可自动登录显示用户第几次登录网站提示:首先获取Cookie,如果能获取到就表明不是第一次登

27、录,并获取记录了登录次数的Cookie变量,否则就显示是第一次登录。Cookie的应用过程(第一次访问网站)浏览器IISHTTP请求vis=request.Cookies(“visnum)9-2.asp为空http:/localhost/9-2.aspVisnum=1Cookie的应用过程(第二次访问网站)浏览器IISHTTP请求vis=request.Cookies(“visnum)4-2.phpVisnum=1不为空 Visnum=Visnum+1http:/localhost/4-2.phpVisnum=22.记录用户的浏览路径网站将每个页面的标题保存在$title变量中,用户每访问一个

28、页面就会将该页面的标题$title添加到$_COOKIEhistory值中 Session和Cookies的比较SessionCookies相似点功能存储或跟踪用户信息,在整个站点所有页面都可以访问不同点建立方式每次访问网页时自动建立需要通过代码建立存储位置服务器端客户端4.5 使用$_FILES获取上传文件信息文件上传功能的实现 PHP中文件上传功能的实现步骤为: 添加文件上传表单,单击提交按钮后,选择的文件数据将发送到服务器; 用$_FILES获取与上传文件有关的各种信息; 用文件上传处理函数对上传文件进行后续处理 5.5.1 添加上传文件的表单 4.5.2使用$_FILES获取上传文件信

29、息若表单文件上传域的name属性值为upfile,则可以使用$_FILESupfile来访问上传文件的有关信息$_FILESupfilename:客户端上传文件的原名称(不包括路径)。$_FILESupfile type:上传文件的MIME类型,如image/gif等。$_FILESupfile size:已上传文件的大小。$_FILESupfile tmp_name:上传文件在服务器端保存的临时文件名(包含路径名)。$_FILESupfile error:上传文件出现的错误号,是一个整数 $_FILESupfile数组可以输出$_FILESupfile数组的内容:则选择上传文件guangxue.gif,单击上传按钮后,执行结果如下:array(5)name= string(12) guangxue.gif t

温馨提示

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

评论

0/150

提交评论