从url获取控制器和方法?

时间:2011-01-20 08:14:51

标签: php model-view-controller routing

好的,我有$_SERVER['REQUEST_URI']

的网址

让我们说它给了我们一个网址

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';

来自上面的输入。 可能关于列表?仍然没有使用list()的线索。

编辑heres到目前为止我做了什么

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

在课堂上

感谢您的关注。

Adam Ramadhan

3 个答案:

答案 0 :(得分: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();
?>

希望这有帮助。

答案 1 :(得分:0)

使用array_shift删除第一个数组项。

http://php.net/manual/en/function.array-shift.php

示例:

$your_array = array_shift($your_array);
$controller = $your_array[0];
$method = $your_array[1];

答案 2 :(得分:0)

对于同样的问题,我使用url_rewriting。

我有一条规则说^([a-zA-Z0-0 -_ \ /。] +)$ index.php?url = $ 1 (这不是我的代码中的复制粘贴,但你明白了) 那么如果你说$ _URL = $ _REQUEST [“url”];

$ directive = explode(“/”,$ _ URL);

你会得到你需要的东西,你可以说模块/方法/ id / 1 / data / 2的参数

你必须处理你的参数,如果你使用GET方法

它就可以了 仅

导航(因为应该使用)。也使得这些东西更安全,因为没有人可以发送SQL

通过get或任何“智能”指令进行注射。