我有一个php变量$username
和以下脚本:
<?php
echo '<a href="#">'.$username.'</a>';
?>
如果$ username包含something <b
,则为粗体文字。我该如何防止这种情况?
答案 0 :(得分:1)
使用htmlspecialchars
echo '<a href="#">'.htmlspecialchars($username).'</a>';
请参阅文档:http://php.net/manual/en/function.htmlspecialchars.php
答案 1 :(得分:1)
echo '<a href="#">'.htmlentities($username).'</a>';
答案 2 :(得分:0)
<?php
echo '<a href="#">'.htmlspecialchars($username).'</a>';
?>
答案 3 :(得分:0)
PHP中的echo
返回您应该告诉它的HTML。所以如果你使用例如。
echo "This is my text which should be displayed as it is <b>";
浏览器会将其转换为相应的HTML文本(每个浏览器都内置了#34;修复&#34;格式错误的HTML),这将是
<b>This is my text which should be displayed as it is</b>
这不仅是错误的,而且还存在安全风险。想象一下有人使用了一个非常长的名字,一旦浏览器呈现它就会翻译成javascript。您的服务器将变成一个spambot机器。
为防止这种情况发生,您必须使用相应的php函数,即htmlspecialchars()
(或htmlentities()
;
所以你的代码将是:
echo '<a href="#">'.htmlspecialchars($username).'</a>'
,它将按预期显示名称。
答案 4 :(得分:0)