2017-01-16 5 views
-1

Ich habe versucht, diesen Code für die Anmeldung verwenden, aber es funktioniert nicht. Wenn ich auf "Senden" klicke, passiert nichts. Als ich mich einloggen wollte, bekomme ich immer einen falschen Passwortfehler, aber mein Passwort ist korrekt. was soll ich machen?Login mit Ajax und PHP immer falsches Passwort

mein HTML

<form class="form-horizontal" id="loginform" method="post"> 
        <div class="form-group"> 
         <label for="userid" class="col-sm-3 control-label">User ID</label> 
         <div class="col-sm-9 has-feedback"> 
          <input type="text" class="form-control" id="userid" name="userid" placeholder="Enter Your User ID" required> 
          <span class="glyphicon glyphicon-user form-control-feedback"></span> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label for="password" class="col-sm-3 control-label">Password</label> 
         <div class="col-sm-9 has-feedback"> 
          <input type="password" class="form-control" id="password" name="password" placeholder="Enter Your Password" required> 
          <span class="glyphicon glyphicon-lock form-control-feedback"></span> 
         </div> 
        </div> 
        <div class="form-group"> 
         <div class="col-xs-4 col-xs-offset-8"> 
          <button type="submit" id="submit" class="btn btn-danger btn-block btn-flat">Sign In</button> 
         </div> 
        </div>     
       </form> 

mein Php

<?php 
     $userid = security($_POST['userid']); 
       $password = security($_POST['password']); 

       $query = mysqli_query($link,"SELECT * FROM user WHERE USER_USERNAME = '".$userid."' AND USER_PASSWORD = '".$password."'"); 
       $numrows = mysqli_num_rows($query); 
       if ($numrows!==0) 
       { 
        while($row = mysqli_fetch_assoc($query)) 
        { 
         @$_SESSION['session_userid'] = $row['USER_USERNAME']; 
         @$_SESSION['session_accounttype'] = $row['ACCESS_ID']; 
        } 
        //Location Depends on the User Type 
        if($_SESSION['session_accounttype']=="1") 
        { 
          echo 'true'; 
        } 
        } 
       else 
       { 
        echo 'false'; 
       } 
     ?> 

Mein JS

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

SQL-Injection-Schwachstellen, Fehlerunterdrückungsoperatoren ... Wenn Sie das debuggen, wo genau schlägt es fehl? Werden die erwarteten Werte an den Server gesendet? Ist die SQL-Abfrage das, was Sie erwarten? Was sind die Ergebnisse dieser Abfrage? Wie lautet die tatsächliche Antwort vom Server? Gibt es Fehler in der Antwort oder in den PHP-Protokollen? Sie sollten auch nach der Ausführung auf Fehler in der SQL-Abfrage prüfen. – David

+0

Hast du deine Passowords nicht "gehackt"? Ich meine, Sie haben ein Coding-Problem, aber Sie zeigen nicht alle relevanten Code hier, so kann ich wirklich nicht sagen! – JustOnUnderMillions

+0

Ich habe mein Passwort nicht hashed, weil es nicht notwendig ist –

Antwort

1

Warum sprechen andere Antworten das Salz für Passwort? Frage fragt, warum Passwort falsch war. Ich denke, dieser Code Fragen haben if ($ _ SESSION [ 'session_accounttype'] == "1")

Die session_accounttype nicht 1 Äq werden können?

0

so Kommentar kann nicht ... Es gibt viele Probleme mit diesem Beispiel.

  1. Der Absenden-Button sendet Ihr Formular automatisch an "/". Suchen Sie in Javascript nach preventdefault, um das Problem zu lösen.

  2. Sie verwenden Ajax Post mit einer Abfragezeichenfolge. Dies würde mit der Eigenschaft 'data' in jquery-Daten geschehen: {'userid': username, 'password': password}. Dann benutze $ _POST ['userid] und $ _POST [' password '] in PHP, um die Werte zu erhalten;

  3. SQL inject wird ein Problem werden. Aber ich kann sehen, dass Sie lernen und hoffen, dass dies nur ein Test ist, um Ihr Verständnis von Datenbanken zu verbessern.

  4. Hash Passwörter

+0

Ja das ist nur ein Test Ich weiß, wie man Injektion verhindert Ich möchte nur versuchen, Ajax Login –

+0

@ShermaineChaingan: '" Ich weiß, wie verhindere die Injektion "" - Warum machst du das nicht? Das Problem könnte sehr gut sein, dass Ihre SQL-Abfrage wegen der Sicherheitsanfälligkeit bei der Installation fehlschlägt. Wenn Sie eine mögliche Ursache des Problems beseitigen können, dann tun Sie das und das Problem selbst wird möglicherweise strittig. – David

+0

Ich habe das Tutorial gefunden, das Sie verwenden. Ich schlage vor, Sie versuchen ein anderes. Möglicherweise http://www.codingcage.com/2015/11/ajax-login-script-with-jquery-php-mysql.html Jedoch verwendet dieses die jquery Validierung, die außerhalb Ihres Bereichs sein könnte. –

Verwandte Themen