$ _ POST [$变量]不起作用
对于输入形式,我需要随机输入姓名和身份证
我创建的随机值 $ token_hash =随机
然后输入字段
<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]) 获取输入值
你需要做的是这样的,
$_POST["token_hash"]
如果token_hash
真的过帐,你会得到一个
他token_hash作为地方的变量。这个名字是动态的。 – 2013-02-28 07:25:24
帖子的名称是一个随机变量 – hek2mgl 2013-02-28 07:26:12
这意味着他不能总是用$ _POST ['token_hash']来访问它吗? – 2013-02-28 07:26:55
你想输入的名称是“token_hash”,并为您的随机值的值。
<input name="token_hash" value="<?php echo $token_hash; %>" type="hidden" />
现在,您可以访问形式的令牌哈希提交:
$token_hash = $_POST['token_hash'];
谢谢你的回答,但我需要,而不是name =“token_hash”是name =“$ something_random”,然后$ _POST [$ something_random]来获得value =“” – user2118559 2013-02-28 07:56:47
为什么?你以这种方式得到什么? – yourdeveloperfriend 2013-02-28 08:02:56
如果我有名称=“电子邮件”,那么假设所有机器人“知道”该字段中必须输入电子邮件。如果对于电子邮件字段,我没有随机值名称=“34tYetc”,那么人类首先检查34tYetc是否为电子邮件,然后可以相应地编程bot。但是,如果字段值在每个页面加载时发生变化,那么编程就更困难了(我想) – user2118559 2013-02-28 08:29:03
既然你生成一个随机值,你不能指望$ _ POST [$ token_hash]工作。
当您发布的形式,你的PHP是随机生成AGAIN您$ token_hash值。所以,你应该把你的随机生成的值在“值”属性。
当你发布你的表单时,你可以用$ _POST ['token_hash']得到它。
您需要类似会话的内容才能在请求中保留值,例如
session_start();
$_SESSION['token_hash'] = $token_hash;
然后检索它在接下来的页面
session_start();
$token_hash = $_SESSION['token_hash'];
我@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-28 07:34:03
:)随意编辑或扩展帖子,如果你想 – hek2mgl 2013-02-28 07:34:59
实际上,如果他真的想拥有随机生成的NAME属性,这是一个好方法。但不知道他为什么要这么做。在值属性中发布随机值会更好。 – 2013-02-28 07:36:36
在每次请求$ token_hash将被设置为一个**不同**随机值 – hek2mgl 2013-02-28 07:28:24
'var_dump($ token_hash,$ _POST)'并且看看你有什么......也许'$ token_hash'在你发布的脚本中被重新生成,并且它们根本不匹配? – Laimoncijus 2013-02-28 07:28:34
可能你不能发送任何可以从'$ _POST ['random']' – Starx 2013-02-28 07:30:04