2013-10-09 46 views
1

我正在爲我的網站編寫我的控制面板的登錄代碼。我製作了登錄腳本。但由於某些原因,會不會保存,這裏是我的代碼的部分我用:用於登錄的PHP會話 - 不識別

的index.php

session_start(); 

if(isset($_POST['username']) && isset($_POST['password'])) { 
    require('scripts/validateLogin.php'); 
} 

if($_SESSION['login'] == 1) { 
    $loginOkay=1; 
    echo "Logged in"; 
} else { 
    $loginOkay=0; 
    echo "Not logged in"; 
} 

validateLogin.php

require('mysql_connect.php'); 

$username = htmlspecialchars(strtolower($_POST['username'])); 
$password = md5(htmlspecialchars($_POST['password'])); 

$result = mysqli_query($con, "SELECT username,password FROM tb_mods WHERE username = '$username';"); 

while($row = mysqli_fetch_array($result)) { 
    if ($row['username'] == $username && $row['password'] == $password) { 
     $_SESSION['login'] == 1; 
    } 
} 

我我之前調用session_start();加載我的loginValidation.php所以session_start();在這兩個頁面中都有效。

我不斷收到:未登錄作爲結果。

+0

你很容易受到[SQL注入攻擊](http://bobbyt-ables.com)的攻擊,而你的'htmlspecialchars()'只是**無用的保護你免受這種事情的影響。同樣,爲什麼要在'while()'循環中比較用戶名呢?查詢只會返回具有該用戶名的記錄,所以你正在浪費cpu循環來重複數據庫已經爲你做的事情。 –

+0

我已經很快寫了這段代碼,試圖讓功能開始工作,之後我計劃清理易受攻擊的代碼並清理代碼中無用的部分。現在我只是停留在上述問題上。 @MarcB – rockyl

+0

查詢是否返回任何數據?我也會刪除while循環並計數結果 –

回答

0

我覺得行$ _SESSION ['login'] == 1;是錯誤的,你只需要一個相等的字符來爲會話變量增加值。我希望這會有所幫助。