在think\App类的module方法的获取控制器的代码后面加上
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
5.1版本在think\route\dispatch\Url类的parseUrl方法,解析控制器后加上
if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
多级控制器 这个正则表达式是不对的,改一下正则表达式if (!preg_match('/^[A-Za-z][\w\.]*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }
preg_match('/^[A-Za-z](\w)*$/', $controller)
这个正则表达式, 确实存在问题.
下面这种方式, 会更好一些.
preg_match('/^[A-Za-z]\w*+$/', $controller)