这是我的代码
<?php
if (!strtoupper($_SERVER['REQUEST_METHOD']) == 'POST'){
$hdnNumber = rand(10, 500);}
else
if(isset($_POST["hiddenNumber"]))
$hdnNumber = $_POST["hiddenNumber"];
echo $hdnNumber ;
?>
<form action="" method="post">
Number: <input type="text" name="number"><br>
<input type="hidden" name="hiddenNumber" value="<?= $hdnNumber ?>" />
<input type="submit" value="submit">
</form>
我想在所有表单帖子上传播$ hdnNumber的值,其值应该是页面加载时生成的随机值。
当我提交表单时,它会再次创建一个新的随机数,但我只想保留第一个值。
请帮忙。 提前致谢
答案 0 :(得分:2)
您应该只在值为空/未设置时设置值,例如
$hdnNumber = isset($_POST['hiddenNumber']) ? $_POST['hiddenNumber'] : rand(10,500);
答案 1 :(得分:1)
要赞美Marc B's answer以及ternary operator的使用,您可以使用sessions将该(隐藏)值传递到另一个页面以及随后的任何页面使用会话时的页面。
Sidenote :虽然您可以使用
在第二页中传递该<(em>隐藏)号码
$hdnNumber = $_POST['hiddenNumber'];
你仅限于此。
如果您想将它用于与数据库相关的工作,您可以将其分配给会话变量,该变量随后可以在其他任何地方使用。
这可以证明在数据库工作中实现时很有用。
HTML表单
<?php
session_start();
// Borrowed from Marc B's answer
$hdnNumber = isset($_POST['hiddenNumber']) ? $_POST['hiddenNumber'] : rand(10,500);
$_SESSION['hiddenNumber']=$hdnNumber;
// my own testing method
if(isset($_POST['submit'])){
echo $_SESSION['hiddenNumber'];
}
?>
<form action="" method="post">
Number: <input type="text" name="number"><br>
<input type="hidden" name="hiddenNumber" value="<?= $hdnNumber ?>" />
<input type="submit" name="submit" value="submit">
</form>
<a href="hidden_session.php">Verify the number</a>
hidden_session.php
(将回显最初的HTML表单中的数字)
<?php
session_start();
$test=$_SESSION['hiddenNumber'];
echo $test;
?>
<a href="session_check2.php">Go here</a>
session_check2.php
(将回显相同的数字,最初来自HTML表单,传递到第二页)
<?php
session_start();
$test=$_SESSION['hiddenNumber'];
echo $test;
使用echo $_SESSION['hiddenNumber'];
也可以。