PHP / HTML错误 - 非法字符

时间:2014-11-24 15:46:56

标签: php html validation illegal-characters

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

  

第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'>

&#39;&gt;&#39;正在突出显示结尾处的符号,并且每行都会重复此操作。

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

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

如何阻止这种想法?任何帮助表示赞赏:)

2 个答案:

答案 0 :(得分:3)

您的标记在查询字符串参数前面有一个空格:

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

这应该是:

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

答案 1 :(得分: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'])。