PHP环境下AJAX表单验证技术研究

PHP环境下AJAX表单验证技术研究


2024年3月3日发(作者:)

第28卷第7期 2011年7月 计算机应用与软件 Computer Applications and Software Vo1.28 No.7 Ju1.201I PHP环境下AJAX表单验证技术研究 杨生举施韶亭 冯胜利 赵凡 (甘肃省科学技术情报研究所 甘肃兰州730000) 摘 要 分代码。 针对传统Web表单验证受H ITrP限制、用户等待时间长等缺点,提出一种在PHP环境下通过AJAX技术验证表单的方 法,从而建立更加友好和响应更加敏捷的表单验证技术。阐述AJAX表单验证规则,验证原理,并给出验证技术细节、实现方法和部 关键词PHP AJAX Web表单验证 AJAX FORM AUTHENTICATION TECHNoLoGY STUDY IN PHP ENⅥRoNMENT Yang Shengju Shi Shaoting Feng Shengli Zhao Fan (Gansu Institute ofScience and Technology Information,Lanzhou 730000,Gansu,China) Abstract To tackle with such shortcomings of the conventional web form authentication as HTrP limitations or the long waiting time for users,a me ̄od to authenticate forms with AJAX technology in PHP enyironment is proposed in order to set up a more firendly and more agilely responsive form authentication technology.The paper expounds the AJAX form authentication rules and authentication principles and presents the authentication technology details,implementation methods as well as a portion of the codes. Keywords PHP AJAX Web Forms authentication 用PHP、ASP、JSP等动态语言实现服务器端验证数据的合法性 0引 言 验证输入数据是高质量安全软件应用的必要保证。在 WEB应用环境下,验证是尤其敏感的一部分,因为非法的数据 存在破坏应用功能的潜在危险,甚至可以使最敏感的应用领域 的数据库崩溃。 然后再执行其他操作。验证内容与客户端验证相似。如文献 [4—6]。(3)客户端和服务器端相结合的验证,客户端验证是 服务器端验证的良好补充,服务器端验证是必须的,如文献 [7]。 以上3种Web表单验证技术存在的问题有 j:(1)客户端 验证无法调用后台数据库获得数据来验证表单数据的合法性, 并且客户端验证是可以绕过去的,只要禁用活动脚本就可以不 输入数据的验证是指检查用户输入的数据是否和先前定义 好的规则相符。这些规则是根据应用的商业标准来建立的。例 通过验证而提交表单。(2)服务器端验证表单受HTrP的限制, 因为HTrP是一种无状态的协议。(3)在提交一个表单网页时, 用户需要等待整个网页加载。 针对以上问题,本文实现了一种在PHP环境下通过AJAX 技术验证表单的方法 从而建立更加友好和响应更加敏捷的表 单验证技术。 如,如果要求日期按照“YYYY.MM.DD”格式输入,那么“09/9/ 22”这个日期就被认为是无效的。E.mail地址和电话号码也是 这样的例子,它们需要按照有效的格式进行检查。 1 Web表单验证 基于浏览器/服务器(B/S)结构的Web应用系统大多利用 表单来处理数据录入,因此Web表单验证是保证录入数据有效 性的重要措施之一。Web表单验证的方法通常有以下几种: (1)客户端验证,这种验证是把表单提交到服务器之前,先要通 过客户端JavaScript、Jscript和VBSeript等脚本语言进行端验证, 2关键技术 2.1 AJAX技术 AJAX是一种创建交互式网页应用的开发技术,它提供了 一种可以调用后台服务器获得数据的客户端JavaScript技术。 避免用户不小心填写错误而将数据提交到服务器。这些验证过 程大致包括:非空验证、字符串长度验证、数据类型验证和满足 与传统的Web应用不同,MAX采用异步交互过程 。访客请 求支持AJAX的网页的工作流程如图1所示。 某一规则的验证(通常使用正则表达式)。如文献[I一3],其中 文献[3]提出了一种通用的JavaSeript客户端表单验证方案。 (2)服务器端验证,这种验证是把表单提交到服务器之后,先采 收稿日期:2010—10—19。甘肃省自然科学基金项目(096PdZA 021)。杨生举,助理研究员,主研领域:科技情报研究与应用开发。 

