2015-04-12 68 views
-2

你好编号想知道如何调用我刚刚从URL写入的函数吗? 波纹管是我的PHP代码。如何使用URL调用php函数?

<?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?function=l1但它不会回显写入的代码。

请指点我正确的方向。

+0

可能重复的[如何调用从存储在变量字符串PHP功能](http://stackoverflow.com/ questions/1005857/how-to-call-php-function-from-string-stored-in-a-variable) – Keelan

+2

但是认真重新考虑这一点。您不希望给您的访问者在代码中随机执行任何PHP函数的可能性。 – Keelan

+0

我不知道.. – learningXD

回答

0

一种选择,你可以做,如果使用IF/elseifs像这样:

if($_GET['function'] == 'l1') 
{ 
    l1(); 
} 
else if($_GET['function'] == 'l2') 
{ 
    l2(); 
} 

或者你可以使用一个冒险的做法,并直接从输入调用该函数的名称。

$functionName = $_GET['function']; 
$functionName(); 

编辑: 或者你可以使用switch语句:

switch($_GET['function']) 
{ 
    case 'l1': 
     l1(); 
    break; 
    case 'l2': 
     l2(); 
    break; 
    case 'l3': 
     l3(); 
    break; 
} 
+0

初学者应该在切换之前学习if/elseif。 – Mex

+0

这是我寻找的方法,但我不知道如何应用它。 – learningXD

+0

我已经为我的文章添加了switch语句的示例代码。 – Mex

2

是的,你可以说参数供给到主叫用户定义函数:

$func = $_GET['function']; 
$func(); 

还不如过滤你已经定义的通过get_defined_functions

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

Sample Output

旁注:function_exists也可以应用,以及:

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

这是一个很好的答案...您也在阻止用户执行他们想要的任何功能。 +1 –