// +---------------------------------------------------------------------- declare (strict_types = 1); namespace addon\docs\controller; use addon\docs\model\DocsProject; use addon\docs\service\DocSearchService; /** * 文档搜索 * * @author ywxapp */ class Search extends DocsFrontend { /** * 搜索结果页 */ public function index() { $keyword = trim((string) $this->request->get('kw', '')); $projectId = (int) $this->request->get('project_id', 0); $limit = (int) ($this->docsConfig['search_limit'] ?? 30); $limit = $limit > 0 && $limit <= 100 ? $limit : 30; $list = []; if ($keyword !== '') { // 限制关键词长度,避免超长串拖慢 LIKE 查询 $keyword = mb_substr($keyword, 0, 50, 'UTF-8'); $list = DocSearchService::search($keyword, $projectId, $limit); } // 关键词转义:搜索关键词原样输出到模板(input value、正文、提示等), // 不在控制器转义就会形成反射型 XSS(如 ?kw=">