第7期 杨生举等:PHP环境下AJAX表单验证技术研究 145 AJAX表单验证既实现了在表单提交后通过服务器端验证 表单数据,又实现了在用户客户端的JavaScript验证,而在整个 ’ 者I厂r帅相J criD 的日 I应 验证过程中没有中断用户的活动,是合理的表单验证。 一ii'eb客 端 _1日vascr:Dt代屿向雌 务器发送不uJ见调用——・ ▲ l 服筹赫对发送请求 lI iI  的散摊进行响止 l I'eb服瞽器 4 AJAX表单验证实现 4.1验证规则 以某一系统的用户注册信息为例,选用表单验证最常用的 用户名、密码、出生年月Et、E—mail、电话号码、手机号等信息进 行验证。按照以下规则来检查输入数据:用户名不能是数据库 一且 蒜 一 图1 AJAX调用工作流程图 AJAX优点有:(1)更迅捷的响应速度,AJAX应用可以仅向 服务器发送并取回必需的数据,因此在服务器和浏览器之间交 中存在的,由5—25位字母、数字或下划线组成;密码不能为 换的数据大量减少,极大地提高系统性能。(2)Web部分刷新, 空,由6—20位字母、数字或下划线组成;出生年月日必须合法, 就是能在不更新整个页面的前提下维护数据。这使得Web应 且格式为“YYYY.MM—DD”;E—mail必须是xx@XX.XX格式;电话 用程序更为迅捷地回应用户动作,避免了在网络上发送那些没 号码必须是区号一号码格式,并且至少为7位数字;手机号必须 有改变过的信息。(3)AJAX不需要任何浏览器插件,但需要用 是…1’开头的11位数字。注册界面如图3所示。 户允许JavaScript在浏览器上执行 …。 2.2 PHP技术 PHP是一种在服务器端执行的嵌入HTML文档的脚本语 言,语言的风格类似于C语言,被广泛的运用。PHP独特的语 法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或 者Perl更快速地执行动态网页;PHP将程序嵌入到HTML文档 中去执行,执行效率比完全生成HTML标记的CGI要高许多; PHP还可以执行编译后代码,编译可以达到加密和优化代码运 行,使代码运行更快的效果;PHP能实现所有的CGI的功能,而 图3用户注册界面 且支持几乎所有流行的数据库以及操作系统 。 4.2代码实现 当用户移开输入元素时生成输入元素的onBlur事件,它通 3 AJAX表单验证原理 过两个参数触发JavaScript函数validate()一一域值和域ID。这 个函数将向脚本validate.php发送异步H1TrP请求,以处理 客户端页面刚载人时,值属性是空的,当用户填写完表单的 AJAX验证。 某一项内容并将光标移开后,域值被发送到服务器,系统通过 validate.js实现客户端功能。在validate.js中,验证函数向 AJAX实时地将验证结果返回给客户。如果验证失败,将显示 服务器发送一个AJAX请求。初始化AJAx请求的具体过程 一个友好的错误消息,向用户通报这个域的验证结果。之后继 为:(1)建立一个XMLHnpRequest实例;(2)建立远程服务器地 续填写表单的其他内容,执行后台服务器调用来验证表单项,每 址;(3)初始化验证请求的缓存,然后用函数处理每个表单域的 验证一项都实时地将验证结果返回给客户。这时值属性不再为 验证。主要代码如下: 空,避免了表单由于验证错误而重载。表单的每一项都通过 function validate(inputValue,fieldlD){ AJAX实时验证完后提交表单执行服务器验证,同时使用会话 //连接服务器 变量来保存用户输入,以避免验证失败和表单刷新。如果验证 try{ //仅在XMLHttpRequest对象空闲并且缓存不为空时继续 成功直接进入系统进行后续操作;验证失败则给出错误提示,并 if((xmlHttp.readyState==4 I I xmlHttp.readyState:=0)&& 将光标定位在错误之处,用户可以重新输入,系统重复执行 cache.1ength>0){ AJAX验证步骤。 vat cacheEntry=cache.shitf(); //从缓存获取一个新的参数集 xmlHttp.open(”POST",serverAddress,true); AJAX表单验证流程如图2所示。 //构造一个服务请求来验证取出的数据 xmlHttp.setRequestHeader(”Content—Type”, applicatiort/x—WW3V— form—urlencoded”); 癌过 xmlHttp.onreadystateehange=handIeR questStateChange; mx 窭对 xmlHttp.send(cacheEntry); 地将 } 聩证 鲢果 } 返g 精窖 } ’0 首先监视服务器端的状态改变,xmlHttp的属性readyState 表示服务器端的状态,如果状态是0或者4,是指没有活动的请 求,此时就可以发送一个新请求。当发送新请求时,可以使用从 图2 AJAX表单验证流程图 缓存中读出的数据,它已经包含了格式化的问询串。处理服务 

146 计算机应用与软件 计算机应用与软件,2010,27(3):75—77, 2011丘 器响应的函数是handleRequestStateChange,并且每次从服务器 成功接收响应时依次调用readResponse()。 Validate.php处理客户的AJAX调用,同时处理表单提交时 [1 0]AJAX.百度百科[EB/OL .http://baike.baidu.corn/view/99.htm? fr=ala011. 的验证。AJAX验证由ValidateAJjax方法执行,结果用来组成一 个返回给客户的XML文档。支持验证功能的类叫做validate, [1 1]PHP.百度百科[EB/OL].http://baike.baidu.corn/view ̄99.htm? fr=ala011. ——它嵌入在一个名为validate.class.php的脚本处理里,关键代码 如下所示: <?php //支持Ajax验证的类 class Validate { //支持Ajax验证,校验~个单一的值 public function ValidateAJAX(¥inputValue,¥fieldlD){ switch(¥fieldlD){ //检查哪个域应该被验证并执行验证 case txtPhone : //检查电话号码是否有效 retum¥this一>validatePhone(¥inputValue): break; I p ate Eunction validatePhone(¥value){ //验证电话号码,格式:####一 #### # return(!eregi( [0—9]{4{一一 [0~9]{7} ,¥value))?0 5结语 基于浏览器/服务器的开发模式已经成为现阶段应用系统 开发的主流,在应用系统中,最常见的功能是表单验证操作。传 统的Web表单验证程序存在界面闪烁、受HTI"P的限制、页面全 部刷新、用户等待时间过长等问题。PHP环境下AJAX表单验 证技术利用AJAX异步无刷新、快速响应、节省网络带宽等性能 特点,大大提高了Web界面的响应速度,为用户提供更为自然 的浏览体验。 参考文献 [1]汪健峰.使用JavaScfipt语言进行表单脸证[J].电脑编程技巧与维 护,2006(7):29—34. [2 j张蕊,高张.利用js文件来优化网站表单验证和提交代码[J].电 脑编程技巧与维护,2008(11):85—86. [3]徐卫英.基于JavaScifpt的验证表单通用方案的设计与应用[J].计 算机时代,2010(4):43—45. [4]常中华.用ASP增强表单验证程序的实现 J .电脑编程技巧与维 护,2005(4):27—29. [5]于天恩.PHP精解案例教程 M].北京:清华大学出版社,2007:1ll l】6. [6]杨会芹,姚文琳.一个可复用的表单验证类的设计与实现[J].华 南金融电脑,2007(3):104—107 [7]屠晓云.基于Struts的验证方式的研究[J].福建电脑,2008(11): 51—52. [8]Darie C,Brinzarea B,等.AJAX and PHP web开发[M].王德民,王 新颖,等译.北京:人民邮电出版社,2007. [9]殷旭,廖斌,张志华,等.基于AJAX工作流表单的研究与应用[J]. (上接第127页】 图2校园某学生活动仿真 由以上整个系统的初始状态,可以得到以下变量的矢量值: S:{1,0.9,0,0.8,0,0.7,0,0,0.9,0,0,0} { l】, 12; 21,W22;∞3l, 32, ”;∞4j,W42;W51,W52} =}0.2,0.8;0.6,0.4;0.3,0.7;0.9,0.1;1;0.5,0.5} d={0.9,0.8,0.9,0.9,0.9} 口:{0.7,0.6,0.7,0.7,0.6} 运用算法3,则依次点燃变迁 ,t2, , ,t4},最后得到 的结果为s ={1,0.9,0,0.8,0.828,0.7,0,0.712,0.9,0, 0.709,0};去听报告可信度为o,在学习可信度为o.828,考试 成绩好可信度为0.712,评为三好学生可信度为0,709,去打篮 球可信度为0。 4结语 本文在用FPN形式化描述上下文信息知识,并对FPN模型 做进一步改进,且提出始于变迁的推理算法,有效解决了“或逻 辑”问题;并对推理算法进一步改进,从而降低了空间复杂度和 时间复杂度。FPN其中的一些参数,例如,权值、阙值、可信度 等,它们通过人们长期经验获得,但是难以精确获得;下一步工 作是研究具有高效率学习能力的FPN,实现对参数的优化调整。 参考文献 [1]Mark W.The computers for the twenty-ifrst century[J].Scientiifc A- merican,1991,265(3):94—104. 2]张林.基于模糊Petri网的电力系统故障诊断[D],江西:南昌大 学,2007. [3]吴哲辉.Petri网导论[M].北京:机械工业出版社,2006. [4]Pan Jian,Huang Zhongdong,Mao Guohong,et a1.A Context Awareness architecture for Mobile Learning based on Fuzz)r Petif Nets[J].IEEE Computer Society,2006. [5]唐国维,齐丽丽.基于加权FPN的聚驱综合调整系统决策分析 J].计算机仿真,2007,24(7):1—4. 


发布者:admin,转转请注明出处:http://www.yc00.com/web/1709453466a1628459.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信