【发布时间】:2015-08-04 08:04:46
【问题描述】:
我按照 MVC 模式创建了一个网络应用程序。但是我在重定向 URL 时遇到了问题,格式是 www.something.com/controller/view/params。 然后,当 URL 指向 www.something.com/home 并且我注销时,状态将是 -> www.something.com/home/logout (家庭控制器 -> 注销方法)。 但是问题就在这里,现在如果我再次登录,URL 是: www.something.com/home/home/login。
我不知道我是否应该修改标题,“URL 构造函数”...
“url 构造函数”是:
class App{
protected $controller = 'home';
protected $method = 'index';
protected $params=[];
public function __construct(){
$url= $this->parseUrl();
//check if controller exists
if(file_exists('../app/controllers/' . $url[0] . '.php'))
{
$this->controller = $url[0];
unset($url[0]);
}
require_once '../app/controllers/'. $this->controller . '.php';
$this->controller = new $this->controller;
if(isset($url[1])){
if(method_exists($this->controller,$url[1])){
$this->method = $url[1];
unset($url[1]);
}
else
echo "that method doesnt exist";
}
$this->params = $url ? array_values($url) : [];
call_user_func_array([$this->controller, $this->method],$this->params);
}
public function parseUrl(){
if(isset($_GET['url'])){
return $url = explode('/',filter_var(rtrim($_GET['url'],'/'), FILTER_SANITIZE_URL));
}
}
}
以及注销方法:
public function logout() {
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]
);
}
session_destroy();
$this->view('home/login');
}
}
如何正确重定向?我做错了什么?非常感谢。
【问题讨论】:
标签: php url model-view-controller methods view