ajax 注册页面表单的验证

#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