1.关于表单验证:
一般有两种验证方法: 客户端的(通过JavaScript); 服务器端的;
a)原来客户端JavaScript的缺点是:所有数据及逻辑操作完全在客户端,因此要涉及到服务器端的数据问题时,都需要最后点击按钮,到服务器端进行读取验证。
现在改进的方法,Ajax实现更友好的客户端验证,实现客户端实时异步地访问服务器端的数据,完成(本该需要在服务器端才能进行的验证)
b)为了更加安全,通常还需要在Server端添加另一层次的验证,确保数据正确;
2.线程安全的AJAX:
a)所谓的 线程安全也就是同步这个经典的问题; 即一个代码块在多个线程同时执行的时候能够正确的执行,则是线程安全的;
b)AJAX中的同步问题主要指:当Client端的操作触发事件向Server端发送异步请求时,如果同一时间有多个这样的请求(XMLHttpRequest发送的请求),Server端就需要保证能够按顺序地并且正确无误地对每一个请求做出响应,而且时间间隔尽可能短一些;
c)解决这个问题的常用方法,就是AJAX的JS部分, 定义一个FIFO的消息队列,当有新的事件动作触发了JS函数,先把它加入到消息队列中;另一方面如果XMLHttpRequest对象状态空闲,就从这个消息队列中取得消息异步地发送到Server方;(会注意到这个消息队列其实是在Client端的)
3.
构建一个表单验证程序,需要两层验证: AJAX验证以及Server端验证:
a)AJAX验证在Client端用户的操作过程中事件触发引起的,AJAX验证完成之后,实时的将验证的结果返回到当前页面中;(注意整个过程页面没有跳转)
b)Server端的验证是在用户点击提交按钮之后完成的,通常需要在完成验证之后(如果正确无误通过,则跳转到成功页面;否则需要返回到当前页面,并在当前页面中预添用户刚才输入的信息-因此这里不能使用单纯的html文件而需要PHP文件)
4.一个Ajax和PHP双重验证的例子:
a)index.php定义注册需要填写的表单,注意表单中的值,以及出错信息的class属性实现是否显示;
index_top.php为index.php需要的变量、初始化数据等
b)validation.css定义整个外观和显示;
c)validation.js
首先定义基本的js响应如onload事件的setFocus,onfocus事件的OnHightlight等
此外,定义了AJAX所必需的:XMLHttpRequest对象的创建、创建FIFO请求缓冲队列cache=new array(),以及XMLHttpRequest对象向Server的实时异步请求以及回调函数;
d)Server段部分:
config.php, error_handler.php
validation.php: New完Validate对象之后,首先判断验证的类型,然后分别进行PHP验证或者Ajax验证:
PHP验证,调用类的成员函数ValidatePHP,根据验证结果进行页面跳转;
AJAX验证,调用类的成员函数ValidateAJAX,根据验证结果,生成XML响应并返回到客户端;
validate.class.php:
定义了用于验证的类Validate,构造函数/析构函数负责数据库链接和释放;
定义ValidatePHP以及ValidateAJAX两个成员函数,两者的公共代码可以抽出来,定义为新的private成员函数。
一般有两种验证方法: 客户端的(通过JavaScript); 服务器端的;
a)原来客户端JavaScript的缺点是:所有数据及逻辑操作完全在客户端,因此要涉及到服务器端的数据问题时,都需要最后点击按钮,到服务器端进行读取验证。
现在改进的方法,Ajax实现更友好的客户端验证,实现客户端实时异步地访问服务器端的数据,完成(本该需要在服务器端才能进行的验证)
b)为了更加安全,通常还需要在Server端添加另一层次的验证,确保数据正确;
2.线程安全的AJAX:
a)所谓的 线程安全也就是同步这个经典的问题; 即一个代码块在多个线程同时执行的时候能够正确的执行,则是线程安全的;
b)AJAX中的同步问题主要指:当Client端的操作触发事件向Server端发送异步请求时,如果同一时间有多个这样的请求(XMLHttpRequest发送的请求),Server端就需要保证能够按顺序地并且正确无误地对每一个请求做出响应,而且时间间隔尽可能短一些;
c)解决这个问题的常用方法,就是AJAX的JS部分, 定义一个FIFO的消息队列,当有新的事件动作触发了JS函数,先把它加入到消息队列中;另一方面如果XMLHttpRequest对象状态空闲,就从这个消息队列中取得消息异步地发送到Server方;(会注意到这个消息队列其实是在Client端的)
3.
构建一个表单验证程序,需要两层验证: AJAX验证以及Server端验证:
a)AJAX验证在Client端用户的操作过程中事件触发引起的,AJAX验证完成之后,实时的将验证的结果返回到当前页面中;(注意整个过程页面没有跳转)
b)Server端的验证是在用户点击提交按钮之后完成的,通常需要在完成验证之后(如果正确无误通过,则跳转到成功页面;否则需要返回到当前页面,并在当前页面中预添用户刚才输入的信息-因此这里不能使用单纯的html文件而需要PHP文件)
4.一个Ajax和PHP双重验证的例子:
a)index.php定义注册需要填写的表单,注意表单中的值,以及出错信息的class属性实现是否显示;
index_top.php为index.php需要的变量、初始化数据等
b)validation.css定义整个外观和显示;
c)validation.js
首先定义基本的js响应如onload事件的setFocus,onfocus事件的OnHightlight等
此外,定义了AJAX所必需的:XMLHttpRequest对象的创建、创建FIFO请求缓冲队列cache=new array(),以及XMLHttpRequest对象向Server的实时异步请求以及回调函数;
d)Server段部分:
config.php, error_handler.php
validation.php: New完Validate对象之后,首先判断验证的类型,然后分别进行PHP验证或者Ajax验证:
PHP验证,调用类的成员函数ValidatePHP,根据验证结果进行页面跳转;
AJAX验证,调用类的成员函数ValidateAJAX,根据验证结果,生成XML响应并返回到客户端;
validate.class.php:
定义了用于验证的类Validate,构造函数/析构函数负责数据库链接和释放;
定义ValidatePHP以及ValidateAJAX两个成员函数,两者的公共代码可以抽出来,定义为新的private成员函数。