我想知道如果控制器中有一个需要参数的方法,并且用户手动更改了URL中的参数,并按下输入,则应显示默认页面。下面是我的bootstrap,然后我已经为URL错误创建了一个错误控制器。所以请给出一些编码指南,或者如果我的代码中有一些东西,请更改它。提前谢谢。
<?php
class App
{
protected $controller = 'indexController';
protected $method = 'index';
protected $params = array();
public function __construct()
{
$url = $this->parseUrl();
//print_r($url);
if (isset($url[0]))
{
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;
}
else
{
$error = new errorController();
$error->setError("Page Not Found");
echo $error->getError();
}
if (isset($url[1]))
{
if (method_exists($this->controller,$url[1]))
{
$this->method = $url[1];
unset($url[1]);
}
else
{
$error = new errorController();
$error->setError("Page Not Found");
echo $error->getError();
}
}
else
{
$error = new errorController();
$error->setError("Page Not Found");
echo $error->getError();
}
$this->params = $url ? array_values($url) : array();
call_user_func_array(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));
}
}
}
答案 0 :(得分:1)
方法本身必须检查提供的参数是否有效,否则抛出异常。之后只需捕获异常并触发并显示错误页面。
答案 1 :(得分:1)
好像你可以使用POST和$ _POST,而不是GET。然后,如果用户包含或更改参数将无关紧要,因为您的PHP将忽略它们。