如何用url调用php函数?

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();

也可以过滤您通过get_defined_functions定义的内容。

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();
}

样本输出

旁注:也可以应用function_exists

1
2
3
if(!empty($_GET['function']) && function_exists($_GET['function'])) {
    // invoke function
}


如果使用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;
}