jQuery验证插件和服务器端php验证

时间:2012-09-13 16:54:17

标签: php jquery validation

我有关于php验证的问题,我有这个脚本

$(document).ready(function(){
// validate signup form on keyup and submit
var validator = $("#contactform").validate({
    rules: {
        email: {
            email: true,
            required: true,
            remote: { url: "test.php", type: "post" }
        }
    },
    messages: {
        email: {
            email: "Enter a valid email adress",
            required: "This input is required",
            remote: "Email adress is in use"
        }
    },
    // set this class to error-labels to indicate valid fields
    success: function(label) {
        label.addClass("checked");
    }
});
});

,test.php的验证脚本是

define('__ROOT__', dirname(dirname(dirname(__FILE__)))); 
require_once (__ROOT__.'/config.php');

$email = mysql_real_escape_string($_POST['email']);
$SQL = $mysqli->query("SELECT * FROM users WHERE email='$email'");
    If($SQL->num_rows == 0) {
        echo 'true';
    } else {
        echo 'false';
    }

如何从php文件中进行验证更加复杂如下:我想添加一条规则来检查电子邮件是否有效(以防万一有人没有javascript活动)但是如果我尝试像如果电子邮件地址在数据库中,验证脚本不会返回错误消息

If(filter_var($email, FILTER_VALIDATE_EMAIL) == false) {
$SQL = $mysqli->query("SELECT * FROM users WHERE email='$email'");
    If($SQL->num_rows == 0) {
        echo 'true';
    } else {
        echo 'false';
    }
}

1 个答案:

答案 0 :(得分:1)

remotejquery.validate的使用存在一些问题。检查您是否执行了以下操作:

1)请确保您仅使用jQuery版 1.6.1 及以上版本。

2)使用“synchronous”选项进行远程执行(默认为异步),并将async选项设置为false

<强>用法:

$("#contactform").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: { url:"check.php", async:false }
    }
  }
});