2016-05-16 38 views
-1

page3.php後我回到page1.php,但我不能分配一個新的值$ _SESSION ['答案']了。我得到的錯誤未定義指數:答案爲什麼在page3.php的session_destroy()後回到page1.php,session_start()不再工作?

第1頁:

<?php 

session_start(); 

$true_status = 'unchecked'; 
$false_status = 'unchecked'; 

if (isset($_POST['Submit1'])) { 

$_SESSION['answer'] = $_POST['answer']; 

$selected_radio = $_POST['answer']; 


if ($selected_radio == 'true') { 
$true_status = 'checked'; 

       } 
else if ($selected_radio == 'false') { 
$false_status = 'checked'; 



        } 
    }     



?> 

<body> 

<FORM name ="form1" method ="post" action = 'page2.php'> 

<h2>Q1. True or False?</h2> 
<Input type = 'Radio' Name ='answer' value= 'true' 
<?php echo $true_status; ?> 
>TRUE 

<Input type = 'Radio' Name ='answer' value= 'false' 
<?php echo $false_status; ?> 
>FALSE 

<p> 
<Input type = "Submit" Name = "Submit1" VALUE = "Next Page"> 


</FORM> 
</body> 

我只是想顯示的$ _SESSION值[ '答案']

第2頁:

<?php 
session_start(); 

echo $_SESSION['answer']; 

?> 

<body> 
<FORM name ="form3" method ="post" action ="page3.php"> 
<Input type = "Submit" name="Submit2" value="Next Page" > 
</FORM> 

</body> 

PAGE 3:

<?php 
session_start(); 

echo $_SESSION['answer']; 

$_SESSION = array(); 
session_destroy(); 
?> 

<body> 


<FORM name ="form2" method ="post" action ="page1.php"> 

<Input type = "Submit" name="Submit3" value="TRY QUIZ AGAIN" > 

</FORM> 
</body> 
+1

這個警告是用於$ _POST,而不是用$ _SESSION – Jack

+0

來詳細說明@Jack一點:回到頁面1的頁面3沒有任何輸入,因爲它是'$ _POST [ 'answer']'沒有定義。 – IzzEps

+1

[PHP:「Notice:Undefined variable」和「Notice:Undefined index」]的可能重複(http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – miken32

回答

1

因爲你page3.php代碼有Submit型與名稱Submit1時,在這行代碼範圍

if (isset($_POST['Submit1'])) { 
$_SESSION['answer'] = $_POST['answer']; 
} 

其成爲true,但你不要有任何元素都有名稱,如answer多數民衆贊成的方式顯示在page3.php變化解決這個問題的錯誤名稱爲Submit1另一個名稱,如`firstpage'。

編輯

,因爲你在page1formpage2你必須添加在上面這行page2

$_SESSION['answer'] = $_POST['answer']; 

enter image description here

+0

我嘗試將其更改爲Submit3但仍然無法正常工作 –

+0

測試了它的工作! – Hosseini

+0

tnx這個幫助。它的工作現在。我也在第3頁的FORM中刪除了method =「post」 –

1

當其他人在他們的評論中提到和答案:

您收到的警告是因爲$ _POST不包含'answer'鍵,因爲在page3.php中輸入的名稱是「Submit1」。 $ _POST全局變量是一個數組,其中包含來自輸​​入的name屬性的鍵值。

1

總之回到頁面1的頁面3沒有任何與名稱回答的輸入,所以它的$_POST['answer']未定義。

如果你想結轉從後到第1頁第3頁的「答案」,其中一個方案是使用隱藏的輸入,像這樣:

  1. (將此代碼複製並粘貼到前</FORM>也頁3)<input type="hidden" name="answer" value="<?=$stored_answer?>"/>上之前$_SESSION = array(); 3頁)$stored_answer = $_SESSION['answer'];
  2. 上(和複製並粘貼此代碼行到線

當您從第3頁移回第1頁時,這將保留您的「答案」。

+0

爲什麼在'page1'中想要新值時存儲它? – Hosseini

+0

因此我的序言「**如果**你想攜帶...」。我很容易想到他希望用戶在重新嘗試時能夠看到他們以前/不正確的答案的場景...... – IzzEps

+0

**仍然在去頁面之前處理這些東西他會創建獲得新的價值和不正確的留在'page3' – Hosseini

相關問題