PHP搜索功能中的Escape <script>标记破坏了网站的CSS

我在search.php上输入以下内容:

<input type="text" id="inputboxSearch" name="q" value="<?php if(isset($_GET["q"])){echo htmlspecialchars($_GET["q"], ENT_QUOTES, 'UTF-8');} ?>"

以及results.php页面上的以下代码:

<input type="text" id="inputboxSearch" name="q" value="<?php if(isset($_GET["q"])){echo htmlspecialchars($_GET["q"], ENT_QUOTES, 'UTF-8');} ?>"
$query = isset($_GET['q']) ? filter_var($_GET["q"], FILTER_SANITIZE_FULL_SPECIAL_CHARS) : '';
$query = strip_tags($query);
$query = trim($query);
<?php if ($query != '') {echo "You searched for '" . htmlspecialchars($query) . "' ";}?>

该脚本可以在每个搜索词中正常运行,但是如果搜索以词<脚本(无空格)开头,则网站的CSS会中断

搜索<脚本>的正确和安全的方法是什么?

评论