2011-11-18 53 views
0

我創建了一個登錄腳本(有教程有很大幫​​助)沒有登錄。它可以工作,並且當有成功的登錄時,就會製作餅乾。問題是,使用教程提供了一種方法來檢查是否有用戶計算機上保存的(有效)cookie用於僅適用於註冊用戶的頁面,但不會產生任何結果(因此可能是錯誤)。我找不到有什麼問題,所以我希望你能幫我修復它。順便一提,餅乾會停留半個小時。PHP與MySQL的登錄腳本 - 保護我的網站的維護部件鎖定頁,如果在使用cookie

<?php 

// connect to db 
include('connect.php'); 

// page of login script, used when no/wrong cookie is found 
$login_pagina = "login.php"; 

$sql = "SELECT * FROM members WHERE username='".$_COOKIE['username']."'"; 
$resultaat = mysql_query($sql) OR die ("Couldn't connect to MySQL"); 
$aantal = mysql_num_rows($resultaat); 
if ($aantal == '0') { 
// cookie and databasevalues are not the same 
echo "Click <a href=\"".$login_pagina."\">here</a> to login."; 
} else { 
$login = mysql_fetch_object($resultaat); 
if ($_COOKIE['password'] != $login->password) || ($_COOKIE['username'] != $login->username)) { 
echo "Cookies couldn't be combined"; 
} else { 
echo "you're logged in!"; 
} 
} 

?> 

(如本教程在荷蘭我翻譯的意見和一些文字。有些變量仍然在荷蘭,但我認爲這是很清楚。)

+1

不確定本教程是從哪裏來的,但首先要做'$ sql =「SELECT * FROM members WHERE username ='」。$ _ COOKIE ['username']。''「;'不是個好主意 - 閱讀 - > http://php.net/manual/en/security.database.sql-injection.php – ManseUK

+0

也不是在cookie中 – steveo225

+0

鹽漬密碼的MD5存儲密碼是好的作爲cookie(現在還不清楚在腳本) –

回答

0

所以,你得到一個空白頁? 根本沒有輸出? 如果是這樣,必須有錯誤,請嘗試啓用error_display(檢查您的php.ini文件)。

幾件事情: 1.查詢檢查如果cookie的值是在「成員」表中的用戶名。 所以請確保它包含成員。 2.使用firebug或chrome檢查cookie是否真的存在,以及它的值是否是成員的用戶名。 5.Instead:

$login = mysql_fetch_object($resultaat); 
if ($_COOKIE['password'] != $login->password) || ($_COOKIE['username'] != $login->username)) { 

嘗試:(條件必須是 「與」 不是 「或」 ......有沒有邏輯如果不)

$login = mysql_fetch_array($resultaat); 
if ($_COOKIE['password'] != $login['password']) AND ($_COOKIE['username'] != $login['username']) { 
  1. 取代的:if($ aantal == 0){ ($ aantal == 0){ 這不是一個錯誤,但還是,這個函數返回一個數字,所以把它當作一個數字。
+0

感謝您的幫助!到目前爲止,我的服務器上啓用了PHP錯誤,當您開發時確實更容易。上面提到的腳本已經被刪除。我們選擇了更安全的(md5密碼等)和更好的工作。所以我怕你的幫助不再需要這個特殊的腳本。雖然我很欣賞你的回覆,我當然可以在新的發展中使用這些建議! – Stijn