2015-04-12 104 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 –