2010-05-11 54 views
2

我的問題是,我想驗證與jQuery的電子郵件地址。不僅是語法,而且如果電子郵件已經註冊。有一些教程,但他們不工作! 起初jQuery代碼:jQuery驗證PHP響應

<script id="demo" type="text/javascript"> 
$(document).ready(function() { 
// validate signup form on keyup and submit 
var validator = $("form#signupform").validate({ 
    rules: { 
    Vorname: { 
    required: true, 
    minlength: 3 
    }, 
    Nachname:{ 
    required: true, 
    minlength: 4 
    }, 
    password: { 
    required: true, 
    minlength: 5 
    }, 
    password_confirm: { 
    required: true, 
    minlength: 5, 
    equalTo: "#password" 
    }, 
    Email: { 
    required: true, 
    email: true, 
    type: "POST", 
    remote: "remotemail.php" 
    }, 
    dateformat: "required", 
    ... 
</script> 

而現在的PHP代碼:

<?php 
    include('dbsettings.php'); 

    $conn = mysql_connect($dbhost,$dbuser,$dbpw); 
    mysql_select_db($dbdb,$conn); 

    $auslesen1 = "SELECT Email FROM flo_user"; 
    $auslesen2 = mysql_query($auslesen1,$conn); 
    $registered_email = mysql_fetch_assoc($auslesen2); 
    $requested_email = $_POST['Email']; 

    if(in_array($requested_email, $registered_email)){ 
     echo "false"; 
    } 
    else{ 
     echo "true"; 
    } 
?> 

我試圖返回TRUE/FALSE返回爲好,但這顯示 「電子郵件註冊」 的所有時間。 json_encode也沒有工作。

非常感謝!

+0

Grats,你一定是德國人! – 2010-05-11 08:39:53

+1

德語(和其他任何非英語)的代碼很難看。我也是德國人btw。 給你的變量有意義的英文名字。 「Auslesen」(「閱讀」)沒有意義。例如,而不是$ auslesen1,您應該使用$ sql和$ result而不是$ auslesen2。 此外,如果$ _POST ['Email']不存在,您的代碼將拋出E_NOTICE。 – ThiefMaster 2010-05-11 10:58:55

+0

因此,基本上,你所說的是,php代碼返回正確的值,但是你的javascript一直顯示false,不管php代碼返回什麼,是正確的?你嘗試過,'depends:function(){//做ajax調用}'? – Evochrome 2016-12-18 14:03:43

回答

0

docs該值似乎作爲get參數傳遞。用$ _GET ['Email']替換$ _POST ['Email'],看看它是否適合你。

另外in_array不處理數組是的多維數組。也許更好的技術是將一個WHERE子句添加到你的SQL語句中,就像

$email = mysql_real_escape_string($_GET['Email']); 
$sql = 'select Email from users where Email = '.$email; 
$result = mysql_query($query, $dbconn); 
$resultAsArray = mysql_fetch_assoc($result); 
if(count($resultAsArray)==0) { 
    echo true; 
} 
else { 
    echo false; 
}