我确实不像我希望的那样擅长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,同时在创建URL之前将增量添加到$ answer_count?
答案 0 :(得分:1)
不要在链接中传递答案计数(即通过GET)。而只是包含一个隐藏的表单字段,并使用客户端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>
然后只需在$_POST["question_number"]
好的,所以你不想使用javascript ...如果你真的在问“我怎么知道从PHP中选择了哪个收音机盒?”答案是:
<?php $answer = $_POST["grp"]; ?>
我认为你应该在URL中传递两个变量,一个是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>
这里的关键点是表单中的“action =”类似于锚中的“href =”,即当用户点击提交按钮时,表单所提交的URL。
答案 1 :(得分:1)
使用type =“hidden”数据字段发送当前计数。
答案 2 :(得分:0)
您可以在$_SESSION
中设置正确答案的数量(这是页面之间存在的全局变量),因此更难作弊。