项目三网站用户中心-补充案例_第1页
项目三网站用户中心-补充案例_第2页
项目三网站用户中心-补充案例_第3页
项目三网站用户中心-补充案例_第4页
项目三网站用户中心-补充案例_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

项目三充案案例3-1 表单的GET与POST使用一、案例描述1考核知识点2练习目标3需求分析4设计思路创建一个表单,分别以GET方式和POST方式发送数据,数据接收页面为showinfo.php表单中设置以下几个表单元素,、、,通过按钮点击提交,可以重置在showinfo.php中接收传输的数据,并打印输出到浏览器二、案例实现1、首先创建一个以GET方式请求的表单页面index.html,发送给showinfo.php<!doctype<!doctype<title>Web表单<form<table<tdclass="title" <td><inputtype="text"name="name" <td><input<td><inputtype="text"name="age" <td><inputtype="text"name="sex"<inputtype="submitvalue="提交表单class="button<inputtype="resetvalue="重新填写class="button以上代码输出echo'<pre>';echoecho'<pre>';echo输出效果图<!--修改表单以POST方式提交<formaction="showinfo.php"3、将表单的请<!--修改表单以POST方式提交<formaction="showinfo.php"echo'<pre>';echo'</pre>';5、运行结果展示三、案例总结1 不同方式的请求,传输数据的形式不同,接收数据的方式也不同2GETHTTPurlurl3GET1024字节,POSTphp.ini8M,可案例3- 1考核知识Web表单文件上2练习目掌握HTTP请求中POST3需求分在项目实际开发中,为了使作者的的内容丰富多彩,会采用图文并茂的方式给读者体现。那么的上传在这里将会很重要,上传时通过表单的文件域获取文件的路径,通<form>表单元素encype="multipartform-daa"属性设置表单的MIME编码,此时表单内的数据是以二进制的方式进4、设计思路(实现原理编写用于上传文件的html表单页面indexhtml编写接收数据的PHP文件upload.php实现文件上传的功能及效果显示二、案例实现1 编写上传文件使用的表单页面,代码如下<!doctype<!doctype<title>文件上传<table<th>形 <td><inputtype="file"name="file"<inputtype="submitvalue="上传文件class="button<inputtype="resetvalue="重新选择class="button2、运行程序,结果如下图所示header('Content-Type:text/html;charset=utf-exit('没有文件上传}//if($_FILES['file']['error']>}echo文件的名称:$_FILES['file']['nameecho文件的类型:$_FILES['file']['typeecho文件的大小:$_FILES['file']['sizeecho文件的临时路径:$_FILES['file']['tmp_name'//ifif(file_exists('./upload/'.}// iconv('UTF- .{echo'上传成功:./upload/'.$_FILES['file']['name'].'<br/>';echo'<imgsrc="./upload/$_FILES['file']['name'/><br}else}上传的文件展示三、案例总结2 文件接收数据时必须使用$_FILES获取表单提交的文件信息案例3- 表单数据过一、案例描述1考核知识表单数据过2练习目3、需求分析当接收表单时,用户输入的内容中可能会有HTML、CSS、JavaScript代码,如果PHP将这些输入数据原样显示到HTML中,就会对网页造成破坏,而且JavaScript代码也会被浏览器执行,影响网站的安全。在PHP中,可以使用strip_tags()函数过滤表单中的HTML。4设计思创建一个表单,表单中有一个输入用户的表单元素该表单数据传输给showinfo.phpshowinfo.php向表单元素中输入正常的值,查看页面显示效果返回该表单,在输入的前添加<strong>,在传输给 查看显示效果重复上一步操作,在showinfo.php中使用strip_tags()函数对该变量进行处理,再次查看页面二、案例实现"/><!doctype<!doctype<metacharset="utf-8"<title>表单过滤<formaction="showinfo.php"<table<th><td><inputtype="text"name="name"<input<inputtype="submitvalue="提交class="button<inputtype="resetvalue="重置class="button查看网页展示header('Content-Type:text/html;charset=utf-$name=isset($_POST['name'])?$_POST['name']://下面的代码用于过滤//$name=<!doctype<title>表单数据安全验证结果<table<thcolspan="2"你好!<?phpecho$name欢迎来到传智播客。3 在表单中输入“”,提交表单,效果图如下4 在表单中输入“<strong></strong>”,提交表单运行结果如下当在PHP页面使用strip_tags()函数对变量进行处理后,结果如下三、案例总结1 表单数据如果不经过安全性处理,轻则破坏页面布局和显示,重则影响安全案例3- 一、案例描述1考核知识$_REQUEST的使2练习目掌握$_REQUEST的使用方法,了解$_REQUEST3需求分而不清楚使用何种请求方式来获取value时,可以使用$_REQUEST。$_REQUEST会按照php.ini中variables_order设定的“GPCS”顺序获取数据,即$_GET、$_POST、$_和$_SERVER的顺4设计思在HTML文件中创建一个表单,该表单用于保存个人信息该表单分别以GETPOST方式请求showinfo.php页面showinfo.php页面使用$_REQUEST二、案例实现<!doctype<metacharset="utf-8"<title>$_REQUEST的使用<table <!doctype<metacharset="utf-8"<title>$_REQUEST的使用<table <td><inputtype="text"name="name" <td><inputtype="text"name="age" <td><inputtype="text"name="gender"<inputtype="submitvalue="提交class="button<inputtype="resetvalue="重置class="button3、showinfo.php页面,使用$_REQUEST接收请求的数据信息echo'<pre>';echo运行效果如下图三、案例总结2、$_REQUEST中的变量是通过GET、POST和 和$_在$_REQUEST中出现的顺序依赖于PHP的配置文件php.ini中variables_order配置指令案例3- 一、案例描述1考核知识$_SERVER的使2练习目掌握 的使用及其各信息的用途3需求分4设计思创建一个PHP文件,获取以下信Web客户端操作系统和浏览器信二、案例实现header('Content-Type:text/html;charset=utf-echo客户端操作系统和浏览器信息:',$_SERVER['HTTP_USER_AGENT'],'<br/><brecho'IP地址:',$_SERVER['SERVER_ADDR'],'<br/><br/>';header('Content-Type:text/html;charset=utf-echo客户端操作系统和浏览器信息:',$_SERVER['HTTP_USER_AGENT'],'<br/><brecho'IP地址:',$_SERVER['SERVER_ADDR'],'<br/><br/>';2、案例运行结果三、案例总结$_SERVER保存的信息,根据web服务器和运行文件的不同会有所不同案例3- 一、案例描述1考核知识$GLOBALS的使用2练习目掌握$GLOBALS的使用了解局部变量和全局变量的区3需求分在 开发中,如果希望在一个函数中调用函数外的一个变量,那么就需要使用$GLOBALS4设计思定义一个函数,在函数外定义一个变量,使用 把函数外的变量全局化在函数内调用该变量以显示二、案例实现1test函数,该函数内有变量$addr,函数外部同样设置一个变量$addr,在函数内分别输出这functiontest()$addr=echo'$addris'.$addr,'<br/>';echo'$addris'.}$addr=2、案例运行结果三、案例总结$GLOBALS保存了PHP中所有全局变量的数组,变量名就是数组的键案例3-7 一、案例描述1考核知识2、练习目标掌 preg_match()函数的使用方法,熟悉该函数的使用效果3需求分4设计思 一个变量,为变量设置一个任意长度的字符串定义一个正则表达式,用以匹配以上变量使 preg_match()函数执行该正则表达式,显示匹配结果二、案例实现header('Content-Type:text/html;charset=utf-$str=//匹配一个两位的数$reg='/[0-9][0-9]/';preg_match($reg,$str,$arr);header('Content-Type:text/html;charset=utf-$str=//匹配一个两位的数$reg='/[0-9][0-9]/';preg_match($reg,$str,$arr);echopreg_match匹配后:';echo'<pre>';echo案例结果三、案例总结1、使用preg_mach()函数时,通常设置三个参数,第一个参数是正则表达式,是字符串类型,第二个参数是要匹配的字符,第三个参数是可选参数,如果提供了该参数,匹配所得的结果将填充到该参数中,该参数是一个数组类型。2、preg_match()函数在成功匹配到一个元素后就会停止匹配,即使后面仍然有符合匹配条件的字符案例3- preg_match_all()函一、案例描述1考核知识2、练习目标掌握preg_match_all()函数的使用,熟悉该函数的使用效果3需求分在案例3-7中,字符串“na12sicmea92xisax3”有两处符合正则的筛选条件,分别是12和92,但preg_match()函数在成功匹配到第一个,也就是12后就停止匹配,将结果返回了。如果需要preg_match_all()函数。4设计思二、案例实现header('Content-Type:text/html;charset=utf-$str=//匹配一个两位的数$reg='/[0-9][0-9]/';preg_match_all($reg,$str,$arr);echopreg_match_all匹配前:'.$str.'<brheader('Content-Type:text/html;charset=utf-$str=//匹配一个两位的数$reg='/[0-9][0-9]/';preg_match_all($reg,$str,$arr);echopreg_match_all匹配前:'.$str.'<brecho'preg_match_all匹配后:';echo'<pre>';echo2、案例运行结果三、案例总结从上面的案例可以看出,preg_mach_al()函数会一直匹配到目标最后才停止,获取到所有匹配的结果以二维数组的形式返回。案例3- preg_grep()函一、案例描述1考核知识2、练习目标掌握preg_grep()3需求分在程序开发中,经常需要使用正则表达式对数组中的元素进行匹配,此时可以使 preg_grep()数4设计思使用正则表达式匹配name数组中所有以n结尾的英文名通过preg_grep()二、案例实现$reg=$name[]=$reg=$name[]=$name[]=$name[]=$name[]=$name[]=$name[]=$name[]=$res=$res=preg_grep($reg,$name);2、案例运行结果如下三、案例总结preg_grep()函数可以对数组中的元素进行匹配案例3- preg_split()函一、案例描述1考核知识2、练习目标掌握preg_split()函数的使用3需求分有些时候需要对中文字符串进行截取,而中文字符属于多字节字符,使用一般的substr()函数会出现乱码,PHP提供了一种处理多字节字符的函数mb_substr()PHP加载了mbstring扩展,而有些时候不知道PHP是否加载了这个扩展,当不能使用这个扩展时,想要4设计思 一个函数,函数名substr_utf8度。首先将目标字符串使 preg_split()函数利用正则表达式分割成数组中的元素再使 array_slice()函数根据传入的截取开始位和截取长度,从该数组中取出一段最后使 implode()函数将截取出来的数组重新转化成字符串并返回二、案例实现header('Content-Type:text/html;charset=utf-利用正则表达式截取UTF-8@paramstring$str@paramint$start@paramheader('Content-Type:text/html;charset=utf-利用正则表达式截取UTF-8@paramstring$str@paramint$start@paramint$length@return functionreturnimplode('',array_slice(preg_split('//u',$str,-1,PREG_SPLIT_NO_EMPTY),$start,$length));}$strPHP学院$res=echo2、案例运行结果三、案例总结1、由于数组下标是从0开始计算,所以开始位置2的中文字符为“播2、preg_split()函数有两个必填参数,第一个为用于搜索的模式,也就是正则表达式,第二个为要匹配的目标,字符串类型。第三个参数为可选参数,如果指定,则将显示分割得到的子串最多只能有指定的个数,最后一个参数也是可选参数,具体细节请参考手册。4 implode()函数是将数组以指定字符连接成字符串案例3- 1考核知识点文2练习目标掌握文件掌握在程序中如何运用文3需求分析通过本案例将完成“本文留言板”中的文件的功能。同时运用PHP的序列化(seralie)与反序列化(unseralie)函数来将变量转换为可保存的字符串。4、设计思路(实现原理定义数组$message,数组元素有作者author、邮箱、时间time、留言内容content。3)到文本文件1.txt中4)编写PHP程序1.txt,反序列化后显示到网页中1、编写“留言板”的留言表单页面indexhtml,代码如下<!doctype<!doctype<metacharset="utf-8"<title>文本留言板<formaction="message.php"<table<th><td><input<td><inputtype="text"name="author"<th><td><inputtype="text" "<td><textarea<inputtype="submitvalue="提交留言class="button<inputtype="resetvalue="重新填写class="button2、在浏览器中“留言”页面,并填写留言信息,效果如下图所示3、接收用户输入的数据,将接收后的数组序列化后输出网页上。编 message.php,代码如下if(isset($_POST['author'])&&isset($_POST[' '])&&$message='author'=> '' => =>date('Y-m-d'content'=> //}4、在浏览器 ,运行结果如下图所示5、5、从浏到文本文件中,保存为1.txt,与message.php放在同 下6、编写 程序 文件,反序列化到数组中,然后将数据显示到页面上。代码如下 文本$str=//反序列化$data=<!doctype<metacharset="utf-8"<title>文本留言板<table 7、从浏览器问show.php程序,结果如下图所示1、file_get_contents()函数可以将文件的内容全部到一个字符串中2、 提供的序列化与反序列化函数可以使轻松地将各种类型的变量保存为字符串案例3-12 1、考核知识点写入文2练习目标掌握文件的写掌握如何运用文件保存数3需求分析GET4、设计思路(实现原理接收表单,将表单中提交的数据序列化后以“日期时间序号.dat”为文件名保存文件。序号通过随机数生成。实现从GET接收参数(文件名)1、从案例3-11index.html文件3、提交表单测试“留言”功能,结果如下图所示header('Content-Type:text/html;charset=utf-//$data=array('time'=>date('Y-m-d3、提交表单测试“留言”功能,结果如下图所示header('Content-Type:text/html;charset=utf-//$data=array('time'=>date('Y-m-d ','content')as$data[$v]=isset($_POST[$v])?htmlspecialchars($_POST[$v]):}//生成文件名,根据时间戳和随机$filename=time().rand(1,//}exit('没有提交4、实现接收GET参数显示指定留言。编写show.php,代码如下header('Content-Type:text/html;charset=utf-//通过GET$filename=isset($_GET['filename'])?$_GET['filename']://$filename=preg_match('/\d+/',$filename,$filename)?$filename[0].'.txt':exit('exit('} $str=$data=<!doctype<metacharset="utf-8"<title>文本留言板<table 5、点击留言文件名测试显示留言,结果如下图所示1、file_put_contents()函数可以用来对文件进行写入操2、当程序并发数比较高时可能会出现问题,可以通过生成文件名来尽可能避3、当留言数量比较多时,会造成一 下存在大量文件,可以通过创 来解决案例3-13 1、考核知识点文件加锁机2练习目标了解文件加锁机制原掌握在程序中应用文件加锁机3需求分析对于上线的eb程序,先的就是并的问题,而在文件操作方面为明显。分析留板的“写入文本留言”案例,思考该案例中的程序在遇到高并发时会出现什么问题,本案例将用文件加锁机制来改进。4、设计思路(实现原理在判断文件是否存,添加文件锁在文件写入成功后,解除文件锁functioncreateFileName(){returntime().rand(1,}//$filename=$filenamecreateFileName()}functioncreateFileName(){returntime().rand(1,}//$filename=$filenamecreateFileName()}上述代码通过循环判断程序自动生成文件名的文件是否存在,如果存在则重新生成再继续判断,如果不存在则创建该文件,并将$daa序列化保存到文件中。2、运用文件加锁机制,将存在并发问题的代码放入文件锁中。代码如下////通过lock.dat$fp=fopen('lock.dat',//if(flock($fp,LOCK_EX))//$filename=}flock($fp,exit('文件不能锁定}上述代码通过flock()数为lock.dat”文件添加了LOCK_EX独占锁定,当一个用户进程在文件时加上锁,其他用户进程想要对该文件进行时,就必须等到锁定被,这样就可以避免并发时出现问题。1、当程序并发时,可能会有多个进程判断为同一序号的文件不存在,造成两个进程只写了同一序号的文件,而使用文件加锁机制就可以避免这个问题了。2、在编写程序时,需要留意什么样的程序存在并发问题,需要使用文件加锁机制案例3- 1、考核知识点添加文2练习目标掌握信息,写入信息的函了解添加文字的原理以及过3需求分析在本案例中首先载入一副PNG图像,这幅图像将作为文本的背景,来自表单的字符串直接作为生成的文本,通过设置字体、具体的位置,创建并输出融合文字后的图像。4、设计思路(实现原理设计一接收来自表单提交的数据并载入背景通过图像处理函数添加文本信息到中显示添加文本后的图<!doctype<metacharset="utf-8"<title>学生信息卡片<formaction="card.php"<table<!doctype<metacharset="utf-8"<title>学生信息卡片<formaction="card.php"<table <td><inputtype="text"name="name"<th>学科<td><inputtype="text"name="subject"<th>学号<td><inputtype="text"name="number" <td><inputtype="text"name="url"<inputtype="submitvalue="制造卡片class="button<inputtype="resetvalue="重新填写class="button2、通过浏览 程序,并填写表单,效果如下图所示//从$_POST取 、学科、学号$data=array();foreach(array('name','subject','number','url')as$v){$data[$v]=isset($_POST[$v])?$_POST[$v]://从$_POST取 、学科、学号$data=array();foreach(array('name','subject','number','url')as$v){$data[$v]=isset($_POST[$v])?$_POST[$v]:}$image=//为图像分$color=imagecolorallocate($image,51,102,//使用Windows自带的宋体字体将文本写$font=//输出图像, 显示在浏览器}exit('没有输入//输出图像, 显示在浏览器header('Content-Typeimage/png')//输出图像, 显示在浏览器header('Content-Typeimage/png')PNG//输出图像//销毁图像资//5、在浏card.php,提交表单后,运行效果如下图所示1、本案例着重已有信息,并添加文本到中,指定文本的位置和颜色2、本案例的知识点主要用于生成信息,可用于,生 、条形码图形等案例3-15 文件1、考核知识点文件2练习目标掌握通过HTTP响应消息头实现文件3需求分析当需要在Web服务器中文件时,可以先将文件保存到服务器,然后通过服务器自动识别文件名进4、设计思路(实现原理实现将字符串作为文件实现文件进行1、1、创建文 index.php,实现通过浏览 一个字符串内容的文件。具体代码如下2、在浏览器 ,程序运行结果如下图所示//准备要作为文 的内$data='Thisisa//获取字符$filesize=//$filename=//设置HTTP响应消息header('content-typeoctet-stream')表示内容是二进制流,不属于某种文件类型header('content-length:'.$filesize);header('content- 3、打开后的文 data.txt,文件的内容如下图所示4、4、编 download.php,实 一个文件进 。代码如下//指定 的文件路$filepath=//获取$filesize=//获取文件$filename=header('content-$fpfopen($filepath'r')//$fp $buffer= //一 1KB的内容(即缓冲区,防止文件过大占用内存$count= // 字节while(!feof($fp)&&($filesize-$count>$data=fread($fp,$count+=$buffer;echo$data;}5、在浏览器中,程序运行结果如下图所示通过HTTP响应头可以实现文件案例3-16 1、考核知识点2练习目标

掌握利用保存用户登录状3需求分析许多都为用户提供了保存登录状态的功能,当用户登录成功后,下次时无需再次输入。本案例接下来将会实现这个功能。4、设计思路(实现原理编写用户中心程序,判断用户是否登编写用户登录程序,实现用户名、的验证,和自动登录功能1、创建文 index.php,实现用户中心功能,具体代码如下header('Content-Type:text/html;charset=utf-//启动SESSIONif(isset($_GET['action'])&&//清 数 ('username','',time()- ('password','',time()-//清除SESSION//如果SESSION中没有其他数据SESSION}}//判断SESSION//define('IS_LOGIN'true)define('IS_LOGIN',false);}//加载HTMLrequire<!doctype<metacharset="utf-8"<title>会员中心<div<?phpif(IS_LOGIN):<!doctype<metacharset="utf-8"<title>会员中心<div<?phpif(IS_LOGIN):<dive">“<span><?phpecho$userinfo['username'];<?phpelse:<?phpendIf;3、在浏览器 用户中心,程序运行效。4、编 login.php,实现用户登录功能,具体代码如下header('Content-Type:text/html;charset=utf-define('USERNAME','admin');//$error=//接收用户$username=isset($_POST['username'])?trim($_POST['username']):$password=isset($_POST['password'])?$_POST['password']://验证用户if($username==USERNAME&&$password==//判断用户是否勾选了//将用户名 保存 ,并 加 = _expire 保存1个}

('password',$password_ _expire);//保存$_SESSION['userinfo']='username$username将用户名保存到 $error[]='用户名 }}// 中存在登录状态 ['username'])&& //取出用户$username= $password= //计$ua=isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']: =//判断用户if($username==USERNAME&&$password== $_SESSION['userinfo']='username$username将用户名保存到 }}//加载HTMLrequire6、在浏login.php,程序运行效。<!doctype<metacharset="utf-8"<title>欢迎登录6、在浏login.php,程序运行效。<!doctype<metacharset="utf-8"<title>欢迎登录<form<table <inputtype="checkboxclass="checkboxid="auto_loginname="auto_login"value="yes"/><labelfor="auto_login">下次自动登录</label><inputtype="submitvalue="登录class="button<?phpif(!empty($error)): class="error-box">登录失败,错误信息如下<ul><?phpforeach($erroras$v)echo"<li>$v</li>";<?phpendIf;7、登录时,填写正确的用户名和,然后勾选“下次自动登录”,登录成功。然后关闭浏览器,重新打开浏览器用户中心,当再次登录时无需输入用户名和。通过可以保存用户的用户名和。考虑到安全性,在保存时应对进行加密案例3-17 1、考核知识点水2练习目标掌握通通过GD库实现添加水3需求分析为添加水印的功能目前已经很普遍。用户可

温馨提示

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

评论

0/150

提交评论