PHP - 你如何在前一个和前锋的测验中作弊得分

时间:2015-01-15 12:31:00

标签: php html session

我在网上搜索过,但我不知道从哪里开始。 我们需要在学校用PHP进行测验。 如果你有正确的答案,你会得到下一个答案:

session_start(); 

$_SESSION['score']++; 

?> 

例如,如果我在问题9中得到了8分。 但问题是,如果我点击之前它继续添加++到分数。所以当我回到问题8时,我有9分。我想知道如何避免这种情况,当你点击之前它说'#34;不要作弊"。

3 个答案:

答案 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,所以不是上一页。