2012-11-21 86 views
2

我試圖將用戶重定向到另一個網頁,具體取決於他們檢查了哪個單選按鈕。檢查是否使用POST檢查單選按鈕

下面是相關代碼:

<form action="sample.php" method="post"> 
      <input name="survey" type="radio" value="Yes" /> Yes 
      </br> 
      <input name="survey" type="radio" value="No" /> No 
    </form> 

    <? 
    if ($_POST['survey'] == "Yes") 
    { 
     header('Location: http://localhost/survey.php'); 
    } 
    else if ($_POST['survey'] == "No") 
    { 
     header('Location: http://localhost/survey.php'); 
    } 

    ?> 

出於某種原因,我都會我的if語句中的一個錯誤。這並不認爲「調查」是一個有效的指標。我怎麼做沒有辦法將我的表單鏈接到php代碼?

+1

是一個文檔或者2個獨立的文件? – Michael

+0

此代碼位於單個文件中。但重定向到另一個文件。 – user1840522

+0

我不確定你的意思?我正在使用單選按鈕? – user1840522

回答

2

您的警告是由於使用GET(正常請求)加載頁面時未設置爲$_POST['survey']而造成的。

if ($_SERVER['REQUEST_METHOD'] === 'POST') 
{ 
    if ($_POST['survey'] == "Yes") 
    { 
     header('Location: http://localhost/survey.php'); 
    } 
    else if ($_POST['survey'] == "No") 
    { 
     header('Location: http://localhost/survey.php'); 
    } 
} 
else 
{ 
    // output html 
} 

無論哪種方式,您:

您可以通過在每次使用它,或者你可以把整個代碼來檢查,如果一個職位是像做了塊時間前添加isset($_POST['survey']) &&改變你的條件將不得不把這個放在你的html前面,因爲如果頭文件已經被髮送(東西已經被輸出到瀏覽器),你不能使用header

+0

謝謝。你很好地解釋了這些概念。我是編程新手,這非常有幫助。 – user1840522

0

想想形式是如何工作的:

第一次訪問你的頁面,提交表單。然而,你的if/else就像它一樣。這是什麼導致錯誤 - $_POST['survey']不是第一次。

正確編寫腳本 - 做渲染HTML之前所有潛在的形式處理:

<?php 
if (isset($_POST['submit'])) { 
    // handle the form 
} 
?> 

<!doctype html> 
<html> 
    <head> 
     <title>Blah</title> 
    </head> 

    <body> 
     <!-- code --> 
    </body> 
</html> 

,讓你檢查,如果您提交的形式本身,並有可能使用header()重定向用戶不會遇到那些煩人的「頭部已經發送」錯誤。

+0

更多關於如何構建你的代碼:http://stackoverflow.com/a/13371294/399584長話短說,PHP和HTML之間來回跳動只會導致流淚。不要這樣做。相反,請先做好所有的PHP工作,然後顯示結果。 –

0

嘗試一個簡單的print_r()語句來查看$ _POST是否有任何內容。把它放在頁面頂部:

print_r($_POST); 

此外,請確保您通過表單加載結果頁面。如果您只鍵入頁面的URL,則不會隨任何POST數據一起發送。

0

您第一次加載文件sample.php時沒有POST數據,因此沒有索引「調查」。

您需要嵌套它在另一個if語句或修改如下:

<form action="sample.php" method="post"> 
      <input name="survey" type="radio" value="Yes" /> Yes 
      </br> 
      <input name="survey" type="radio" value="No" /> No 
    </form> 

    <? 
    if (isset($_POST) && $_POST['survey'] == "Yes") 
    { 
     header('Location: http://localhost/survey.php'); 
    } 
    else if (isset($_POST) && $_POST['survey'] == "No") 
    { 
     header('Location: http://localhost/survey.php'); 
    } 

    ?> 
0

我使用的檢查不同的PHP文件。

<html> 
<body> 
<form action="another.php" method="POST"> 
    <label>You are: </label> Male <input type="radio" name="male"> Female  <input type="radio" name="female"><br/><br/> 
    <input type="submit" name="submit" value="GO"> 
</body> 
</html> 

***** another.php ******

<?php 
if (isset($_POST['submit'])) 
{ 
    if(empty($_POST['male']) && empty($_POST['female'])) 
    {echo "select gender";} 
    elseif (empty($_POST['female'])) //means Male is checked 
    { 
     $gend="Male"; 
      echo $gend; 
    } 
    elseif(empty($_POST['male'])) //Means Female is checked 
    { 
     $gend="Female"; 
      echo $gend; 
    } 
    elseif(empty($_POST['male']) || empty($_POST['female'])== false) //Not required if you can disable one when another is checked 
     {echo"please select only one";} 
} 
?>