php - 带有后退按钮问题的多页PHP表单

标签 php mysql forms session multipage

我已经创建了一个多页 PHP 表单,将结果插入 MySQl 数据库并且工作正常,我遇到的唯一问题是当我尝试返回时我得到“确认表单重新提交”“ERR_CACHE_MISS”错误页面。

PHP 不是我最擅长的语言,需要一些帮助来修复它。

这是一个 20 页的调查,每页都有单选按钮,可以选择 1 到 10。

下面是我的代码示例,任何建议都很好。

干杯

<?php session_start();
$_SESSION['answer_04'] = $_POST['answer_04'];
?>

<form action="peem-05.php" id="peem" method="post">

<ul class="answers">
    <li class="group1"><input type="radio" id="radio1" name="answer_05" value="1" data-msg-required="Please choose an answer bewteen 1 and 10" required><label for="radio1"><br>1</label></li>
    <li class="group1"><input type="radio" id="radio2" name="answer_05" value="2" required><label for="radio2"><br>2</label></li>
    <li class="group2"><input type="radio" id="radio3" name="answer_05" value="3" required><label for="radio3"><br>3</label></li>
    <li class="group2"><input type="radio" id="radio4" name="answer_05" value="4" required><label for="radio4"><br>4</label></li>
    <li class="group3"><input type="radio" id="radio5" name="answer_05" value="5" required><label for="radio5"><br>5</label></li>
    <li class="group3"><input type="radio" id="radio6" name="answer_05" value="6" required><label for="radio6"><br>6</label></li>
    <li class="group4"><input type="radio" id="radio7" name="answer_05" value="7" required><label for="radio7"><br>7</label></li>
    <li class="group4"><input type="radio" id="radio8" name="answer_05" value="8" required><label for="radio8"><br>8</label></li>
    <li class="group5"><input type="radio" id="radio9" name="answer_05" value="9" required><label for="radio9"><br>9</label></li>
    <li class="group5"><input type="radio" id="radio10" name="answer_05" value="10" required><label for="radio10"><br>10</label></li>
</ul>


<a href="javascript:history.back(1)"><img class="backButton" src="img/back-button.png"/></a>

<button class="rightArrow" name="submit" type="submit" value="Next" ><img class="backButton" src="img/next-button.png"/></button>
</form>

最佳答案

与其使用 javascript:history.back(1),不如将数据保存到 PHP Session 中,返回意味着重新访问同一页面。

[save.php]

$step = $_POST['formStep'];
$formData = $_POST['Form'][$step]; // all values from form
$formID = $_POST['formID']; // validate

if ($formData && $step) {
    if ($step < $maxSteps) {
        $_SESSION[$formID][$step] = $formData;

        $this->showStep($step++);
    } else {
        $this->db->saveForm($_SESSION[$formID]);
    }
}

[showStep.php]

$step = isset($_REQUEST['step']) ? $_REQUEST['step'] : 1;
$formID = isset($_SESSION['formID']) ? $_SESSION['formID'] : rand(0, 99);
$formData = isset($_SESSION[$formID][$step]) ? $_SESSION[$formID][$step] : [];
?>
<form action="save.php?step=<?= $step; ?>">
    <input type="hidden" value="<?= $formID; ?>" name="formID"/>
    <?php switch ($step): ?>
<?php case 1: ?>
      <input type="radio" id="radio10" name="Form[<?= $formID; ?>][<?= $step; ?>][answer_05]" value="10" <?= isset($formData['answer_05']) ? 'checked="checked"' : ''; ?>/>
<?php case 20: ?>
      ...
<?php break; ?>
</form>
<a href="showStep.php?step=<?= $step - 1; ?>">Back</a>

关于php - 带有后退按钮问题的多页PHP表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37519819/

相关文章:

php - 为什么我不能在这段代码中使用 jQuery 在 HTML 中添加一行?

mysql - mysql中的波兰语和德语重音字母

php ajax 下拉列表问题

forms - 为什么我不能使用结构语法将文件类型的表单字段传递给 CFFUNCTION?

php - 使用 AJAX 发送具有可变字段数的表单,$_POST 数组为空

Javascript 转换为 HTML 形式

php - 即使没有条件,Laravel QUERY 也不会产生任何结果

php - 通过PHP页面运行python程序

javascript - 我希望我的 php 表单在同一页面但不同的选项卡上提交数据和重定向

php - 通过链接打开文件