2013-02-28 87 views
1

对于输入形式,我需要随机输入姓名和身份证

我创建的随机值 $ 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]) 获取输入值

+3

在每次请求$ token_hash将被设置为一个**不同**随机值 – hek2mgl 2013-02-28 07:28:24

+0

'var_dump($ token_hash,$ _POST)'并且看看你有什么......也许'$ token_hash'在你发布的脚本中被重新生成,并且它们根本不匹配? – Laimoncijus 2013-02-28 07:28:34

+0

可能你不能发送任何可以从'$ _POST ['random']' – Starx 2013-02-28 07:30:04

回答

0

你需要做的是这样的,

$_POST["token_hash"] 

如果token_hash真的过帐,你会得到一个

+2

他token_hash作为地方的变量。这个名字是动态的。 – 2013-02-28 07:25:24

+0

帖子的名称是一个随机变量 – hek2mgl 2013-02-28 07:26:12

+0

这意味着他不能总是用$ _POST ['token_hash']来访问它吗? – 2013-02-28 07:26:55

2

你想输入的名称是“token_hash”,并为您的随机值的值。

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

现在,您可以访问形式的令牌哈希提交:

$token_hash = $_POST['token_hash']; 
+0

谢谢你的回答,但我需要,而不是name =“token_hash”是name =“$ something_random”,然后$ _POST [$ something_random]来获得value =“<?php echo $ token_hash;%>” – user2118559 2013-02-28 07:56:47

+0

为什么?你以这种方式得到什么? – yourdeveloperfriend 2013-02-28 08:02:56

+0

如果我有名称=“电子邮件”,那么假设所有机器人“知道”该字段中必须输入电子邮件。如果对于电子邮件字段,我没有随机值名称=“34tYetc”,那么人类首先检查34tYetc是否为电子邮件,然后可以相应地编程bot。但是,如果字段值在每个页面加载时发生变化,那么编程就更困难了(我想) – user2118559 2013-02-28 08:29:03

0

既然你生成一个随机值,你不能指望$ _ POST [$ token_hash]工作。

当您发布的形式,你的PHP是随机生成AGAIN您$ token_hash值。所以,你应该把你的随机生成的值在“值”属性。

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

1

您需要类似会话的内容才能在请求中保留值,例如

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

然后检索它在接下来的页面

session_start(); 
$token_hash = $_SESSION['token_hash']; 
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; 
    } 
} 
+0

这样做有点笨拙。但它会工作。 – 2013-02-28 07:34:03

+1

:)随意编辑或扩展帖子,如果你想 – hek2mgl 2013-02-28 07:34:59

+0

实际上,如果他真的想拥有随机生成的NAME属性,这是一个好方法。但不知道他为什么要这么做。在值属性中发布随机值会更好。 – 2013-02-28 07:36:36