解決方案(請閱讀整後,因爲有安全漏洞......,甚至在代碼黑洞;)):
<?php
if (isset($_POST['password']) && $_POST['password'] == 'yourpasshere')) {
// Password OK, continue
}
else {
// Password not ok, redirect
header('Location: empty.php');
exit;
}
?>
關於解決幾句:如果$_POST['password']
不設置,第二個條件甚至沒有被檢查,並且轉到其他條件。如果$_POST['password']
已設置,則第二種情況請檢查密碼是否正確(請閱讀下面的安全警告)。當且僅當它是好的,如果通過。
很少有重要但是消息:
1)從來沒有在明文存儲密碼,任何地方!閱讀:http://php.net/manual/en/function.password-hash.php。我的例子是以純文本形式存儲密碼,但只是草擬可能的解決方案。 您文件的每個可能泄漏都可以訪問您的網站。
在這種情況下,我的答案勾畫了解決方案的邏輯部分(其中存在問題),但需要在安全感中進行糾正。
2)始終驗證表單數據(最小的解決方案是使用http://php.net/manual/en/function.htmlspecialchars.php,但這不是完美的,它更更好地使用的preg_match,甚至preg_replace函數的特殊字符,將它們刪除
2 * )您可以使用以下方式驗證電子郵件:var_dump(filter_var('[email protected]', FILTER_VALIDATE_EMAIL));
(doc:http://php.net/manual/en/function.filter-var.php)。這是一個很棒的功能,它會嘗試驗證輸入的電子郵件是否確實無誤。
3)在您的代碼中,只有在POST值都爲空時,它纔會重定向到空白頁面。如果您想要重定向,如果它們中的任何一個爲空,則使用邏輯OR(||
)而不是AND(&&
)。
您只需重新設置$ _POST ['passwd'] – Zl3n