$_POST[$variable]不起作用



对于输入表单,我需要随机输入名称和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'] .'">'

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

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

您希望输入的名称为'token_hash',值为您的随机值。

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

现在您可以在表单提交时访问令牌散列:

$token_hash = $_POST['token_hash'];

你需要像session这样的东西来在请求之间持久化值,例如

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

然后在下一页检索

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

@All我假设提问者希望有一个随机的post字段名和值


请注意,$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;
    }
}

你需要这样做,

$_POST["token_hash"]

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

由于生成的是一个随机值,所以不能指望$_POST[$token_hash]能起作用。

当你POST你的表单,你的PHP是随机生成$token_hash值再次。所以你应该把随机生成的值放在"value"属性中。

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

,你可以得到$_POST['token_hash']当你发布你的表单

最新更新