2011-01-20 90 views
0

好吧,我必須從$_SERVER['REQUEST_URI']從url獲取控制器和方法?

一個網址讓說,它給我們一個網址

http://localhost/controller/method 

我已經試過類似

explode('/',$_SERVER['REQUEST_URI']) 

,它給了我們像

array 
    0 => string '' (length=0) 
    1 => string 'controller' (length=10) 
    2 => string 'method' (length=6) 

獲得控制器或方法的最佳方式是什麼?或刪除數組中的0? (第一陣列)?

所以它會像

$controller = 'controller'; 
$method = 'method'; 

從上方投入。 也許關於名單?仍然沒有線索使用列表()。

編輯繼承人什麼香港專業教育學院迄今所做

$this->url = str_replace(config('foldertoscript'), NULL, $_SERVER['REQUEST_URI']); 
    $hello = explode('/',$this->url);var_dump($hello); 
    array_shift($hello); 
    list($controller,$method) = $hello; 
    var_dump($hello,$controller); 

一類

感謝拜訪。

亞當·拉馬丹

+2

$ _SERVER ['REQUEST_URI']在您包含控制器/方法的情況下不包含主機名。所以不用擔心。我相信你做錯了 – 2011-01-20 08:22:14

+0

list()運算符就是爲了這個目的。 **然而,**我會使用不爆炸,但正則表達式一次作出**驗證**。 – 2011-01-20 08:37:20

回答

0

要刪除數組的第一個元素,你可以使用array_shift()

$_SERVER['REQUEST_URI']爲您提供沒有「http://www.yoursite.com」的網址。

您可以使用類似這樣

<?php 
function curPageURL() { 
$pageURL = 'http'; 
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
$pageURL .= "://"; 
if ($_SERVER["SERVER_PORT"] != "80") { 
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
} else { 
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
} 
return $pageURL; 
} 

echo curPageURL(); 
?> 

希望這有助於。

0

對於我使用url_rewriting同一事項。

我有一個規則說^([a-zA-Z0-0 -_ \ /。] +)$ index.php?url = $ 1 (這不是我的代碼的複製粘貼,但你得到想法) 然後如果你說$ _URL = $ _REQUEST [「url」];

$ directive = explode(「/」,$ _ URL);

你會得到你所需要的,作爲參數,你可以說,模塊/方法/ ID/1 /數據/ 2

,你必須把你的參數的照顧,如果你使用GET方法它的工作原理爲

僅導航(因爲它應該使用)。也使得這些東西更安全,因爲沒有人可以通過獲取或任何「智能」指令來發送SQL

注入。

相關問題