2016-11-04 41 views
1

我正在使用PHP腳本從MySQL數據庫讀取數據,並檢查輸入的密碼是否與數據庫中的數據匹配。如果是的話,它應該將用戶重定向到一個站點。但是,當我運行它時,它會顯示消息定義爲$ errorMessage。PHP腳本讀取MySQL數據不起作用

我在做什麼錯?該腳本用於使用引導程序的登錄表單。

在此先感謝!

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

編輯:
我刪除了檢查的errorMessage現在,現在它只是顯示我一個空白屏幕,不輸出的密碼不正確(「Passwort falsch,BITTE versuche ES erneut! 「)或將我重定向到success.html。錯誤是什麼?

編輯2:測試在http://test.enderpixel.net/berufs.schule/login.html

+0

你會得到什麼樣的errorMessage?請編輯您的問題,並提供錯誤 –

+1

由於您首先設置了'$ errorMessage =「Ein Fehler ist aufgetreten。」;那麼實際的查詢將永遠不會執行。如果設置了'$ errorMessage',這部分if($ errorMessage!=「」){// ...} else {/ ...}將跳過執行查詢。 – Cyclonecode

+0

啊,我看到了什麼問題。您的$ errorMessage被定義,所以它永遠不會是空的 –

回答

1

你的代碼腳本曾在它的多個錯誤(的errorMessage聲明,語法錯誤,開放的SQL注入),所以看看這個,你可能會發現它有用。

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

     } 

} 

不要複製粘貼(我沒有測試它),只是看看。

+0

我剛剛修改了我的代碼並修復了您指出的錯誤,但仍然無效。它不顯示$ errorMessage,只是再次顯示一個空白屏幕。如果您想親自測試,請訪問http://test.enderpixel.net/berufs.schule/login.html – myst02