所以,我正在尝试将变量转换为函数。
$go_menu=$_POST['menu'];
$go_menu();
Function potoato_chip()
{
echo "I like Doritos!";
}
Function apples()
{
echo "I like Fuji";
}
我从$go_menu=$_POST['menu']
获取数据,但$go_menu();
以下的所有内容都显示为空白。
完整代码在pastebin中为here。感谢任何帮助!我还在学习!
答案 0 :(得分:2)
在调用它之前确保它是可调用的:
$go_menu = $_POST['menu'];
if(is_callable($go_menu))
$go_menu();
保留一组有效值;这将解决您的“无内容”问题和您的安全问题:
$valid_actions = array('potato_chip', 'apples');
if(isset($_POST['menu']) && in_array($go_menu = $_POST['menu'], $valid_actions)) {
$go_menu();
}
答案 1 :(得分:1)
你不应该这样做:当你从POST获得该值时,将变量作为函数执行是非常不安全的!特别是因为您正在创建管理界面。如果需要,任何恶意的人都可以在你的代码中执行其他功能。
您应该使用if语句或switch语句来控制需要发生的事情。
请注意,Function
应在PHP中写为function
。
答案 2 :(得分:0)
首先,您的代码非常不安全。假设我修改了您的表单并提交POST
请求设置$_POST['menu']
,让我们说die
。这会使您的程序崩溃。你可以想象我还能做些什么。正确的方法是使用switch
:
switch $_POST['menu'] {
case "menu_1":
menu_1();
break;
case "menu_2":
menu_1();
break;
[...]
}
一般来说,我不喜欢使用变量变量或变量函数,因为很难跟踪变量的可能值。但是,如果经过适当验证,仍然可以使用它们,例如minitech的答案。但是,在你的情况下,由于你似乎只能选择有限的函数,我会使用switch
。