PHP在echo中回显PHP代码

时间:2012-12-28 15:25:07

标签: php security echo

我在这里很新。我正在尝试创建一个允许用户发布自己的期刊的博客/期刊网站。我仍然非常不愿意这样做,因为我真的害怕恶意代码注入。

所以这是一个示例代码:

 <?php
 $test = "<b>blah</b>"; //User input from SQL
 echo "$test";
 ?>

什么会出现只是粗体字“blah”?我试图实现的是回应“<b>blah</b>”。我不希望人们放一些实际上会弄乱我整个网页的PHP代码。请记住,变量$test实际上是一个MYSQL查询,因此需要该变量作为示例。我知道你可以做echo '$test';,但它只是以"$test"而来。我想把头发拉出来,我还好想不出来。

我知道的第二个解决方案是htmlspecialchars();函数,但我希望字符串显示为我输入的内容,而不是转换后的字符串......

我有什么方法可以做到吗?

4 个答案:

答案 0 :(得分:2)

我认为OP希望将HTML本身输出到页面,而不是剥离标签。为此,您可以先通过htmlentities()

运行字符串
$test = '<b>blah</b>';
echo htmlentities($test);

这将输出:

&lt;b&gt;blah&lt;/b&gt;

将在页面中呈现为

<b>blah</b>

答案 1 :(得分:2)

Echo不从字符串执行PHP代码。这是不可能的,这不是代码中的安全漏洞。

答案 2 :(得分:1)

例如,您可以使用Twig之类的模板引擎。

答案 3 :(得分:0)

如果htmlspecialchars();不是您要找的人,请尝试header()选项。

header('Content-type: text/plain');

当您要将<b>Hi</b>提供给浏览器时,以粗体显示,而不是返回文本。但您可以尝试这种方式,将其输出到<textarea></textarea>


或者另一种方法是使用htmlentities()

<?php
$test = "<b>blah</b>"; //User input from SQL
echo htmlentities("$test");
?>