版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目四
PHP开发基础学习目标1、了解正则表达式的语法规则并能使用正则函数2、掌握表单的设计、验证和安全提交等用法3、掌握Cookie的原理和用法4、掌握Session的原理和用法5、了解PHP对图形图像处理4.1正则表达式4.1.1简介正则表达式是一个从左到右匹配目标字符串的模式。给定一个正则表达式和另一个字符串,可以达到如下的目的:
1.给定的字符串是否符合正则表达式的匹配;
2.可以通过正则表达式,从字符串中获取特定部分。正则表达式的特点是:
1.灵活性、逻辑性和功能性非常的强;
2.可以迅速地用极简单的方式达到字符串的复杂控制。示例--全是数字且至少为5位:
^\d{5,}$4.1.2语法模式中的这种有特殊涵义的编码字符称为元字符。常见的元字符如表5-1所示。1.元字符正则表达式用一些重复规则来表达循环匹配。常用的重复规则见表5-2所示。2.重复普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。3.普通字符分枝是指制定几个规则,如果满足任意一种规则,则都当作匹配成功。具体来说就是用“|”符号把各种规则分开,且条件从左至右匹配。4.分枝4.1.2语法在正则表达式中,可以用小括号将一些规则括起来当作分组,分组可以作为一个元字符来看待。5.分组正则表达式默认的情况下,会在满足匹配条件下尽可能的匹配更多内容,这就是贪婪匹配。在满足匹配条件的情况下尽可能的匹配更少的内容,这就是懒惰匹配。常用的懒惰限定符见表5-3所示。6.贪婪与懒惰模式修正符是标记在整个正则表达式之外的,可以看着是对正则表达式的一些补充说明,常用的模式修正符见表5-4所示。7.模式修正符4.1.3应用正则表达式主要用于:(1)正则匹配:根据正则表达式匹配相应的内容。(2)正则替换:根据正则表达式匹配内容并替换。(3)正则分割:根据正则表达式分割字符串。在PHP中有两类正则表达式函数,一类是Perl兼容正则表达式函数,一类是POSIX扩展正则表达式函数。二者差别不大,但在PHP7中仅仅支持Perl兼容正则表达式函数。4.1.3应用用于进行正则表达式匹配,成功返回1,否则返回0。语法如下:intpreg_match(stringpattern,stringsubject[,arraymatches])1.preg_match()用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回FALSE。语法如下所示:intpreg_match_all(stringpattern,stringsubject,arraymatches[,intflags])2.preg_match_all()【例4-1】4.1.3应用正则匹配中文汉字根据页面编码不同而略有区别:(1)GBK/GB2312编码:[x80-xff]+或[xa1-xff]+(2)UTF-8编码:[x{4e00}-x{9fa5}]+/u3.正则匹配中文汉字
preg_replace()函数用于正则表达式的搜索和替换。语法如下:mixedpreg_replace(mixedpattern,mixedreplacement,mixedsubject[,intlimit])4.正则替换
preg_split()函数用于正则表达式分割字符串。语法如下:arraypreg_split(stringpattern,stringsubject[,intlimit[,intflags]])如果不需要正则表达式的威力,则使用explode()更快,这样就不会招致正则表达式引擎的浪费。5.分割字符串4.2表单4.2.1表单设计表单在电子商务网站前台以及动态网站的后台管理中都有广泛的应用。【例4-2】用户注册页面4.2.2表单验证表单在提交到服务器前,一般需要对用户输入的数据进行有效性验证。数据验证,可以使用JavaScript来进行。由于浏览器众多,直接使用JavaScript需要作浏览器兼容性设计,这样难免难度有点大。对此,jQueryValidate插件有着良好的兼容性,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括URL和电子邮件验证,同时提供了一个用来编写用户自定义方法的API。目前最新版本是1.15.0,其官方下载地址为:【例4-3】/files/jquery-validation-1.15.0.zip,下载解压后将其中的文件“dist/jquery.validate.js”、“dist/jquery.validate.min.js”、“dist/additional-methods.js”、“dist/additional-methods.min.js”、“dist/localization/messages_zh.js”拷贝到“D:\PHP\CH05\js”中以备后用。注意,“js/jquery.validate.extend.js”是需要自行添加的程序。4.2.3表单提交用jQueryValidate对表单数据进行有效性验证后就可以提交表单了。提交表单时可以用其他方式替代表单默认的“SUBMIT”动作。若提交的表单中有敏感的隐私字段如密码字段,从安全角度考虑则需要加密后再提交表单。客户端加密一般用SHA-2,SHA-2包括SHA-224、SHA-256、SHA-384和SHA-512。SHA-256和SHA-512是很新的杂凑函数,前者以定义一个字为32位元,后者则定义一个字为64位元。它们分别使用了不同的偏移量,然而,实际上二者结构是相同的,只在循环执行的次数上有所差异。SHA-224以及SHA-384则是前述二种杂凑函数的截短版,利用不同的初始值做计算。CryptoJS是一个纯JavaScript写的加密类库,包括各种常见的加密算法,本书选择其中的SHA-512来进行客户端加密。加密类库最新版本为CryptoJSv3.1.2,官方下载地址:/archive/p/crypto-js/downloads【例4-4】注意,“js/jquery.validate.extend.login.js”是需要自行添加的程序。下载后解压,将其中的“rollups/sha512.js”拷贝到“D:\PHP\CH05\js”中以备后用。4.2.4表单数据获取与验证在表单提交后可用如下方法获取数据:
(1)用$_POST获取以POST方法提交的数据,其语法如下:$_POST['表单控件名称'];
(2)用$_GET获取以GET方法提交的数据,其语法如下:$_GET['表单制件名称'];
(3)可用$_REQUEST来获取以POST、GET方法提交的数据,其语法如下:$_REQUEST['表单控件名称'];
(4)用$_FILES来获取上传的文件,其语法如下:$_FILES['上传控件名称'];//为一数组,包含上传文件的所有信息$_FILES['上传控件名称']['name'];//客户端机器文件的原名称。$_FILES['上传控件名称']['type'];/*文件的MIME类型,如"image/gif"。*/$_FILES['上传控件名称']['size'];//已上传文件的大小,单位为字节。$_FILES['上传控件名称']['tmp_name'];//文件被上传后在服务端储存的临时文件名。$_FILES['上传控件名称']['error'];//和该文件上传相关的错误代码。【例5-5】1.表单数据获取4.2.4表单数据获取与验证对获取的用户数据,不要轻易地相信,因为数据很有可能被篡改,所以需要对用户数据进行有效性验证。验证数据,可先用urldecode解码,再用正则表达式来进行校验。if(preg_match("/^[A-Za-z]{1}([_A-Za-z0-9]){5,49}$/",urldecode($_POST["username"]))){/*判断用户名是否合法:用户名只能由6-50位字母、数字或下划线组成,并且必须以字母开头*//*用户名合法,下一步将从数据库中查找该用户,若存在,则验证其密码是否正确*/……}2.数据验证4.3Cookie
Cookie是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
Cookie是HTTP标头的一部分,因此setcookie()函数必须在其它信息被输出到浏览器前调用。可以使用输出缓冲函数来延迟脚本的输出,直到按需要设置好了所有的Cookie或者其它HTTP标头。如果variables_order中包括"C",则任何从客户端发送的Cookie都会被自动包括进$_COOKIE全局数组。如果希望对一个Cookie变量设置多个值,则需在Cookie的名称后加中括号“[]”。1.创建
setcookie()函数用于设置cookie,它必须位于<html>标签之前。语法如下:boolsetcookie(string$name[,string$value=""[,int$expire=0[,string$path=""[,string$domain=""[,bool$secure=false[,bool$httponly=false]]]]]]);
PHP的$_COOKIE变量用于取回cookie的值。2.读取4.3Cookie3.删除当删除cookie时,应当使过期日期变更为过去的时间点。//设置cookie过期时间为过去1小时setcookie("TestCookie","",time()-3600);单点登录(SingleSign-On,SSO)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。4.单点登录【例4-6】【例4-7】单点登录(经典案例,非常实用)4.4Session
Session,在计算机中,尤其是在网络应用中,称为“会话”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。一个访问者访问web网站将被分配一个唯一的id,就是所谓的会话id,这个id可以存储在用户端的一个cookie中,也可以通过URL进行传递。1.启动
session_start()用于创建新会话或者重用现有会话。如果通过GET或者POST方式,或者使用Cookie提交了会话ID,则会重用现有会话。当会话自动开始或者通过session_start()手动开始的时候,PHP内部会调用会话管理器的open和read回调函数。要想使用命名会话,请在调用session_start()函数之前调用session_name()函数。语法:boolsession_start([array$options=[]]);session_start();$_SESSION['favcolor']='green';4.4Session2.读取
PHP的$_SESSION变量用于取回Session的值。session_start();echo$_SESSION['favcolor'];//green如果需要删除某些session数据,可以使用unset()或session_destroy()函数。session_destroy()销毁当前会话中的全部数据,但是不会重置当前会话所关联的全局变量,也不会重置会话cookie。如果需要再次使用会话变量,必须重新调用session_start()函数。为了彻底销毁会话,比如在用户退出登录的时候,必须同时重置会话ID。如果是通过cookie方式传送会话ID的,那么同时也需要调用setcookie()函数来删除客户端的会话cookie。3.删除【例4-8】Session购物车(经典案例,非常实用)4.5图形图像
PHP并不仅限于创建HTML输出,它也可以创建和处理包括GIF、PNG、JPEG、WBMP、XBM、XPM以及WebP在内的多种格式的图像。更加方便的是,PHP可以直接将图像数据流输出到浏览器。可以使用PHP中的图像函数来获取下列格式图像的大小:JPEG、GIF、PNG、SWF、TIFF和JPEG2000。1.创建画布在PHP中创建画布,可以用表5-9所示的函数来进行。2.颜色处理
PHP中有着丰富的颜色处理函数,常见的颜色处理函数见表4-10所示。3.输出图像输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI换脸效果处理技巧课程设计
- 博文课程设计
- 超声波测距报警装置分享课程设计
- 冲压模课程设计指导
- 生物特征身份认证系统实现案例课程设计
- 财务会计课程设计模本
- 北京小学思维课程设计
- 机器人视觉测量课程课程设计
- 生物信息学DNA序列比对工具指南课程设计
- Snort安全事件检测方案课程设计
- DL-T1069-2016架空输电线路导地线补修导则
- 腔镜下甲状腺切除手术配合
- 注册安全工程师考试真题及答案
- GB/T 15587-2023能源管理体系分阶段实施指南
- 发电机总调试报告
- 中国古代兵器
- 软件开发(IT行业)程序文件清单
- GB/T 21475-2008造船指示灯颜色
- GB/T 1981.2-2009电气绝缘用漆第2部分:试验方法
- GB/T 15544.5-2017三相交流系统短路电流计算第5部分:算例
- 物权法案例分析
评论
0/150
提交评论