通过Ajax获取PHP变量值,变量名称作为参数
我意识到类似的问题已经出现了几次,但我似乎无法找到一个能够帮助我尝试去做的事情。通过Ajax获取PHP变量值,变量名称作为参数
我们有一个config.php文件基本上是一个变量列表,用户组,它们的值,如:
$OUR_EMAIL_ADDRESS = '[email protected]';
$OUR_WEBSITE = 'www.test.com';
就像所有我们想传递一个PHP值的其他用户通过Javascript。
我们已经这样做的方式,通过AJAX - 但它不是那么灵活,因为我们想为每一个变量需要自定义脚本/ PHP页面:
第1部分 - 的JavaScript(jQuery的)
$.get("/getConfig_email.php", function(email){
alert(email);
});
第2部分:getConfig_email.php
<?php
echo $OUR_EMAIL_ADDRESS_VALUE;
?>
问题:
有没有办法让PHP可以使用字符串作为变量名?即。我想要做的是这样的:
第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命令可以为我做到这一点!
非常感谢提前。
也许是更好的选择将是设置配置变量数组里面:
$CFG = array(
'OUR_EMAIL_ADDRESS' => '[email protected]',
'OUR_WEBSITE' => 'www.test.com'
);
而且随着拿起他们:
$var_name = $_GET['name'];
echo isset($CFG[$var_name]) ? $CFG[$var_name] : "";
否则,它可能是你的脚本的真正的安全问题。
是的...那是什么,我想,当我第一次想做到这一点......现在回想起来 - 这绝对是我们会做什么。事实上,用户可以设置一个页面来设置直接变量。 这个脚本只能用于登录用户 - (我没有粘贴上面的所有东西),还有其他安全检查。 – user749330 2012-04-28 16:39:24
那么,@mellamokb的解决方案将在你的情况下工作。所以使用'$ var_name = $ _GET ['name']; echo $$ var_name;'。但无论如何,尽量避免在你的未来项目中的这种“肮脏的黑客”:) – VisioN 2012-04-28 17:04:52
啊 - 这可能正是我们所追求的。我已经阅读了这个PHP页面,但并没有真正知道如何使用它们。 所以在我给的例子 - 我只是: '$ name = $ _GET ['name']; echo $$ name;' 这看起来不错吗? – user749330 2012-04-28 16:43:55
显然会做我们能够处理的安全问题,比如命名和检查允许收集的变量名称等等。 – user749330 2012-04-28 16:46:49
@ user749330:你说的没错。 – mellamokb 2012-04-28 17:37:45