检查正确答案并提交表单(Checking Correct Answer and Submitting

2019-10-19 06:26发布

我固然不是熟练的PHP作为我希望是。 我的大部分经验与WordPress的循环。

我试图创建一个非常简单的测验携带正确的答案在URL数量(例如domaindotcom / P = 3,如果他们已经有了3个正确答案为止)。

我使用下面的PHP代码来启动它关闭:

<?php 
    /* Gets current correct answer Count */ 
    $answer_count = $_GET["p"]; 

    /* checks to see if the submitted answer is the same as the correct answer */
    if ($_POST["submitted-answer"] == "correct-answer") {
        $answer_count++;
    }
?>

现在我知道我可以通过链接得到正确的链接:

<a href="link-to-next-question.php/?p=<?php echo $answer_count; ?>">Next Question</a>

但现在我想用它的形式和POST困惑,GET等。

这里是我的HTML:

<form name="quiz" action="" method="POST">
<label for="o1"><input type="radio" name="grp" id="o1" value="o1"> Label 1</label>
<label for="o2"><input type="radio" name="grp" id="o2" value="o2"> Label 2</label>
<label for="o3"><input type="radio" name="grp" id="o3" value="o3"> Label 3</label>
<input type="submit" value="Next Question" class="btn">
</form>

如何选择正确的答案(安全性并不重要,它只是一个有趣的测验),然后发送给下一个URL,同时增加增量到$ ANSWER_COUNT创建URL之前?

Answer 1:

千万不要错过在链接的回答次数(通过GET IE)。 而不是仅仅包括隐藏的表单字段(S),并使用客户端的JavaScript代码来增加你想要的变量,并提交表单。

<form id="qfrm" name="quiz" action="" method="POST"> 
  <input type="hidden" name="question_number" value="<?php echo $next_question_number?>">
  <input type="hidden" id="n_c_a" name="num_correct_answers" value=<?php echo $num_correct_answers?>">
  <input type="button" value="Submit" onclick="validateAnswerAndSubmit(); return false;">
</form>

<script language="javascript">
  function validateAnswerAndSubmit(){
    if(validate_answer()){
      document.getElementById("n_c_a").value += 1;
    }
    document.getElementById("qfrm").submit();
  }  
</script>

接下来,只要你的PHP脚本交换机上的$_POST["question_number"]


OK,所以你不想使用JavaScript ...如果你真的问:“我怎么知道哪个单选框从PHP选择?” 答案是:

<?php $answer = $_POST["grp"]; ?>

我觉得你确实应该通过两个变量的网址,一会是QUESTION_NUMBER,另一个是num_correct。 然后,你可以写这样的代码:

<?php

$num_correct = (int) $_GET["num_correct"];
$question_number = (int) $_GET["question_number"];

switch($question_number - 1){ // assuming your question numbers are in order by convention
                              // validate the answer to the previous question
  case -1: //no validation necessary for the first question ($question_number 0)    
    break;
  case 0: 
    if($_POST["grp"] == "correct answer"){
      $num_correct++;
    }
    break;

   // and so forth;         
}       
?>

<form name="quiz" 
      action="this_page.php/?num_correct=<?php echo $num_correct;?>&question_number=<?php echo $question_number + 1?>" 
      method="POST">

<?php Display_Question_Number($question_number);?>

</form>

这里的关键是,在形式的“行动=”是类似于锚的“href =”,也就是说,它是当用户点击提交按钮的形式提交到该URL。



Answer 2:

使用类型=“隐藏”的数据字段来发送当前计数。



Answer 3:

您可以在正确答案的次数$_SESSION (这是一个全局变量页面之间仍然存在),因此它很难作弊。



文章来源: Checking Correct Answer and Submitting Form
标签: php forms post get