получить контроллер и метод из URL? - PullRequest
0 голосов
/ 20 января 2011

Хорошо, у меня есть URL от $_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';

сверху входов.может о списке?до сих пор не знаю, используя list ().

изменить вот что я сделал до сих пор

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

в классе

Спасибо, что заглянули.Адам Рамадан

Ответы [ 3 ]

0 голосов
/ 20 января 2011

Используйте 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];
0 голосов
/ 20 января 2011

Для того же вопроса я использую url_rewriting.

У меня есть правило, которое гласит ^ ([a-zA-Z0-0 -_ \ /.] +) $ Index.php? Url = $ 1 (это не копия вставки из моего кода, но вы поняли идею), если вы скажете $ _URL = $ _REQUEST ["url"];

$ directive = explode ("/", $ _ URL);

вы получите то, что вам нужно, что касается параметров, которые вы можете сказать, модуль / метод / id / 1 / data / 2

, вы должны позаботиться о ваших параметрах, и это работает, если выиспользуйте метод GET только для навигации

(как следует использовать).Кроме того, это значительно повышает безопасность, поскольку никто не может отправлять SQL

инъекции через get или любые «умные» директивы.

0 голосов
/ 20 января 2011

Чтобы удалить первый элемент массива, вы можете использовать array_shift().

$_SERVER['REQUEST_URI'] дает вам URL без "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();
?>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...