-3

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';
    }
}
4

1 に答える 1

1

remoteでの使用にはいくつか問題がありますjquery.validate。次のことを行ったかどうかを確認します。

1) jQuery バージョン1.6.1以降のみを使用していることを確認してください。

2)リモート実行に「同期」オプションを使用し (デフォルトは非同期)、asyncオプションを に設定しますfalse

使用法:

$("#contactform").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: { url:"check.php", async:false }
    }
  }
});
于 2012-09-13T17:25:42.020 に答える