我環顧四周(這裏在stackoverflow和谷歌),但我似乎無法弄清楚爲什麼我的形式值消失時,我倒退,然後在網絡上轉發調查。我正在試驗三頁。如果我通過調查回答每個問題,然後向後返回,則值保留。但是,如果我在第一頁上重新回答問題並按提交,我的第二頁和第三頁的值就不再填寫。然而,列在最上面的數組仍顯示出來。在用戶改變它們之前,表單中的PHP代碼不應該重新填充會話數組中的值?來回填充表單字段時網頁
我也知道我用於將所有POST值存儲到會話中的方法是危險的,但我打算只將它寫入一個普通的.txt文件。感謝您的任何幫助!
<?php
// begin the session
ini_set('session.cache_limiter', 'private');
session_start();
// Take each input name and create a variable for it
foreach($_POST as $k=>$v) {
$_SESSION[$k]=$v;
}
?>
<html>
<head>
<title>This is a test</title>
</head>
<body>
<form method="POST" name="Gender" action="page2.php">
<p>What is your gender?</p>
<input type="radio" name="gender" value="male" id="male" <?php if (isset($_SESSION['male'])) { echo 'checked="checked"'; } else { echo $gender = ''; } ?>> <label for="male">Male</label> <br />
<input type="radio" name="gender" value="female" id="female" <?php if (isset($_SESSION['female'])) { echo 'checked="checked"'; } else { echo $gender = ''; }?>> <label for="female">Female</label><br />
<input type="submit">
</form>
</body>
</html>
第2頁
<?php
// begin the session
ini_set('session.cache_limiter', 'private');
session_start();
// Take each input name and create a variable for it
foreach($_POST as $k=>$v) {
$_SESSION[$k]=$v;
}
// Prints out the session array
print('<input type="hidden" name="' . $k . '" value="' . $v . '" />');
Print_r ($_SESSION);
?>
<html>
<head>
<title>This is a test</title>
</head>
<body>
<form method="POST" name="lolz" action="page3.php">
<p>What is your lolz?</p>
<input type="radio" name="lolz" value="YesLOLZ" id="YesLOLZ" <?php if (isset($_SESSION['YesLOLZ'])) { echo 'checked="checked"'; } else { echo $lolz = ''; } ?>> <label for="YesLOLZ">YesLOLZ</label> <br />
<input type="radio" name="lolz" value="NoLOLZ" id="NoLOLZ" <?php if (isset($_SESSION['NoLOLZ'])) { echo 'checked="checked"'; } else { echo $lolz = ''; } ?>> <label for="NoLOLZ">NoLOLZ</label><br />
<input type="submit">
</form>
</body>
</html>
第3頁
<?php
// begin the session
ini_set('session.cache_limiter', 'private');
session_start();
// Take each input name and create a variable for it
foreach($_POST as $k=>$v) {
$_SESSION[$k]=$v;
}
// Prints out the session array
print('<input type="hidden" name="' . $k . '" value="' . $v . '" />');
Print_r ($_SESSION);
?>
<html>
<head>
<title>This is a test</title>
</head>
<body>
<form method="POST" name="lolz" action="page3.php">
<p>What is your roflz?</p>
<input type="checkbox" name="roflz[]" value="Yesroflz" id="Yesroflz" <?php if (isset($_SESSION['Yesroflz'])) { echo 'checked="checked"'; } else { echo ''; } ?>> <label for="Yesroflz">Yesroflz</label> <br />
<input type="checkbox" name="roflz[]" value="Noroflz" id="Noroflz" <?php if (isset($_SESSION['Noroflz'])) { echo 'checked="checked"'; } else { echo ''; } ?>> <label for="Noroflz">Noroflz</label><br />
<input type="submit">
</form>
</body>
</html>
謝謝,我試過了,還有jeroen的建議,我的數值仍然丟失。但是,如果我打印$ _SESSION,它有關係嗎?我最終會刪除它,但我使用它來查看值 – OneBigNewbie 2011-05-04 14:31:16
哎呀,我沒有仔細閱讀,看到了錯誤的地方(這不是關於print/echo,即使$ _SESSION可能不是,$ _POST也是空的)嘗試我更新的答案,以取代行打印(...)。但我認爲你應該使用我的兩個代碼塊,除非我真的很困惑你想用無線電領域做什麼:-) – morewry 2011-05-04 15:32:37
With無線電領域(和複選框)我試圖用來重新選擇所選答案,如果參與者已經回答了他們(通過從會議中檢索)。我已經嘗試過使用$ _SESSION而不是$ _POST,因爲$ _SESSION應該是持久的,但如果他們在page1.php上更改了他們的答案,它不會自動選擇page2.php上的響應。最終目標是減少使用此表單的人的負擔,因此如果他們只想更改一個答案,他們不必重新選擇所有答案。 – OneBigNewbie 2011-05-05 14:06:31