在php中传播隐藏字段的值

时间:2014-02-18 14:48:46

标签: php post hidden-field

这是我的代码

<?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的值,其值应该是页面加载时生成的随机值。

当我提交表单时,它会再次创建一个新的随机数,但我只想保留第一个值。

请帮忙。 提前致谢

2 个答案:

答案 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'];也可以。