我想了解如何在发布请求后保留价值。
在我的代码中,我有以下变量:
myvar
是0-5之间的随机值。如果myans
我会从输入中得到myans == myvar
,那么结果将为真(否则它将为假)。
我在提交我的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>
答案 0 :(得分:0)
您遇到的问题是由于您的随机数生成器在与原始数字进行比较之前创建了一个新数字。我做了一些更改,只设置“myvar”,如果它是空的。这只会设置一次,但至少你可以看到你的代码按预期工作。我建议您在添加之前计划出您想要的功能。
我也把你从“$ _COOKIE”变成了“$ _SESSION”变种。它们对客户端是隐藏的,如果不刷新,则默认情况下持续约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>