2013-02-28 86 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