PHP切换与GET请求

Pho*_*hox 3 php get switch-statement

我正在为我的网站构建一个简单的管理区域,我希望URL看起来像这样:

http://mysite.com/admin/?home
http://mysite.com/admin/?settings
http://mysite.com/admin/?users
Run Code Online (Sandbox Code Playgroud)

但我不确定如何检索正在请求的页面,然后显示所需的页面.我在我的开关中尝试了这个:

switch($_GET[])
{
    case 'home':
        echo 'admin home';
        break;
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Fatal error: Cannot use [] for reading in C:\path\to\web\directory\admin\index.php on line 40

有没有办法解决?我想避免为GET请求设置值,例如:

http://mysite.com/admin/?action=home
Run Code Online (Sandbox Code Playgroud)

如果你明白我的意思.谢谢.:)

Tat*_*nen 12

使用$_SERVER['QUERY_STRING']- 包含以下位后的位?:

switch($_SERVER['QUERY_STRING']) {
    case 'home':
        echo 'admin home';
        break;
}
Run Code Online (Sandbox Code Playgroud)

您可以进一步采用此方法,并使用以下URL:

http://mysite.com/admin/?users/user/16/
Run Code Online (Sandbox Code Playgroud)

只需使用explode()将查询字符串拆分成段,获取第一个并将其余部分作为方法的参数传递:

$args = explode('/', rtrim($_SERVER['QUERY_STRING'], '/'));
$method = array_shift($args);

switch($method) {
    case 'users':
        $user_id = $args[2];

        doSomething($user_id);
        break;
}
Run Code Online (Sandbox Code Playgroud)

这种方法在许多采用MVC模式的框架中很流行.?完全摆脱这一点的另一个步骤是mod_rewrite在Apache服务器上使用,但我认为这个问题有点超出范围.