PHP/HTML 错误 - 非法字符


PHP/HTML Error - Illegal Character

所以我正在尝试制作一个没有任何错误的网站,但是我不断收到此错误:

第 31 行第 107 列 - 错误:值显示错误.php? url=A 指南 元素 A 上属性 HRF 的项目管理知识体系: 查询中的非法字符:不是 URL 代码点。

这是它突出显示的代码中给出错误的部分:

</tr><tr><td><a href='display.php? click=A GUIDE TO THE PROJECT MANAGEMENT BODY OF KNOWLEDGE'>

末尾符号的">"正在突出显示,并且对每一行重复此操作。

这是导致错误的源代码行:

$book = $row['bookTitle'];
echo "<td><a href='display.php? url=".$book."'>'n" .$book."</a></td>";

关于如何阻止这种情况的任何想法?任何帮助都值得赞赏:)

a 标签在查询字符串参数之前有一个空格:

<a href='display.php? url=".$book."'>

这应该是:

<a href='display.php?url=".$book."'>

我不完全确定错误的确切原因,但您正在将原始随机输入注入 URL 和 HTML 文档中。您需要正确转义它们:

  • 对于网址:rawurlencode()
  • 对于 HTML: htmlspecialchars()

请注意,href 属性的值包含一个注入到 HTML 中的 URL,因此您需要两种转义机制:

$book = $row['bookTitle'];
echo "<td><a href='display.php?url=" . htmlspecialchars(rawurlencode($book)) . "'>'n" .
    htmlspecialchars($book) . "</a></td>";

我还修复了我认为有点错别字的问题(您可能期望$_GET['url']而不是$_GET[' url'])。