由于缺少= string的引用,无法验证html

时间:2017-03-26 01:48:07

标签: php html w3c-validation

当我尝试验证文档时,我收到此错误"Error: = in an unquoted attribute value. Probable causes: Attributes running together or a URL query string in an unquoted attribute value."

这是我的代码:

print("<a href=" . $_SERVER["PHP_SELF"] . '?id=' . $student->hentId() . ">" . $student->hentNavn() . "</a><br/>\n");

HTML输出如下所示:

<a href=/StudentDatabase/StudentRegister.php?id=1>Petter Andersen</a><br/>

如何正确添加报价?

2 个答案:

答案 0 :(得分:1)

直接在链接中使用$_SERVER["PHP_SELF"]是不安全的。根据您的代码,网站可能容易受到XSS攻击,并且只需访问page/url/%22%3E%3Cscript%3Ealert('xss')%3C /script%3E%3Cfoo%22就会注入不需要的JavaScript。 student idstudent name也是如此,如果此记录未经过清理,则html可能会被破坏或易受XSS攻击。

建议使用函数rawurlencodeurlencodehtmlspecialchars来清理生成的链接。

<?php
$url = rawurlencode($_SERVER["PHP_SELF"]) . "?id=" . urlencode($student->hentId());
?>

<a href="<?php echo htmlspecialchars($url); ?>">
<?php echo htmlspecialchars($student->hentNavn()); ?>
</a>

答案 1 :(得分:0)

通过\

转义引号来添加引号

你想让id = 1在网址中吗?我猜这是它认为缺少引号的属性

print("<a href=\" . $_SERVER["PHP_SELF"] . '?id=' . $student->hentId() . \">" . $student->hentNavn() . "</a><br/>\n");