从 url 获取控制器和方法?

发布于 2024-10-12 15:16:48 字数 908 浏览 1 评论 0原文

好的,我有一个来自 $_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() 的线索。

编辑这里是我到目前为止

    $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

ok i have a url from $_SERVER['REQUEST_URI']

lets say it give us a url

http://localhost/controller/method

i have tried something like

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

and it gave us like

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

what is the best way to get the controller or method ? or removeing the 0 in the array ? ( first array ) ?

so it will be like

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

from above inputs.
maybe about list ? still no clue using list().

edit heres what ive done so far

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

in a class

Thanks for looking in.

Adam Ramadhan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寄居者 2024-10-19 15:16:48

要删除数组的第一个元素,可以使用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();
?>

希望这会有所帮助。

To remove the first element of an array, you can use array_shift().

$_SERVER['REQUEST_URI'] gives you the url without the "http://www.yoursite.com".

You can use something like this

<?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();
?>

Hope this helps.

俯瞰星空 2024-10-19 15:16:48

使用 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];

Use array_shift to remove the first array item.

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

Example:

$your_array = array_shift($your_array);
$controller = $your_array[0];
$method = $your_array[1];
陌上芳菲 2024-10-19 15:16:48

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

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

$指令 = 爆炸("/",$_URL);

你会得到你需要的,至于参数,你可以说 module/method/id/1/data/2

你必须照顾好你的参数,如果你

只使用 GET 方法进行导航,它就可以工作(因为它应该是用过的)。也使得事情变得更加安全,因为没有人可以

通过 get 或任何“智能”指令发送 SQL 注入。

For the same matter I use url_rewriting.

I have a rule that says ^([a-zA-Z0-0-_\/.]+)$ index.php?url=$1
(this is not a copy paste from my code, but you get the idea)
then if you say $_URL = $_REQUEST["url"];

$directive = explode("/",$_URL);

you will get what you need, as for the parameters you could say module/method/id/1/data/2

you have to take care of your parameters and it works if you use the GET method for

navigation only(as it should be used). Also makes the stuff much safer as no one can send SQL

injections via get or any "smart" directives.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文