我意识到类似的问题已经出现了几次,但我似乎找不到一个可以帮助我做的事情。
我们有一个 config.php 文件,它基本上是用户设置的变量列表及其值,例如:
$OUR_EMAIL_ADDRESS = 'test@test.com';
$OUR_WEBSITE = 'www.test.com';
就像所有其他用户一样,我们希望通过Javascript传输PHP值。
我们已经有一种方法可以通过ajax做到这一点 - 但它并不像我们想要的那样灵活,因为每个变量都需要一个自定义脚本/php页面:
Part 1 - javascript (jquery(
$.get("/getConfig_email.php", function(email){
alert(email);
});
第 2 部分:getConfig_email.php
<?php
echo $OUR_EMAIL_ADDRESS_VALUE;
?>
问题:
有没有办法让PHP使用字符串作为变量名?即。我想做的是:
Part 1 - javascript (jquery(
$.get("/getConfig.php?name=OUR_EMAIL_ADDRESS_VALUE", function(email){
alert(email);
});
第 2 部分:获取配置.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 命令可以为我做到这一点!
提前非常感谢。
也许更好的选择是在数组中设置配置变量:
$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] : "";
否则,这可能是脚本的真正安全问题。
是的,可以通过variable variables
:
echo $$var_name;
但是,这是不明智的,因为您正在接受用户输入,并且用户可能会获得应该隐藏的内部变量的值。
创建一个包含所有配置变量的字典,并使用它来按名称查找变量