ajax 注册页面表单的验证
发布于:2022-01-17 09:50:54
#1 lin1400
http://www.speedphp.com/interaction-ajax.html我使用了教程里面的ajax实现,想实现像百度一样的注册
假如我们只有一个用户名的表单,还有一个submit按钮
注册页面的jquery ajax
$('input').blur(function(){ //用户名框的blur事件
var username= $(this).val();
$.get('<{spUrl c=main a=checkUserName}>', 'username='+username, function(result){
$('ex1result').html(result); // 返回的数据直接显示在id=ex1result的span中。
});
});
控制器main的checkUserName,就是一些验证用户名的长度,例如下面的
if(strlen($this->spArgs("username"))>20){
echo "用户名长度太长";
}else{
echo "可以使用":
}
1 我输入25个字符 id=ex1result的span中显示“用户名长度太长”,这没问题 ; 我又点击了提交按钮submit (提交按钮没有任何的jquery),这时候显示注册成功 数据库里也哟一条记录 ,这就错了,因为 “用户名长度太长”。
2 我想实现的就是 a :
框的blur事件 可以显示 “”“用户名长度太长”“ 或者”“可以使用”“ 或者其他的一些提示
b: 点击表单的提交按钮也进行一次检测(因为点击”注册按钮“来到注册页面的时候那些提示的span是空的,这时点击表单提单也需要进行验证) 如果显示 ”用户名长度太长“ 就返回false 不能进行数据库的插入操作; 如果显示”可以使用“就进行数据库插入
2011-08-01 19:47:08
#2 jake
“点击表单的提交按钮也进行一次检测”用onsubmit或者jQuery的submit来做检测。
input可以通过jQuery的focusout在失去焦点的时候检测。
另外,一般来说。前端JS会控制在提交前检查部分表单值是否正常(比如说用户名长度),然后在表单提交后,也是需要再检查一次,这是为了安全起见(JS验证是可以跳过的)。
2011-08-01 21:19:51
#3 lin1400
jquery submit 可以引用上面我的 blur 吗? 就不用再写一遍一样的了 具体要怎么写 写个例子吧。。。
然后在表单提交后,也是需要再检查一次,这是为了安全起见 这是是用escape来过滤的哦?还需要其他的吗
2011-08-01 21:49:08
#4 jake
写个js函数就不用写两次了。
都需要escape,escape是防止数据库注入的,那是必须的。当然create等方式是自动escape的。
2011-08-01 21:54:38
#5 lin1400
http://www.speedphp.com/database-safe.html一般而言,安全过滤是在SpeedPHP框架中默认存在的,所以只在以下情况下,需要手动来过滤:
1 存在提交参数来需要进行数据库查找或插入、更新、删除数据。
2 只能用数组形式的条件。
这里的第二点好像写错了的?
2011-08-01 21:56:40
#6 jake
回复 5 lin1400 数组形式的条件是自动过滤的。因为条件$condition还支持字符串形式,但字符串形式需要自行escape
2011-08-01 22:01:29
#7 lin1400
1 就是jquery要写两次 JS就不用写两次哦?
2 所以只在以下情况下,需要
手动来过滤:
a : 存在提交参数来需要进行数据库查找或插入、更新、删除数据。
b :
只能用数组形式的条件。 //这句话好像真不对呀。。。
2011-08-01 22:22:42
#8 jake
那句话好像不太通顺。教程我稍候再看看,
jQuery也是JS,我的意思是写个JS函数在jQuery里面调用两次,那么就只需要写一次。
2011-08-01 22:29:11
#9 lin1400
还有一个问题 是spHtml的
我想前台都静态 那用户登录这块是不是不能sphtml
什么时候需要把spHtml后静态的页面给clear掉呢
sphtml是不是 不要 写在main的index里面?
2011-08-01 22:34:57
#10 jake
静态页面是不执行程序的,所以后台不能生成静态文件,登录验证也不可以。
clear掉是在编辑完静态页内容后。
sphtml 最好写在后台的控制器里面,由后台来控制。
2011-08-01 22:39:47