显示PHP测验游戏的正确答案

时间:2014-01-18 23:03:57

标签: php

我正在创建我的第一个PHP脚本,用于测试颅神经关联的用户;具体而言,颅神经的名称会显示给用户,他们应该点击与颅神经名称对应的正确数字。

我会先发布我的代码,然后发布我的问题:

<?php

$generated_nerve_number = mt_rand(1,12);
switch($generated_nerve_number) {
    case '1':
        echo "Olfactory";
        break;

    case '2':
        echo "Optic";
        break;

    case '3':
        echo "Oculomotor";
        break;

    case '4':
        echo "Trochlear";
        break;

    case '5':
        echo "Trigeminal";
        break;

    case '6':
        echo "Abducens";
        break;

    case '7':
        echo "Facial";
        break;

    case '8':
        echo "Vestibulocochlear";
        break;

    case '9':
        echo "Glossopharyngeal";
        break;

    case '10':
        echo "Vagus";
        break;

    case '11':
        echo "Accessory";
        break;

    case '12':
        echo "Hypoglossal";
        break;
}


?>
<html>
<head>
    <title>Cranial Nerves Test</title>
</head>
<body>
    <p>Select the cranial nerve number below associated with the name of the cranial nerve given above:</p>
    <form action="cranial.php" method="POST">
        <?php
            echo "Cranial Number: ";
            for($i = 1; $i <= 12; $i++) {
                echo "<input type=\"submit\" name=\"nerve_$i\" class=\"nerve_number\" value=\"$i\">";
            }

        ?>

        <?php
                $submit = (isset($_POST['nerve_' . $i])) ? $_POST['nerve_' . $i] : NULL;
                if($submit) {
                    $selected_nerve_number = $_POST['nerve_' . $i];
                    if($generated_nerve_number == $selected_nerve_number) {
                        echo "That is correct!";
                    } else {
                        echo "Sorry that is incorrect.";
                    }
                }
        ?>
    </form>
</body></html>

我的思维过程的快速概述:我在1-12之间随机生成一个数字,并在switch语句中使用该数字来回显颅神经的名称。我使用for循环生成提交按钮,其名称包含与其显示值对应的颅神经数。最后,我检查答案是否正确的计划是使用if语句将随机生成的数字与所选数字进行比较,如果是,则输出一条消息说明它们是正确的。

这就是问题所在:当我点击任何按钮时,无论是否正确答案,页面都会刷新,而不会就答案是对还是错提供任何反馈。有人可以指出这个漏洞吗?

此外,如果在此脚本中有更优化的方式,请告诉我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这种方法存在轻微问题。您的脚本实际上需要考虑两个步骤:首先,使用随机选择的颅神经将页面发送到客户端,然后将选择与随机指定的选项进行比较。

如果您希望脚本执行此操作,则必须添加一些逻辑,以便它知道它必须做出不同的反应。

if (isset($_POST))
 {/*compare the user choice with what you had sent. 
  you will have to do add an input to your form containing the random value AND the chosen value, or you eon't be able to compare them*/}

目前,您正在尝试一次性完成所有这些操作,例如,您在用户的回复价值之前甚至会在您的帖子中收到它!了解一旦发送到客户端(浏览器),您的页面就不再链接到php了。所以这里:

if($generated_nerve_number == $selected_nerve_number) {

你实际上是在比较你刚刚生成的随机数和你在未来的用户中得到的答案,因为他还没有在屏幕上看到它:)