2016-11-22 4 views
0

Hallo ich bin versucht, Login-Formular übergeben, aber es gibt mir Erfolg die ganze Zeit, wenn es falsche Benutzer oder Benutzer in der Datenbank, das ist mein Code =>versuchen, Erfolg oder nicht von Ajax zu HTML-Login-Formular

dies ist der ajax-Code =>

$J(document).ready(function() { 
    $J("#add_err").css('display', 'none', 'important'); 
    $J("#login").click(function() { 
     email = $J("#email").val(); 
     password = $J("#password").val(); 
     $J.ajax({ 
      type: "POST", 
      url: "login.php", 
      data: "email=" + email + "&password=" + password, 
      success:function (data) { 
       if (data) { 
        //$("#add_err").html("right username or password"); 
        window.location = "dashboard.php"; 
       } else { 
        $J("#add_err").css('display', 'inline', 'important'); 
        $J("#add_err").html("<img src='images/alert.png' /> <b>Wrong username or password </b>"); 
       } 
      }, 
      beforeSend: function() 
      { 
       $J("#add_err").css('display', 'inline', 'important'); 
       $J("#add_err").html("<img src='images/spin.gif' /> Loading...") 
      } 
     }); 
     return false; 
    }); 
}); 

dies die Form ist => in der Datei login.php

<form action="" method="POST" id="loginForm"> 
      <div class="form-group has-feedback"> 
       <input type="email" name="email" id="email" class="form-control" placeholder="Email"> 
       <span class="glyphicon glyphicon-envelope form-control-feedback"></span> 
      </div> 
      <div class="form-group has-feedback"> 
       <input type="password" name="password" id="password" class="form-control" placeholder="Password"> 
       <span class="glyphicon glyphicon-lock form-control-feedback"></span> 
      </div> 
      <div class="row"> 
       <div class="col-xs-8"> 
        <div class="checkbox icheck"> 
         <input type="checkbox" name="iCheck" /> 
         <b>Remember me </b> 
         <script> 
          $J(document).ready(function() { 
           $J('input').iCheck({ 
            checkboxClass: 'icheckbox_flat-blue', 
            radioClass: 'iradio_flat', 
            increaseArea: '-10%', // optional 
           }); 
          }); 
         </script> 
        </div> 
       </div> 
       <!-- /.col --> 
       <div class="col-xs-4"> 
        <button type="submit" id="login" class="btn btn-primary btn-block btn-flat">Sign In</button> 
       </div> 
       <!-- /.col --> 
      </div> 
     </form> 

und das ist der Beitrag i Datenbank bewegen => in derselben Datei login.php

if (isset($_POST['email']) && isset($_POST['password'])) { 
session_start(); 
$dbConnect = new dbconnect(); 
$email = $_POST['email']; 
$password = $_POST['password']; 
$userData = $dbConnect->verify_login($email, $password); 
if (!$userData) { 
    echo "false"; 
}} 

varifylogin Funktion =>

public function verify_login($email, $password) { 
    $this->Connect(); 
    $sql = "SELECT email,password FROM `users_details` WHERE `email`='$email' AND `password`='$password' "; 
    if ($this->res = mysqli_query($this->ind_connect, $sql)) { 
     $num_row = mysqli_num_rows($this->res); 
     $row = mysqli_fetch_assoc($this->res); 
     if ($num_row == 1) { 
      echo 'true'; 
      $_SESSION['email'] = $row['email']; 
      $_SESSION['password'] = $row['password']; 
     } 
    } else { 
     echo 'errr'; 
    } 
    $this->Disconnect(); 
} 

ich weiß wirklich nicht, was zu tun Hilfe ist jetzt willkommen.

+0

'if (Daten) {' prüft ob die Variable nicht falsch ist, in y In unserem PHP-Skript geben Sie jedoch eine Zeichenkette zurück ('echo" false ";'). Deshalb ist die Variable 'data' gesetzt und nicht falsy. – empiric

+0

Können wir den Körper von verify_login Funktion –

+0

die Daten sind nicht falsch er Werte aus der Datenbank –

Antwort

0

In der Funktion: verify_login

Sie müssen einen wahren Wert boolean Typ zurückgeben, nicht als Text.

Dann verbessern Sie den Code wie folgt.

$userData = $dbConnect->verify_login($email, $password); 
if ($userData) { 
    echo "true"; 
}else{ 
    echo "false"; 
} 
} 

In Ajax-Aufruf

success:function (data) { 
if (data=='true') { 
//.. 
}else{ 
//.. 
} 
} 

Ein anderer Weg ist, um php eine json zu machen zurückzukehren, und in Ajax es gibt Datentyp: "json"

$.ajax({ 
    url : "", 
    type : "POST", 
    dataType : 'json', 
    success : function(data) { 
     console.log(data); 
     if(data.success==true){ 

     }else{ 
     } 
    } 
}); 

In der Datei php:

echo json_encode(array('success'=>true)); 
+0

in Verifaylogin beginnen ich true/false zurück und ich ändern das Echo von Daten, aber jetzt ist es nie passieren ... die Ajax-Daten nicht erhalten "true" :( –

+0

ich kenne das Problem login.php Seite ist nicht klar mit dem Echo wahr, er hat mehr HTML-Zeug. Ich muss die Seite löschen und nur die "True" oder "False" Echo senden –