2014-01-11 109 views
0

目前我正在一個網站上工作,並且遇到登錄腳本中的問題。登錄時出現錯誤PHP代碼

<?php 
    include 'includes/connect.php'; 
    include 'includes/core.php'; 
?> 
<?php 
    $user = sanitizeString($_POST['username']); 
    $pass = sanitizeString($_POST['password']); 

    if($user == "" || $pass = ""){ 
     $error = "Not all fields were entered<br />"; 
    } else { 
     $query = "SELECT username,password FROM admins WHERE username='$user' AND password='$pass'"; 
     if(mysql_num_rows(queryMysql($query)) == 0){ 
      print "Wrong Username/Password <br />"; 
      print "$user"; 
      print "$pass"; 
     } else { 
      $_SESSION['user'] = $user; 
      $_SESSION['pass'] = $pass; 
      print "Successfully Logged In. Redirecting..."; 
     } 
    } 
?> 
<html> 
    <head> 
     <title> 
      Login 
     </title> 
     <link rel="stylesheet" type="text/css" href="css/stylesheet.css"> 
    </head> 

    <body> 
     <div id="mainDiv"> 
      <h2>&nbsp;&nbsp;&nbsp;Login</h2> 
      <form action="login.php" method="post"> 
       Username: <input type="text" name="username"><br> 
       Password: <input type="password" name="password"><br><br> 
       <input type="submit" name="login" value="Login"> 
      </form> 
     </div> 
    </body> 
</html> 

我知道大部分這是不完整的,但這不是問題。問題是,當我嘗試登錄時,我收到「不正確的用戶名/密碼」。經過進一步調查,我發現$ pass沒有設置。

enter image description here

爲什麼$傳沒有被設置和顯示?

+0

請勿將輸入元素命名爲與其「類型」值相同的名稱。這可能不會解決問題,這只是良好的做法 – Deryck

+0

爲什麼你不讓你的如果是這樣的? if(trim($ user)!=「」&& trim($ pass)!=「」){'。我還看到,if語句中的第二個表達式不是一個比較。調試的最佳方式是使用'var_dump'輸出變量' – demonking

+0

'if($ user ==「」|| $ pass =「」){'您已經創建了'$ pass' ='「」'添加一個等於make它是一個比較運算符 – manta

回答

5

變化

if($user == "" || $pass = ""){ 

if($user == "" || $pass == ""){ 

你被設置$通= 「」,而不是檢查,如果它是 「」。

+0

我一直在爲此工作15分鐘* Facepalm *謝謝jboneca。 –

+0

然後請標記這個答案;) – demonking

+0

我可以在7分鐘內。 –

0

我不禁注意到,除非PHP和HTML是兩個單獨的文件,否則您會發回給自己。離開。其次,在同一文件中將兩者結合在一起並不明智。

第三,您需要先啓動會話,然後才能爲其添加值。

第四,如果沒有附加字符串,則不需要在「」中包含var。

只是有些想法...並不覺得不好,單=已經比我想承認的次數多了。