2014-04-10 91 views
0

標題可能有點誤導,但我會盡力在這裏解釋。 基本上,當我將我的網站置於「離線模式」時,我有一個部分,管理員可以使用密碼登錄。 (他們是而不是用他們的賬戶登錄)在這個例子中,密碼是'密碼'。當用戶輸入正確的密碼時,它應該將它們重定向到網頁,它不是,它只是迴應'不正確的密碼' - 當它實際上是正確的。密碼保護一個網頁

代碼由我組成,你可能會說。我預計不工作,因爲我仍然在學習PHP

HTML的非常早期的階段:

<div class="backdroplogin"> 
    <h2>Login to your account:</h2> 
    <form action="/Offline" method="GET"> 
    <input type ="password" name="password_login" size="25" Value="" /> 
    <input type="submit" name="login" value="Login" /> 
</div> 
    </form> 

PHP:

//ADMIN LOGIN 
$password = "AbCd0987connekt£*^%"; 

if (isset($_GET["password_login"])) { 
    $password_login = $_GET["password_login"]; 

    if ($password_login == $password) { 
    header("Location:/Admin/Panel"); 
} else { 
    echo "Incorrect password"; 
} 
} 

感謝您的幫助。

+3

首先, 從來沒有下過密碼!!!!!! – Svetoslav

+1

...更不用說純文本,*呻吟* –

+0

作爲其他保護手段我有一個IP標識符如果用戶訪問/管理員/面板&沒有列出的IP,他們會重定向: –

回答

1

就像Svetlio說的那樣。使用get方法發送密碼是一種壞習慣。因此,在您的PHP中使用method="post",在您的PHP中使用$_POST["password_login"]

在你的文字,你說你使用"password"作爲密碼這個工具,而在你的PHP你檢查發送密碼等於"AbCd0987connekt£*^%",所以,如果你把你的密碼,你應該使用"AbCd0987connekt£*^%" ...或做你的意思是你用"$password"

又一個提示:爲了您的代碼嘗試的可讀性能力縮進:)

0

你可以驗證密碼是否正確,並把國旗到一個會話變量。然後在管理頁面上進行檢查,看看會話標誌是否正確訪問。

if($_SESSION['IsAdmin'] === true { 
    //load/redirect to page 
} else { 
    die("You aren't an admin."); 
} 

此外,像其他人一樣,不要使用GET來獲取密碼,並且絕對不會將它們作爲明文傳遞。

0

我同意評論。但只是爲了回答你的問題:

在你的腳本中一切正常,但我認爲你有一個混淆,說:「密碼是'密碼'爲這個例子,而不是密碼是:AbCd0987connekt£*^%,因爲你在代碼中寫了它。我在你的代碼中複製了你的代碼(改變了動作),並且它是按照你的想法工作的。