2016-11-04 1 views
1

Ich verwende ein PHP-Skript, um Daten aus einer MySQL-Datenbank zu holen und zu überprüfen, ob das eingegebene Passwort mit dem in der Datenbank übereinstimmt. Wenn ja, sollte der Benutzer auf eine Site umgeleitet werden. Wenn ich es jedoch ausführe, wird es die Nachricht anzeigen, die als $ errorMessage definiert wird.PHP-Skript zum Abrufen von MySQL-Daten funktioniert nicht

Was mache ich falsch? Das Skript ist für ein Login-Formular mit Bootstrap.

Vielen Dank im Voraus!

<?php 

$link = mysqli_connect("localhost","root","password") or die("Verbindung zum Server nicht möglich. Bitte kontaktiere uns."); 
mysqli_select_db($link,"berufs_schule"); 

if(isset($_REQUEST['submit'])){ 
$errorMessage = "Ein Fehler ist aufgetreten."; 
$email=$_POST['email']; 
$password=$_POST['password']; 

if ($errorMessage != "") { 
echo "<p class='message'>" .$errorMessage. "</p>"; 
} 
else{ 
$query = "SELECT email, password FROM members WHERE email='$email'"; 

while ($rows = mysqli_fetch_array($query)): 

     $name_db = $rows['name']; 
     $password_db = $rows['password']; 

     if(md5($password) == $password_db){ 

      echo "<meta http-equiv='refresh' content=\"0; url=success.html\">"; 

     } else { 

      echo "<p class='message'>Passwort falsch, bitte versuche es erneut!</p>"; 

     } 
     endwhile; 
} 
} 
?> 

EDIT:
ich den Scheck für errormessage entfernt jetzt, und es jetzt zeigt mir nur einen leeren Bildschirm und nicht ausgibt, dass das Passwort nicht korrekt ist ("Passwort falsch, Bitte versuche es Erneut! ") oder leite mich zur success.html um. Was kann der Fehler sein?

EDIT 2: Testen Sie das Skript bei http://test.enderpixel.net/berufs.schule/login.html

+0

Welche Art von errorMessage erhalten Sie? Bitte editieren Sie Ihre Frage mit dem Fehler –

+1

Da Sie zuerst '$ errorMessage =" Ein Fehler ist aufgetreten. ";' Gesetzt haben, wird die eigentliche Anfrage nie ausgeführt. Dieser Teil 'if ($ errorMessage! =" ") {// ...} else {/ ...}' überspringt die Ausführung der Abfrage, wenn '$ errorMessage' gesetzt ist. – Cyclonecode

+0

Ah ich sehe was das Problem ist. Ihre $ errorMessage ist so definiert, dass sie nie leer ist. –

Antwort

1

Der Code hatte mehrere Fehler in ihm (errormessage Erklärung, Syntaxfehler, offen für SQL-Injektion), so an diesem einen Blick nehmen, Sie könnte es hilfreich finden.

<?php 
$errorMessage = "Ein Fehler ist aufgetreten."; 

$link = mysqli_connect("localhost","root","") or die("Verbindung zum Server nicht möglich. Bitte kontaktiere uns."); 
mysqli_select_db($link,"trainingcentre"); 

if (isset($_REQUEST['submit'])) { 

    // If either email or password is missing, show error emssage 

    if (empty($_POST['email']) || empty($_POST['password'])) { 

     echo $errorMessage; 

    } else { 

     // Lets escape user input 
     $email = mysqli_real_escape_string($_POST['email']); 

     $sql = "SELECT email, password FROM members WHERE email='$email'"; 

     $query = mysqli_query($link, $sql); 

     // If query was successfull 
     if ($query) { 

      while ($rows = mysqli_fetch_array($query)) { 

       $password_db = $rows['password']; 

       if (md5($password) == $password_db) { 

        echo "<meta http-equiv='refresh' content=\"0; url=success.html\">"; 

       } else { 

        echo "<p class='message'>Passwort falsch, bitte versuche es erneut!</p>"; 

       } 
      } 

     } else { // If query failed, show error message 

      echo $errorMessage; 

     } 

} 

Nicht kopieren-einfügen (ich habe es nicht getestet), nur durchsehen.

+0

Ich habe gerade meinen Code geändert und die Fehler, auf die Sie hingewiesen haben, behoben und es funktioniert immer noch nicht. Es zeigt nicht die $ errorMessage, nur einen leeren Bildschirm wieder.Wenn Sie es selbst testen möchten, gehen Sie zu http://test.enderpixel.net/berufs.schule/login.html – myst02

Verwandte Themen