使用变量名作为参数,通过Ajax获取PHP变量值
我意识到类似的问题已经出现过好几次了,但我似乎找不到一个对我正在努力做的事情有帮助的问题 我们有一个config.php文件,它基本上是用户设置的变量列表,以及它们的值,例如:使用变量名作为参数,通过Ajax获取PHP变量值,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我意识到类似的问题已经出现过好几次了,但我似乎找不到一个对我正在努力做的事情有帮助的问题 我们有一个config.php文件,它基本上是用户设置的变量列表,以及它们的值,例如: $OUR_EMAIL_ADDRESS = 'test@test.com'; $OUR_WEBSITE = 'www.test.com'; 就像所有其他用户一样,我们希望通过Javascript传输PHP值 我们已经有了一种通过ajax实现这一点的方法,但它并不像我们希望的那样灵活,因为每个变量都需要一个自定
$OUR_EMAIL_ADDRESS = 'test@test.com';
$OUR_WEBSITE = 'www.test.com';
就像所有其他用户一样,我们希望通过Javascript传输PHP值
我们已经有了一种通过ajax实现这一点的方法,但它并不像我们希望的那样灵活,因为每个变量都需要一个自定义脚本/php页面:
第1部分-javascript(jquery)
第2部分:getConfig_email.php
<?php
echo $OUR_EMAIL_ADDRESS_VALUE;
?>
<?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;
?>
第2部分:getConfig.php
<?php
echo $OUR_EMAIL_ADDRESS_VALUE;
?>
<?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] : "";
否则,这可能是脚本的真正安全问题。更好的选择可能是在数组中设置配置变量:
$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] : "";
否则,您的脚本可能会出现真正的安全问题。是的,可以通过以下方式解决:
但是,这是不明智的,因为您正在接受用户输入,并且用户可能会获得应该隐藏的内部变量值。是的,可以通过以下方式获得:
但是,,这是不明智的,因为您正在接受用户输入,并且用户可能会获得应该隐藏的内部变量的值。创建一个包含所有配置变量的字典,并使用它按名称查找变量。创建一个包含所有配置变量的字典,并使用它按名称查找变量。是的。。。当我第一次想做这个的时候我就是这么想的。。。事后看来,这绝对是我们应该做的。实际上,只有一个页面,用户可以在其中设置直接变量。这个脚本只对登录的用户可用-(我没有粘贴上面的全部内容),还有其他安全检查。那么,@mellamokb的解决方案将在您的情况下起作用。所以使用
$var\u name=$\u GET['name'];echo$$var_name代码>。但无论如何,在你未来的项目中尽量避免这种“肮脏的黑客行为:)是的。。。当我第一次想做这个的时候我就是这么想的。。。事后看来,这绝对是我们应该做的。实际上,只有一个页面,用户可以在其中设置直接变量。这个脚本只对登录的用户可用-(我没有粘贴上面的全部内容),还有其他安全检查。那么,@mellamokb的解决方案将在您的情况下起作用。所以使用$var\u name=$\u GET['name'];echo$$var_name代码>。但无论如何,在你未来的项目中尽量避免这种“肮脏的黑客行为:)啊——这可能正是我们所追求的。我已经阅读了php页面,但没有真正了解如何使用它们。所以在我给出的示例中,我只想:$name=$\u GET['name'];echo$$name代码>这看起来对吗?显然我们会尽我们所能来处理安全问题,比如命名和检查允许收集的变量名之类的。啊-这可能正是我们想要的。我已经阅读了php页面,但没有真正了解如何使用它们。所以在我给出的示例中,我只想:$name=$\u GET['name'];echo$$name代码>这看起来对吗?显然,我们会尽我们所能来处理安全问题,比如命名和检查允许收集的变量名称之类的。唉,我们已经走得太远了。新项目都是这样运作的。唉,我们走得太远了,无法做到这一点。新项目都是这样工作的。