1

我意识到类似的问题已经出现过几次,但我似乎无法找到一个对我正在尝试做的事情有所帮助的问题。

我们有一个 config.php 文件,它基本上是用户设置的变量列表及其值,例如:

$OUR_EMAIL_ADDRESS = 'test@test.com';
$OUR_WEBSITE       = 'www.test.com';

就像所有其他用户一样,我们希望通过 Javascript 传输 PHP 值。

我们已经有办法通过 ajax 做到这一点——但它不像我们希望的那样灵活,因为每个变量都需要一个自定义脚本/php 页面:

第 1 部分 - javascript (jquery)

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

第 2 部分:getConfig_email.php

<?php
echo $OUR_EMAIL_ADDRESS_VALUE;
?>

问题:

有没有办法让 PHP 使用字符串作为变量名?IE。我想做的是:

第 1 部分 - javascript (jquery)

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

第 2 部分: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 命令可以为我做到这一点!

提前谢谢了。

4

3 回答 3

1

也许更好的选择是在数组中设置配置变量:

$CFG = array(
    'OUR_EMAIL_ADDRESS' => 'test@test.com',
    'OUR_WEBSITE' => 'www.test.com'
);

并通过以下方式获取它们:

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

否则,它可能是脚本的真正安全问题。

于 2012-04-28T15:34:18.480 回答
0

是的,可以通过variable variables

echo $$var_name;

但是,这是不明智的,因为您正在接受用户输入,并且可能用户可以获得应该隐藏的内部变量的值。

于 2012-04-28T15:34:55.780 回答
0

创建一个包含所有配置变量的字典,并使用它按名称查找变量

于 2012-04-28T15:35:22.533 回答