0

所以我试图建立一个没有任何错误的网站,但是我不断收到这个错误:

第 31 行第 107 列 - 错误:错误值 display.php?url=元素 a 上属性 href 的项目管理知识体系指南:查询中的非法字符:不是 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>";

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

4

2 回答 2

3

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

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

这应该是:

<a href='display.php?url=".$book."'>
于 2014-11-24T15:50:20.840 回答
1

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

请注意,该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'])。

于 2014-11-24T16:06:09.090 回答