PHP变量不能按预期工作

时间:2015-09-21 09:47:09

标签: php

我有一个php变量$username和以下脚本:

<?php
echo '<a href="#">'.$username.'</a>';
?>

如果$ username包含something <b,则为粗体文字。我该如何防止这种情况?

5 个答案:

答案 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>';
?>

http://php.net/manual/fr/function.htmlspecialchars.php

答案 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)

您需要从字符串中删除(删除)HTML标记。

before

http://php.net/manual/en/function.strip-tags.php