2010-05-11 55 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; 
}