0

我正在做一个刽子手游戏。当用户单击一个字母时,它会附加到 url,guess=G但是如果我单击重置按钮(提交按钮),猜测仍然会在 URL 中,并且会触发以下函数。

    function reset_game() {
        $_SESSION["word"] = generate_word("dictionary.txt");
        $_SESSION["word-progress"] = turn_to_underscores($_SESSION["word"]);
        $_SESSION["chances-left"] = 9;
        $_SESSION["guesses"] = array();
        $_SESSION["incorrect-guesses"] = array();

        header('Location: index.php');
    }

这很好,除了因为 GET 请求仍在 URL 中,它将作为猜测提交,直到我再次单击该按钮。

这是因为在我的代码的更下方,我检查是否有 GET 请求,如果有则对其采取行动。有没有一种方法可以在单击重置按钮时清除 GET 请求(无 JavaScript,PHP 更是如此),而不是在检查猜测是否正确时使用 if 语句?后一种解决方案听起来......变通了。

4

2 回答 2

1

给每个提交按钮一个不同的name属性值,并根据您在$_GET. 例如,如果您有名称为“guess”和“reset”的提交按钮,那么您可以测试isset($_GET['guess'])是否单击了“guess”按钮,并isset($_GET['reset'])查看是否单击了“reset”按钮。

有关此方法的进一步阅读,请参阅此问题和答案

或者,将两个按钮放在不同的<form>元素中,这将使它们各自的<input>元素彼此隔离。

于 2013-02-19T16:06:08.333 回答
0

弄清楚了。确保我的表单使用属性action="index.php"而不是简单地提交action="",这将 GET 请求保留在 URL 中。

于 2013-02-19T16:32:20.710 回答