if (isset($_POST['fn'])) {
if ($_POST['fn'] == 'giveme_lb') {giveme_lb();}
elseif ($_POST['fn'] == 'giveme_lc') {giveme_lc();}
elseif ($_POST['fn'] == 'ico_save') {ico_save();}
...
}
所以我需要执行一个名为$_POST['fn']
值的函数。
有什么简短的说法吗?
类似$_POST['fn']();
答案 0 :(得分:2)
call_user_func($_POST['fn']);
请参见http://php.net/call_user_func。
但是实际上$_POST['fn']()
也可以在所有非古老的PHP版本中使用(如果我没记错的话,该版本为5.3 +)。
但是您绝对需要先 whitelist 值,这样用户才能在系统上调用任意代码:
$allowed = ['giveme_lb', ...];
if (!in_array($_POST['fn'], $allowed)) {
throw new Exception("Not allowed to execute $_POST[fn]");
}