PHP Trivia游戏使用会话

时间:2013-02-19 12:39:05

标签: php session

我正在创建一个琐事游戏,它是如何工作的:

一个人进入索引页面。

系统从阵列中生成一个随机问题。 用户回答问题

如果问题是对的,系统将回应“正确答案”并生成一个新问题。 如果问题不等于数组中的答案,系统将回显“错误答案”并将生成一个新问题。

我已完成了问题代的部分,但我遇到了匹配答案的问题 - 考虑到如果你回答一个问题,在你点击提交后,问题会自动改变,所以你的答案是不正确的,除非randomQuestion保持不变

我的朋友告诉我,我需要在随机问题部分使用会话,但没有别的。 我不确定我怎么做,我真的迷路了。

这是我的代码: 问题生成

    <?php
session_start();

$questions = array(array('What is Google?', 'god'),
                    array('What is God?', 'gode'),
                    array('Why is god?', 'godee'));


$randomQuestion = array_rand($questions);

$question1 = $questions[0][0];
$question2 = $questions[1][0];
$question3 = $questions[2][0];

if ($randomQuestion == 0 && !isset($_SESSION['question1'])) {
    echo $question1;

} else if ($randomQuestion == 1 && !isset($_SESSION['question2'])) {
    echo $question2;

} else if ($randomQuestion == 2 && !isset($_SESSION['question3'])) {
    echo $question3;

}
?>

表格+匹配答案 此脚本目前仅检查问题1作为测试。

<form action="index.php" method="post">
    <input type="text" name="answer">
    <input type="submit" value="Answer it!">
</form>

<?php
    $answer = $_POST['answer'];
    if (!empty($answer)) {
        if ($randomQuestion == 0) {
            if ($answer == $questions[0][1]) {
                echo 'Correct Answer!';
                unset($_SESSION['question1']);
                unset($_SESSION['question2']);
                unset($_SESSION['question3']);
            }
        } else {
            echo 'Answer is incorrect.';
            return;
        }
    } else {
    echo 'Field is empty';
    return;
    }
session_destroy();
?>

我的想法:

在阅读了很多关于会话的文章后,我考虑检查randomQuestion是否为isset,如果是isset,那么它就不会产生新的问题。

在您回答问题后,它将取消设置随机问题,以便系统生成新问题。

但它并没有真正起作用,因为我做得不对。

我做错了什么? 最简单的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

我不会从使用会话开始。当然,我最终可能会使用它们,但为了概念验证,最好先用简单的方法进行。

您真正需要做的就是在表单中插入一个隐藏值,告诉您问题编号。

例如(未经测试):

<?php

$questions = array(
    array('What is Google?', 'god'),
    array('What is God?', 'gode'),
    array('Why is god?', 'godee')
);


$rnd=mt_rand(0,count($questions)-1);
$question=$questions[$rnd];

echo($question[0]);

?>

<form action="index.php" method="post">
<input type="hidden" name="q" value="<?=$rnd?>">
<input type="text" name="answer">
<input type="submit" value="Answer it!">
</form>

用于验证问题和答案的其余服务器代码我将作为练习留下。

答案 1 :(得分:0)

如果你想让这个琐事游戏由更多的人扮演(我想你会这样做),你需要想出一些更简单的东西。形式&gt; ...您必须存储用户提供的答案,以便其他用户可以看到它们。