目前,我在一个小网站上。 用户登录后,他将被重定向到他的个人资料页面。 到目前为止,我已使用以下代码路由网址:
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
答案 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];
}
}