How to call php function with URL?
你好,我想知道如何调用我刚从url写的函数?下面是我的PHP代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php require 'db.php'; function l1(){ echo"Hello there!"; } function l2(){ echo"I have no Idea what Im doing!"; } function l3(){ echo"I'm just a year 1 college student dont torture me sir!"; } ?> |
我试过http://127.0.0.1/study/sf.php?函数=l1,但它不会回显已写入的代码。
请给我指一个正确的方向。
是的,您可以提供该参数来调用用户定义的函数:
1 2 | $func = $_GET['function']; $func(); |
也可以过滤您通过
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function l1(){ echo"Hello there!"; } function l2(){ echo"I have no Idea what Im doing!"; } function l3(){ echo"I'm just a year 1 college student dont torture me sir!"; } $functions = $arr = get_defined_functions()['user']; // defined functions if(!empty($_GET['function']) && in_array($_GET['function'], $functions)) { $func = $_GET['function']; $func(); } |
样本输出
旁注:也可以应用
1 2 3 |
如果使用if/elseifs,可以执行一个选项:
1 2 3 4 5 6 7 8 | if($_GET['function'] == 'l1') { l1(); } else if($_GET['function'] == 'l2') { l2(); } |
或者您可以使用更具风险的方法,直接从输入调用函数名。
1 2 | $functionName = $_GET['function']; $functionName(); |
编辑:或者可以使用switch语句:
1 2 3 4 5 6 7 8 9 10 11 12 | switch($_GET['function']) { case 'l1': l1(); break; case 'l2': l2(); break; case 'l3': l3(); break; } |