带URL路由器的配置文件URL

时间:2016-07-12 06:04:13

标签: php url get url-routing

目前,我在一个小网站上。 用户登录后,他将被重定向到他的个人资料页面。 到目前为止,我已使用以下代码路由网址:

public function route($uri)
{

        $path = $uri;


        switch ($path) {
            case '/':
                return new FrontPageController;
            case '/login':
                return new LoginFormPageController;
            case '/action/login':
                return new LoginController;
            case '/register':
                return new RegisterFormPageController;
            case '/action/register':
                return new RegisterController;
            case '/Profile/' . :
                return new ProfilePageController;
            case '/logout':
                return new LogoutController();
            default:
                echo 'error';
        }
    }

但我如何通过个人资料页面进行操作? Profile uri应该是这样的:http://example.com/Profile/USERNAME并且可以从任何地方访问。 我尝试用

做到这一点
case '/Profile/' . $_SESSION['username']:
                return new ProfilePageController;

但是只有已登录的用户才能看到自己的页面。 如何识别我的路由器,在Profile /输入用户名后? 在登录个人资料页面后,我怎么能前往? 我可以路由到个人资料/并手动添加用户名吗?

顺便说一下:我使用NGINX请不要说修改.htaccess

1 个答案:

答案 0 :(得分:0)

您可以更改案例' /个人资料/'阻止这样的事情:

// check if route matches a pattern. preg_match return true if any matches found
case preg_match('/\/Profile\/([a-z0-9]+)/', $path, $matches): 

        // we remove the first element
        $params = array_shift($matches); 

        // pass params to construct
        return new ProfilePageController($params); 

现在回到你的控制器

class ProfilePageController   
{
    public function __construct($params)
    {
        $userid = $params[0];
    }

}