我正在创建一个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");
}
}
?>
答案 0 :(得分:0)
<form action ="" method="post">
而不是
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
把
if(isset($_POST['Submit'])){
答案 1 :(得分:0)
您可能希望使用JS和AJAX提交表单。您可以使用jquery使这更容易。为了做到这一点,你需要将回答问题的逻辑放入一个单独的php文件中,该文件不负责显示任何内容,而是返回一组字符串中的一个,例如正确,不正确,没有生命等...... AJAX提交的表格将发布到这个新页面,响应将由java脚本处理,如果合适的话,迫使用户进入最终场景。
有关jquery的post方法的更多信息,请访问jQuery.post()
答案 2 :(得分:0)
PHP是服务器端,因此始终会重定向用户。 使用像JS这样的客户端(加上它有帮助的jQuery)。 检查文档: http://api.jquery.com/jquery.post/ http://api.jquery.com/jquery.ajax/
发送ajax请求并检查响应。 Ajax请求需要有一些身份验证令牌来识别用户,而后期操作文件需要访问同一会话,因此session_start。
基本上,您正在搜索ajax请求,在那里查看更多内容。 搜索大量示例。