Невозможно проверить HTML из-за отсутствия цитаты для = строка

Я получаю эту ошибку "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/>

Как правильно добавить цитату?

0

Решение

добавить кавычки, экранируя их с помощью \

Вы хотите, чтобы id = 1 был в URL? Я думаю, что это атрибут, который, по его мнению, отсутствует в кавычках

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

Другие решения

Не безопасное использование $_SERVER["PHP_SELF"] прямо в ссылках. В зависимости от вашего кода, веб-сайт может быть уязвимым для XSS, и нежелательный JavaScript может закончиться только после посещения. page/url/%22%3E%3Cscript%3Ealert('xss')%3C
/script%3E%3Cfoo%22
, То же самое для student id или же student name, если эти записи не санированы html может привести к поломке или быть уязвимым для XSS.

Рекомендуется использовать функции rawurlencode, urlencode, htmlspecialchars санировать созданную ссылку.

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

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

По вопросам рекламы [email protected]