0

对于输入表单,我需要随机输入名称和 ID

我创建了随机值 $token_hash = random

然后输入字段

 <input type="hidden" name="' .$token_hash .'" id="' .$token_hash .'" value="some_value">

上面的下一个输入表单是用于检查从表单中获取什么值的 php 代码

 echo $_POST[$token_hash] .' $_POST[$token_hash]<br>';

问题是$_POST[$token_hash]回显空白值(无值)....

我也试过$_POST[' .$token_hash .']但不工作。

其他$_POST作品,但它们就像$_POST['some_value']


似乎终于得到解决方案。不明白为什么它以前不起作用。如果对别人有用。这是解决方案。

创建随机值 $token_hash = sha1(uniqid($time_when_form_submitted .'token' .$_SERVER["REMOTE_ADDR"]));

然后创建会话 $_SESSION['token_hash'] = $token_hash;

然后将会话传递给输入

echo '<input type="hidden" name="' .$_SESSION['token_hash'] .'" id="' .$_SESSION['token_hash'] .'" value="' .$_SESSION['token'] .'">'

然后从输入中获取会话值。此代码必须高于所有 previos $token_hash_from_input = $_SESSION['token_hash'];

然后用 $_POST[$token_hash_from_input]) 获取输入值

4

5 回答 5

2

您希望输入的名称为“token_hash”,值是您的随机值。

<input name="token_hash" value="<?php echo $token_hash; %>" type="hidden" />

现在您可以在表单提交时访问令牌哈希:

$token_hash = $_POST['token_hash'];
于 2013-02-28T07:28:24.393 回答
1

您需要像会话这样的东西来跨请求保留值,例如

session_start();
$_SESSION['token_hash'] = $token_hash;

然后在下一页检索它

session_start();
$token_hash = $_SESSION['token_hash'];
于 2013-02-28T07:30:50.130 回答
1

@All 我假设提问者想要一个随机的帖子字段名称和值


请注意,$token_hash每个请求的值都会发生变化。除非您将该值保存在会话或数据库中,否则没有持久性。我不知道你到底想做什么,所以很难给出建议。

但是这个代码示例可能会展示如何访问随机$_POST索引:

<input type="hidden" name="token_<?php echo uniqid();?>" value="<?php uniqid()?>" />

然后使用 foreach 获取值:

foreach($_POST as $key => $value) {
    if(strpos($key, 'token_') !== FALSE) {
        echo 'the token is ' . $value;
    }
}
于 2013-02-28T07:32:38.570 回答
0

由于您正在生成一个随机值,因此您不能指望 $_POST[$token_hash] 起作用。

当您发布表单时,您的 PHP 会再次随机生成您的 $token_hash 值。因此,您应该将随机生成的值放入“值”属性中。

     <input name="token_hash" value="<?php echo $token_hash; ?>" type="hidden" />

您可以在发布表单时使用 $_POST['token_hash'] 获取它。

于 2013-02-28T07:30:27.177 回答
0

你需要这样做,

$_POST["token_hash"]

如果token_hash真的发布了,你会得到一个

于 2013-02-28T07:24:30.107 回答