2011-11-06 20 views
6

PHPで$ _POST配列キーの値として変数を渡す方法はありますか?それとも不可能なのでしょうか?

$test = "test"; 
echo $_POST[$test]; 

おかげ

+2

あなたが実証するものはうまくいくはずですが、何をしようとしているのか分かりません。 –

+0

ああ、それは動作します。別のコードがそれを投げていました。 – Dietpixel

答えて

9
$_POST['key'] = "foo"; 
echo $_POST['key']; 

私が右理解している場合は、あなたは$_POSTキーを設定したいです。

4

はい、はい次のことができます。

$postName = "test"; 
$postTest = $_POST[$postName]; 
$_POST["test"] == $postTest; //They're equal 
0

あなたが言ったと同じように作品...

例:コメントやdownvotesに基づいて更新

// create an array of all the GET/POST variables you want to use 
$fields = array('salutation','fname','lname','email','company','job_title','addr1','addr2','city','state', 
       'zip','country','phone','work_phone'); 

// convert each REQUEST variable (GET, POST or COOKIE) to a local variable 
foreach($fields as $field) 
    ${$field} = sanitize($_POST[$field]); 
?> 

....

コメントで以下に示唆されたとして、私は、ないですすべてのデータをループして、変数のループリストを変数に追加し、変数に格納して変数に格納します。

私はdを取得する方法を変更しましたata

+1

これはほとんど実行されるべきではありません、私は簡単にあなたのコードを注入することができますまたはシステム変数を変更し、クエリ文字列を変更してシステム情報を収集する! – Fabrizio

+0

@Fabrizio私の知らないこと申し訳ありません - あなたは私のコードを注入することができます - 配列はサーバー側ですか?どのようにそれぞれ異なるものを表示するのですか – ManseUK

+0

'$ mysql_user'というシステム変数があり、'?mysql_user = root'のようなクエリを渡すと、ユーザを使ってmysqlサーバに接続しようとします'ルート'。それは私に必要以上の情報を与える画面上のエラーを与える可能性があります。 PHPで使われていた 'register_global'をエミュレートしようとしています。 – Fabrizio

14

私はあなたが正しいとすれば、ポストを介してあるPHPファイルから別のPHPファイルに変数を渡したいと思っています。これはいくつかの点で可能です。 HTML形式で

1.

<form action="target.php" method="post"> 
    <input type="text" name="key" value="foo" /> 
    <input type="submit" value="submit" /> 
</form> 

あなたが提出ボタンをクリックすると、target.php$_POST['key']'foo'が含まれています。

PHP

$context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'header' => "Content-type: text/html\r\n", 
     'content' => http_build_query(array('key' => 'foo')) 
    ), 
)); 
$return = file_get_contents('target.php', false, $context); 

のように同じことから直接2、および$returntarget.phpによって生成されたすべての出力が含まれます。

3を介してAJAX(jQueryの(JavaScriptの))2.のように

<script> 
$.post('target.php', {key: 'foo'}, function(data) { 
    alert(data); 
}); 
</script> 

同じことが、今datatarget.phpからの出力が含まれています。

関連する問題