在不同的php页面上使用$ _POST变量

时间:2015-09-07 19:59:58

标签: php html variables post input

编辑:感谢所有有用的答案,我解决了。

我似乎无法找到这个问题的答案,而且它可能非常简单。

我只是在创建一个有趣的页面,您可以从1-10中猜出一个数字。人1输入一个秘密号码,该人2将猜测。但是,我有很多问题从密码中存储 $ _POST。

TL; DR我无法将secretNumber的信息存储到guessnumber_guessed.php文件中。例如,查看guessnumber_guessed。 if语句的第一部分,如果inputNumber等于secretNumber,它应该说是正确的。问题是,variblae是未定义的,如何“传递信息”?

希望你们明白我的观点,非常感谢帮助

以下是代码:

guessnumber_welcome:

<form method="post" action="guessnumber.php">
    <input type="text" name="secretNumber" placeholder="Type the secret number"> 
    <input type="submit" name="submit" value="Send">
</form>

guessnumber.php:

<form method="post" action="guessnumber_guessed.php">
        <input type="text" name="inputNumber" placeholder="Guess the secret number"> 
        <input type="submit" name="submit" value="Guess!">
    </form>
<?php
        $secretNumber = $_POST["secretNumber"]

    ?>

guessnumber_guessed.php:

<form method="post" action="">
    <input type="text" name="inputNumber" placeholder="Guess the secret number"> 
    <input type="submit" name="submit" value="Guess!">
</form>

<?php
$inputNumber = $_POST["inputNumber"];

if ($inputNumber == $secretNumber) {
    echo "<p id=\"correctAnsw\"> CORRECT! </p>";

}
    else if ($inputNumber == 2) {
    echo "<p id=\"wrongAnsw\">You're very close. Go up a little!</p>";

    }

    else if ($inputNumber==4) {
    echo "<p id=\"wrongAnsw\">You're very close. Go down a little!</p>";


    }

    else if ($inputNumber > 10) {
    echo "<p id=\"wrongAnsw\">The number is you guessed is too high. Stay within the borders!</p>";

    }

    else if ($inputNumber < 1) {
    echo "<p id=\"wrongAnsw\">The number is you guessed is too low. Stay within the borders!</p>";

    }

    else {
    echo "<p id=\"wrongAnsw\">This is not the number. Try a new one!</p>";

    }
?>

2 个答案:

答案 0 :(得分:2)

会议无济于事。他们是面向用户的。如果第一个人正在使用该页面输入一个号码而第二个人在此之后,则在同一个会话中,在同一个浏览器上,您可以使用会话机制。

如果你正试图制作一个多用户游戏&#34;这两个人有不同的浏览器,这意味着你必须:

  1. 稍微配对这两个人(可能是房间机制)
  2. 使用某种服务器存储或缓存(您甚至可以使用memcached进行内存存储)来匹配这两个人及其答案。

答案 1 :(得分:1)

我遇到了类似的问题,试图在两个脚本之间传递一些url字符串,用于“两步”上传器。 在我看来,有两种解决方案,取决于您想要的安全级别:

  • guessnumber.php 中将$ _POST ['secretNumber']值放入输入类型=“隐藏”

    <input type="hidden" value="<?php echo $_POST['secretNumber']; ?>">
    

    这样,该值将通过POST传递给第二个脚本,并将在$ _POST数组中提供。

    这种方法对于敏感数据是不安全的,因为只需通过浏览器devtool访问html源的每个人都可以读取或修改它!

  • 第二种更安全的解决方案是使用 php session
    guessnumber.php 中启动php会话并以这种方式保存值:

    if ( !session_id() ) {
        session_start();
    }
    $_SESSION['secretNumber'] = $_POST['secretNumber'];
    

    然后在 guessnumber_guessed.php 恢复会话并从那里获取值

    if ( !session_id() ) {
        session_start();
    }
    $secretNumber = $_SESSION['secretNumber'];
    

我强烈推荐第二种解决方案 希望它有所帮助:)