2012-04-28 16 views
1

同様の質問が数回現れたと私は気付きますが、私がしようとしていることを助けるものはありません。パラメータ名として変数名のAjaxでPHP変数値を取得する

は、我々は変数のリストは基本的にあるconfig.phpファイルを持っているそれらの値と一緒にユーザーのセット、例えば:

ただ、我々はPHPの値を転送する他のすべてのユーザーのような
$OUR_EMAIL_ADDRESS = '[email protected]'; 
$OUR_WEBSITE  = 'www.test.com'; 

Javascript経由で。

私たちは、AJAXを経由して、すでにこれを行う方法を持っている - 各変数は、カスタムスクリプト/ PHPのページを必要とするよう、私たちが望むほど柔軟ではありません。

パート1 - ジャバスクリプト(jqueryの)

$.get("/getConfig_email.php", function(email){ 
    alert(email); 
}); 

パート2:getConfig_email.php

<?php 
echo $OUR_EMAIL_ADDRESS_VALUE; 
?> 

質問:

PHPが文字列を変数名として使用できる方法はありますか?すなわち、私がやりたいことはこれです:

パート1 - パート2のjavascript(jqueryの)

$.get("/getConfig.php?name=OUR_EMAIL_ADDRESS_VALUE", function(email){ 
    alert(email); 
}); 

:getConfig.php

<?php 
$var_name = $_GET['name']; 

//some magic here to turn the name of the variable 
//in to the actual variable - a bit like a reverse extract 

echo $var_name.value; 
?> 

あなたはどう思いますか?これは何とか可能です - 私はこれを行うことができるPHPコマンドがほしいと思っています!

事前に感謝します。それはあなたのスクリプトの実際のセキュリティ上の問題かもしれないが、そうでない場合

$var_name = $_GET['name']; 
echo isset($CFG[$var_name]) ? $CFG[$var_name] : ""; 

$CFG = array(
    'OUR_EMAIL_ADDRESS' => '[email protected]', 
    'OUR_WEBSITE' => 'www.test.com' 
); 

そしてそれらを拾う:

答えて

0

はい、それはvariable variablesを介して可能である:

echo $$var_name; 

あなたはユーザー入力を取っているし、おそらく、ユーザが隠されることになっている内部変数の値を取得することができますので、しかし、これは賢明ではありません。

+1

ああ、これはまさに私たちが後にしているものかもしれません。私はこれでPHPページを読んだが、実際にはそれらを使用する方法を得ていない。 私が与えた例では、私はちょうど: '$ name = $ _GET ['name']; echo $$ name; ' そうでしょうか? – user749330

+0

明らかに、収集することが許可されている変数名や何かを命名してチェックするなど、セキュリティ上の問題に対処するためにできることはありますか。 – user749330

+0

@ user749330:あなたは正しいです。 – mellamokb

1

たぶん、より良いオプションは、アレイ内のconfig変数を設定することになります。

+0

うん...それは私が最初にこれをやってみたかったとき...後知恵で考えたものだった - それは間違いですが私たちは何をしただろうか。つまり、ユーザーが直接変数を設定できるページがあります。 このスクリプトは、ログインしたユーザーのみが使用できます(上記のすべてを貼り付けませんでした)。その他のセキュリティチェックがあります。 – user749330

+0

さて、あなたは@mellamokbのソリューションを利用することができます。したがって、 '$ var_name = $ _GET ['name'];を使用してください。 echo $$ var_name; 'しかし、とにかく、あなたの将来のプロジェクトでこのような「汚れたハック」を避けるようにしてください:) – VisioN

0

名で、すべての設定変数を持つ辞書を作成し、変数をルックアップするためにそれを使用

+0

悲しいかな、私たちはこれを行うには道のりが遠すぎます。新しいプロジェクトはすべてこのように機能します。 – user749330

関連する問題