【问题标题】:How to keep value after post request?post请求后如何保持价值?
【发布时间】:2016-07-04 01:25:43
【问题描述】:

我想学习如何在发布请求后保持价值。

在我的代码中,我有这些变量:

  1. myvar
  2. myans
  3. 结果

myvar 是 0-5 之间的随机值。如果myans == myvar,我将从我的输入中得到myans,那么结果将为真(否则为假)。

我在提交我的ans 之前看到myvar 只是为了尝试,但是虽然我在发送它时看到了var,但我看到的有时是假的,有时是真的。我错过了什么?

example.php:

<?php

    session_start();

    if (!isset($_COOKIE['result'])) {
        setcookie("result","EMPTY");
    }

    setcookie("myvar",rand(0,5));

    if (!empty($_POST)) {

        if ($_POST['myans'] == $_COOKIE['myvar']) {
            setcookie("result","TRUE");
        }
        else {
            setcookie("result","FALSE");
        }
    }
?>

<html>
<head>
    <title>Example</title>
</head>
<body>
    <form method="post" action="">
        <?php echo $_COOKIE['myvar'] ?>
        <input type="text" name="myans">
        <input type="submit" value="Send">
        <?php echo $_COOKIE['result'] ?>
    </form>
</body>
</html>

【问题讨论】:

    标签: php forms cookies


    【解决方案1】:

    您遇到的问题是由于您的随机数生成器在与原始数字比较之前创建了一个新数字。我做了一些更改,只设置“myvar”,如果它是空的。这只会设置一次,但至少您可以看到您的代码按预期工作。我建议您在添加之前计划好您想要的功能。

    我还将您从“$_COOKIE”变量切换到“$_SESSION”变量。它们对客户端是隐藏的,如果不刷新,php 默认会持续大约 24 分钟。我不知道您打算将其用于什么目的,但使用 cookie 允许最终用户操纵该信息。如果这不是您关心的问题,请务必取消注释“setcookie()”行。

    <?php
    
        session_start();
    
        if (!isset($_SESSION['result'])) {
            //setcookie("result","EMPTY");
            $_SESSION["result"] = "EMPTY";
        }
    
        //setcookie("myvar",rand(0,5));
        if(empty($_SESSION["myvar"])){
            $_SESSION["myvar"] = rand(0,5);
        }
        //
    
        if (!empty($_POST)) {
            if ($_POST['myans'] == $_SESSION['myvar']) {
                //setcookie("result","TRUE");
                $_SESSION["result"] = "TRUE";
            } else {
                //setcookie("result","FALSE");
                $_SESSION["result"] = "FALSE";
            }
        }
    
    ?>
    
    <html>
    <head>
        <title>Example</title>
    </head>
    <body>
    <form method="post" action="">
        <?php echo isset($_SESSION['myvar']) ? $_SESSION['myvar'] : ""; ?>
        <input type="text" name="myans">
        <input type="submit" value="Send">
        <?php echo isset($_SESSION['result']) ? $_SESSION['result'] : ""; ?>
    </form>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多