2011-01-20 87 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

注入。

相关问题