保存表单数据并使用所述表单数据重定向到适当的URL

Saving the form data and using said form data to redirect to a proper URL

本文关键字:表单 数据 URL 重定向 保存      更新时间:2023-09-26

感谢Stack Overflow成员的帮助和宝贵的见解,我即将完成我的测试项目。然而,关于这个项目的收尾工作,我还有一些问题要问。在开始之前,我想简要介绍一下我的智力竞赛项目的背景。

测验由10个问题组成。每个问题要么是多选,要么是Y/N,只使用单选按钮和提交信息的回答按钮。该代码包含了JavaScript和PHP,稍后可能还会包含一些Ajax。到目前为止,它所能做的(如果严格遵循的话)是,当用户进入第一个页面回答第一个问题,选择一个单选按钮并点击回答按钮时,它会提交表单并根据正确与否打印适当的文本。这部分工作得很好,至少目前对我来说是这样。

效果不佳的有两件事。我可以递增,甚至在页面上显示递增的值(尽管它不会在最后的迭代中显示),但当页面刷新时,您可以在第一个页面中再次执行相同的过程,并递增总的正确变量。这意味着,作为用户,您可以在不留下第一个问题的情况下增加总的正确变量(这一点都不好)。

这是我的代码:

foreach ($correctAns as $key => $answer)
{
    if (!empty($_POST[$key]))
    {
        if ($_POST[$key] == $answer)
        {
            print $correct[$index];
            $_SESSION["totalCorrect"]++;
            print $_SESSION["totalCorrect"]; 
        }
        else if($_POST[$key] != $answer)
        {
            print $incorrect[$index];
            print "0";
        }
    }
    $index++;
};

目标是从每一页中增加总的正确变量,并根据正确的变量数量,将它们带到两页中的一页。例如,如果他们的总正确变量小于7,那么他们将被重定向到重拍页面。如果它等于或大于7,那么它们将被带到成功页面。

以下是表单提交的示例:

<form>
    <fieldset>
        <legend>Question 1</legend>
            <input type="radio" name="answerswer1" value="a" id="1a"><label for="1a" >  A.</label>
            <br>
            <input type="radio" name="answerswer1" value="b" id="1b"><label for="1b">  B.</label>
            <br>
            <input type="radio" name="answerswer1" value="c" id="1c"><label for="1c">  C.</label>
            <br>
            <input type="radio" name="answerswer1" value="d" id="1d"><label for="1d">  D.</label>
    </fieldset>
            <input type="button" id="answerswer" class="" value="ANSWER">
</form>

我想锁定的主要内容是,当用户选择了一个单选按钮并单击了答案按钮时,该值就会存储在我的PHP文件中。如果用户到目前为止有3个正确的答案,则应保留这3个正确答案。当用户点击问题10上的提交按钮后回答所有10个问题时,将对其进行评估。

我已经研究过销毁会话的表单数据并使用另一个PHP文件进行重定向,但在某些方面我仍然感到困惑。例如,如果用户在回答问题4,并出于任何原因决定刷新页面,那么问题1-3中的表单数据是否也会被销毁?

如果还有什么我可以提供或澄清的,请告诉我。

我看到您使用的是一个会话,简单地使用一个会话变量来保存到达的问题,并使用另一个会话来保存正确答案的计数器。

然后在每个页面的标题中,通过PHP脚本检查用户到达了哪个问题。

<?php
session_start();
if(!$_SESSION['question_id']){
$_SESSION['question_id'] = 1;
$_SESSION['correct_answers'] = 0;
}
$question_id = $_SESSION['question_id'];
// select question where question_id = $question_id 
// select all choices and correct answer ($correct_answer)
// print the question with the choices 
if(isset $_post['submit']){
if($correct_answer == $_POST['choice']){
$_SESSION['correct_answers']+=1;
$_SESSION['question_id']+=1;
}
}