【发布时间】:2014-11-29 23:21:28
【问题描述】:
我正在制作一个带有游戏的PHP 网站,其中用户必须在表单中输入一些文本,然后我需要检查该文本是否与存储在$_SESSION["ptext"] 中的数组匹配。
如果匹配不正确,则用户将失去生命 ($_SESSION["lives"]),只要 $_SESSION["lives"] > 0,游戏就会继续,给用户另一个机会。因此,在检查这一点时,我不希望用户被重定向到另一个页面。
另外,我尝试使用$_SERVER["PHP_SELF"] 作为表单的action,但这会重新加载页面并重新启动计时器,这是我不想要的。代码在一个名为level1_1.php 的文件中,如下所示:
<h5>Type answer here: </h5>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<textarea rows="10" cols="50" name="userinput"></textarea>
<span> <?php echo $msg;?></span>
<br>
<input type="submit" name="Submit">
</form>
<?php
// validate user input
$userinput = "";
// if form submitted
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
// reduce user input to only letters and numbers
$userinput = preg_replace('/\s+/', '', $_POST["userinput"]);
// if incorrect, lose life
if (strcasecmp($userinput, $_SESSION["ptext"]) != 0)
{
$_SESSION["lives"]--;
// inform user
$msg = "Sorry, that is incorrect. Please try again.";
// if no more lives, game over!
if ($_SESSION["lives"] == 0)
{
redirect("gameover.php");
}
}
// otherwise, move on to next level
else
{
$msg = "Great job! Get ready for the next level!";
redirect("game.php");
}
}
?>
【问题讨论】:
-
在你使用
$_SESSION之前我错过了一个session_start()! -
我只复制了第二部分代码,但确实调用了session_start()。
标签: php html forms validation