jQuery Validate PHP Tepki

2 Cevap php

My problem is that I want to validate an email address with jquery. Not only the syntax but rather if the email is already registered. There are some tutorials but they are not working! At first the Jquery Code:

<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> 

Ve şimdi PHP-Kodu:

<?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";
    }
?>

Ben de FALSE döndürür / DOĞRU dönmek çalıştı, ancak bu her zaman "e-posta kayıtlı" görüntüler. json_encode da işe yaramadı.

Thanks a lot!

2 Cevap

remotemail.php olursa olsun kullanılır ne e-posta adresi false dönmek için değiştirin. Bu işe almak görmek (yani doğrulama başarısız). İkincisi, e-postalarınızı kontrol için PHP kodu olarak-doğru ... sadece tablodaki ilk e-posta adresini kontrol eder ve muhtemelen tüm e-posta adresleri için true dönecektir görünüyor. Aşağıdaki gibi yeniden yazılmalıdır:

// do not forget to add addslashes in the line below, if necessary
$auslesen1 = "SELECT 1 FROM flo_user WHERE Email = '" . $_POST['Email'] . "'"; 
$auslesen2 = mysql_query($auslesen1, $conn); 
$auslesen3 = mysql_fetch_assoc($auslesen2);

echo $auslesen3 === false
    ? "true"   // email does not exist
    : "false"; // email exists

Dan docs değeri olsun parametre olarak geçirilecek gibi görünüyor. $ _GET ['E-posta'] ile $ _POST ['E-posta'] değiştirin ve sizin için çalıştığını görmek.

Ayrıca in_array dizi çok boyutlu diziler, işlemez. Belki daha iyi bir teknik, SQL deyimi bir şey gibi bir WHERE yan tümcesi eklemek olacaktır

$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;
}