我在这里很新。我正在尝试创建一个允许用户发布自己的期刊的博客/期刊网站。我仍然非常不愿意这样做,因为我真的害怕恶意代码注入。
所以这是一个示例代码:
<?php
$test = "<b>blah</b>"; //User input from SQL
echo "$test";
?>
什么会出现只是粗体字“blah”?我试图实现的是回应“<b>blah</b>
”。我不希望人们放一些实际上会弄乱我整个网页的PHP代码。请记住,变量$test
实际上是一个MYSQL查询,因此需要该变量作为示例。我知道你可以做echo '$test';
,但它只是以"$test"
而来。我想把头发拉出来,我还好想不出来。
我知道的第二个解决方案是htmlspecialchars();
函数,但我希望字符串显示为我输入的内容,而不是转换后的字符串......
我有什么方法可以做到吗?
答案 0 :(得分:2)
我认为OP希望将HTML本身输出到页面,而不是剥离标签。为此,您可以先通过htmlentities()
$test = '<b>blah</b>';
echo htmlentities($test);
这将输出:
<b>blah</b>
将在页面中呈现为
<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");
?>