我在网上搜索过,但我不知道从哪里开始。 我们需要在学校用PHP进行测验。 如果你有正确的答案,你会得到下一个答案:
session_start();
$_SESSION['score']++;
?>
例如,如果我在问题9中得到了8分。 但问题是,如果我点击之前它继续添加++到分数。所以当我回到问题8时,我有9分。我想知道如何避免这种情况,当你点击之前它说'#34;不要作弊"。
答案 0 :(得分:6)
防止这种情况的一种简单方法是跟踪玩家已经回答的问题。您可以在同一会话数组中使用不同的密钥执行此操作。这样的东西就足够了:
初始化如下:
$_SESSION['answeredQuestions'] = array();
在添加积分之前,请检查问题是否已得到解答:
if(!in_array($questionNumber, $_SESSION['answeredQuestions']))
{
$_SESSION['score']++;
}
然后将当前问题添加到已回答问题列表中:
$_SESSION['answeredQuestions'][] = $questionNumber;
答案 1 :(得分:0)
几乎像@Sherlock建议的那样,当你想要显示结果时,你只需要构建这个数组并将所有这些数字加在一起(所以你不需要将分数存储在会话,而是始终存储用户为此问题收到的问题和分数之间的映射。)
因此,每当用户回答问题时,您都会执行以下操作:
$_SESSION['answers'][$questionNumber] = $scoreForCurrentQuestion;
当你想获得总分时,你会做
$score = array_sum($_SESSION['answers']);
答案 2 :(得分:0)
我明白了!我这样做了。
<?php
session_start();
$score = $_SESSION['score']++;
if ($score !=1){
header ('location: index.php');
}
?>
所以基本上,这是第3页上的代码,第3页包含得分1.因此,如果我从另一个页面(另一个页面自动获得另一个分数,然后第3页因为会话++),他将重定向到index.php,所以不是上一页。