2013-10-07 32 views
1

你好,我目前正在登錄系統上工作,但我有點卡住了點,是PHP應該檢查,並說沒有填寫表格或者輸入的值不正確。它表明「De gebruikersnaam是沒有用的!」但它不驗證用戶是否存在於數據庫中。如何顯示密碼或登錄是否不正確

<?php 
if(($_SESSION['sessieinlog']) && ($_SESSION['sessiewachtwoord'])) 
{ 
    header ("Location: overzicht.php"); 
} 
elseif(($_POST['gebruikersnaam']) && ($_POST['wachtwoord'])) 
{ 
    $username = mysql_real_escape_string($_POST['gebruikersnaam']); 
    $password = md5(mysql_real_escape_string($_POST['wachtwoord'])); 
    $checklogin = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '".$username."' AND wachtwoord = '".$password."'"); 
    if(mysql_num_rows($checklogin) == 1) 
    { 
     $row = mysql_fetch_array($checklogin); 
     $_SESSION['sessieinlog'] = $username; 
     $_SESSION['sessiewachtwoord'] = 1; 
     header ("Location: overzicht.php"); 
    } 
    elseif(mysql_num_rows($checklogin) == 0) 
    { 
     //Gebruikersnaam 
     if(empty($username)) 
     { 
      print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>'; 
     } 
     elseif ($checklogin->gebruikersnaam !== $username) 
     { 
      print '<p class="form-error">De gebruikersnaam is niet bekend!</p>';   } 
     else  
     { 
      $gebruikersnaamakkoord = true; 
     } 
     //Wachtwoord 
     if ($gebruikersnaamakkoord == true) 
     { 
      if (empty($inwachtwoord)) 
      { 
      print '<p class="form-error">Het wachtwoord is niet ingevuld!</p>'; 
      } 
      elseif ($checklogin->wachtwoord !== $password) 
      { 
      print '<p class="form-error">Het wachtwoord is niet correct!</p>';     } 
     } 
     } 
    } 
    else 
    { 
    } 
    ?> 

感謝任何人誰可以幫助初學者這樣,我完全新到PHP,並希望任何形式的幫助!

+3

只是一個側面說明:您在使用廢棄的'mysql'功能,我建議你使用'mysqli'或'PDO' 。 – Luke

+0

謝謝,我已經注意到了,但是因爲我對這個完全陌生,所以我認爲使用舊功能會更容易,因爲他們更多地發現它們。 –

+0

小費: 1.使用if(isset($ _ SESSION ['uwVariable'])檢查會話是否存在 2.不要使用MD5,至少要使用Sha1 + Salt,或者如果你想完全正確使用Bcrypt.http://stackoverflow.com/a/17073604/1063823 – Duikboot

回答

0

這裏

else if(mysql_num_rows($checklogin) == 0){ 
// script from here will be called only if $checklogin is empty 
// that means you can't call 
else if ($checklogin->gebruikersnaam !== $username) 
//here 
} 

確定希望它有助於

<?php 

if (($_SESSION['sessieinlog']) && ($_SESSION['sessiewachtwoord'])) { 
header("Location: overzicht.php"); 
} 
if(isset($_POST['submit'])){ 
if ((!empty($_POST['gebruikersnaam'])) && (!empty($_POST['wachtwoord']))) { 
$username = mysql_real_escape_string($_POST['gebruikersnaam']); 
$password = md5(mysql_real_escape_string($_POST['wachtwoord'])); 

$checklogin = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '" .$username . "' AND wachtwoord = '" . $password . "'"); 
if (mysql_num_rows($checklogin) == 1) { 
    $row = mysql_fetch_array($checklogin); 
    $_SESSION['sessieinlog'] = $username; 
    $_SESSION['sessiewachtwoord'] = 1; 
    header("Location: overzicht.php"); 
    } else if (mysql_num_rows($checklogin) == 0) { 
    //print username or password is incorrect 
    // if you want to know which one is incorrect you ve to do two another query to know which one is correct 
} 
} else { 
if (empty($_POST['gebruikersnaam'])) { 
    print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>'; 
} else { 
    print '<p class="form-error">Het wachtwoord is niet ingevuld!</p>'; 
} 
} 
} 
?> 
+0

感謝這似乎工作,但它顯示'德gebruikersnaam是niet ingevuld!已經在頁面刷新或新窗口沒有提交任何數據,我不知道它是從哪裏來的。 –

+0

這是因爲沒有條件,應該何時應該調用這個函數。所以現在將在提交表單後調用它。立即嘗試 –

+0

嗯,當然,愚蠢的我 - .-。感謝所有的幫助,它似乎現在以我想要的方式工作。你是最好的! –

0

我不知道你對這一行,你要比較你的查詢檢查什麼(而不是任何值)對發佈用戶名:

elseif ($checklogin->gebruikersnaam !== $username) 

$checklogin將不包含值gebruikersnaam我不認爲,這是你的查詢結果變量。

0

嘗試......

if  (empty($username)) 
           { 
            print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>'; 

           } 

         elseif ($checklogin->gebruikersnaam !== $username) 
           { 
            print '<p class="form-error">De gebruikersnaam is niet bekend!</p>';       } 

         else  
           { 
            echo mysql_error(); // $gebruikersnaamakkoord = true; 

           } 

我認爲這可能幫助。

0

試試這個代碼
我只是改變mysql_num_rowsmysql_affeted_rows試試這個

 if(mysql_affected_rows()) 
    { 
     $row = mysql_fetch_array($checklogin); 

     $_SESSION['sessieinlog'] = $username; 
     $_SESSION['sessiewachtwoord'] = 1; 

     header ("Location: overzicht.php"); 
    } 

    else 
    { 
      //Gebruikersnaam 

        if  (empty($username)) 
          { 
           print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>'; 

          } 

        elseif ($checklogin->gebruikersnaam !== $username) 
          { 
           print '<p class="form-error">De gebruikersnaam is niet bekend!</p>';       } 

        else  
          { 
           $gebruikersnaamakkoord = true; 
          } 

     //Wachtwoord 

          if ($gebruikersnaamakkoord == true) 
          { 
           if (empty($inwachtwoord)) 
           { 
            print '<p class="form-error">Het wachtwoord is niet ingevuld!</p>'; 
           } 

           elseif ($checklogin->wachtwoord !== $password) 
           { 
            print '<p class="form-error">Het wachtwoord is niet correct!</p>'; 
           } 
          } 

    } 
0

檢查如果輸入用戶名密碼&是你應該使用JavaScript(或jQuery的)做的。

要檢查輸入的值是否正確,您必須連接到您的數據庫。

有不同的方法來做到這一點。您可以在gebruiekrsnaam ='用戶名'處獲取所有用戶數據並手動檢查密碼,但這只是不好的做法

您可以啓動2個查詢,1只在用戶名上選擇,1在用戶名和密碼上選擇。

但第三個是我的選擇:只需同時檢查用戶名和密碼。如果找不到任何結果,請告訴用戶「用戶名或密碼不正確」。但不要指定什麼,所以腳本無法開始猜測特定用戶的密碼。

相關問題