2015-02-04 22 views
1

我已經做了一個窗體,如果一個值缺少重定向到錯誤頁面。PHP如果具體的價值,然後繼續

<?php 
if (empty($_POST['submit']) && empty($_POST['email'])) 
{ 
    header('Location: empty.php'); 
    exit; 
} 
?> 

現在,讓我們說,我有我需要我的用戶輸入進行了密碼,我怎麼做,如果錯了,那麼我如何重定向他們empty.php? 我的問題是,我不知道如何使一個「PHP」標籤重定向,如果不具體的價值。

+0

您只需重新設置$ _POST ['passwd'] – Zl3n

回答

1

解決方案(請閱讀整後,因爲有安全漏洞......,甚至在代碼黑洞;)):

<?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(&&)。

+1

的值,非常感謝!這解決了我的問題! –