2013-08-30 109 views
0

我有兩個php文件。 一個rules.php和一個register.phpPOST值不能正常工作

rules.php是這樣的:

<div style='background-color:#060; color:#FFF; width:50%; height:20px; font-size:12px; margin:5px 0;'> 
<form method='post' action='register.php' name='form_coding_rules' id='form_coding_rules'> 
    <input type='checkbox' name='rules' id='rules' value='agree'/> 
    I Declare That I Read All The Above Rules & I Agree With Them.<br/><br/> 
    <input type='submit' name='terms' id='terms' value='Proceed'/> 
</form> 
</div> 
</center> 

而且register.php如下:

if(isset($_POST["terms"]) && isset($_POST["rules"]) && $_POST["rules"]=="agree") { 
     //Do Something; 
} 
else 
    header("location: rules.php"); 

但問題是,當我從規則頁面提交到註冊頁面時,值不顯示以及if部分正在跳過。如果執行語句,刷新或提交2-3次後。 但是當我用測試頁替換動作頁面時,只是打印提交的值,那麼一切都很好。 不明白爲什麼會發生。

+2

此:'$ _ POST [ 「規則」] = 「同意」',是一個聲明,這將評估爲「真實」我相信(我可能會想到JS)。你需要兩個等號(如果你想檢查變量類型,也需要三個等號)。 – Jasper

+2

你總是可以做'var_dump($ _POST);退出;如果你感到困惑,爲什麼一個陳述可能不是你的想法。 –

+0

你可以刪除你的register.php裏面的所有東西,並添加print_r($ _ POST);提交一些值並向我們展示結果 –

回答

2

你最後發表您的if語句是:

$_POST["rules"]="agree" 

應該

$_POST["rules"]=="agree" 
+0

在你的頭文件之後,一定要放一個'exit',所以它會是'{header(「location:rules.php」);出口; }' –

+0

前者解析爲'true',對嗎?所以它不會停止運行的'if'語句代碼。 – Jasper

+0

這是一個錯字。抱歉。我做到了,但仍然無法工作。我很困惑,因爲當我直接通過URL打開它時,它的工作。但當我通過點擊幾個鏈接去它不工作。我以前沒有遇到這種類型的問題。 –