Is it possible to call a particular function in PHP using GET data?
我有一个文件functions.php,它有多种功能,比如:
1 2 3 4 5
| function do_this(){
}
function do_that(){
} |
现在,我想做一些奇怪的事情,比如从url调用这个函数:
functions.php?func=do_that
现在,我将这几行代码添加到了functions.php中。
1 2 3 4 5
| if(isset($_GET["func"])){
$func = $_GET["func"];
//How to call that function with name"$func"
} |
有什么好头脑吗?让我知道。如果不可能的话,也让我知道。因为我必须在工作中想出一个新的方法。
- 我会让你知道这是可能的,因为我做到了。:尽情享受吧!
- 这在PHP中称为变量函数。要格外小心!仅执行可接受值数组(白名单)中的函数。否则,将引入代码注入漏洞(严重的漏洞)
- 对。您可以使用call_user_func();php.net/manual/en/function.call-user-func.php
- 我们建议您做一些类似于$allowed = array('do_this', 'do_that'); if (!in_array($_GET['func'], $allowed)) { // ERROR, don't execute! }的事情。
您所需要做的就是在您得到这样的$u get变量时调用函数:
1 2 3 4 5
| if(isset($_GET["func"])){
$func = $_GET["func"];
$func();
} |
- 这不是所有需要的。需要更多的保护来限制对可接受函数的调用。例如,script.php?func=phpinfo会将服务器信息转储到屏幕上。