Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php echo htmlspecialchars与<;h2>;,超链接、图像等需要解决_Php_Mysql - Fatal编程技术网

php echo htmlspecialchars与<;h2>;,超链接、图像等需要解决

php echo htmlspecialchars与<;h2>;,超链接、图像等需要解决,php,mysql,Php,Mysql,从mysql获取数据。 然后用echo htmlspecialchars($content['MainText'],ENT_NOQUOTES,“UTF-8”) 尝试在没有htmlspecialcharsjavascript类alert('Hello')的情况下进行回显和锯弹出框。因此,如果没有htmlspecialchars的话,回音是不好的 但是使用htmlspecialchars无法正确显示超链接和图像,而且,等也不可接受 目前,他试图替换一些字符,如 $content_main_text_

从mysql获取数据。 然后用
echo htmlspecialchars($content['MainText'],ENT_NOQUOTES,“UTF-8”)

尝试在没有
htmlspecialchars
javascript类
alert('Hello')的情况下进行回显和锯弹出框。因此,如果没有
htmlspecialchars
的话,回音是不好的

但是使用
htmlspecialchars
无法正确显示超链接和图像,而且
等也不可接受

目前,他试图替换一些字符,如

$content_main_text_modified = 
str_replace( 
array( '&lt;br/&gt;', '&lt;br&gt;', '&lt;/a&gt;', "&gt;", '&lt;a', '&lt;div', '&lt;img', '&lt;/div', '&lt;h2', '&lt;/h2', 'amp;amp;', '&lt;span', '&lt;/span' ), 
array( '<br/>', '<br>', '</a>', ">", '<a', '<div', '<img', '</div', '<h2', '</h2', '', '<span', '</span' ), 
( htmlspecialchars( $content['MainText'] , ENT_NOQUOTES, "UTF-8") ) 
);
echo $content_main_text_modified;
$content\u main\u text\u modified=
str_替换(
数组('br/'、'br'、'/a'、''、'a'、'div'、'img'、'/div'、'h2'、'/h2'、'amp;amp;'、'span'、'/span'),

数组(“
”、“
”、“,”>”我认为一个不同的想法是首先停止以这种方式存储它,这样您就可以响应它。您所指的是一种xss攻击,有人可以输入JavaScript,然后在另一个用户浏览器上执行。有关xss的详细信息,请查看此链接

至于删除它的方法,我要做的是对输入数据进行某种形式的验证。有很多方法可以做到这一点,我建议阅读上面的链接,这会让你知道如何阻止它,意味着你可以只做一个简单的回显。这样做也有助于防止sql注入攻击,尽管这会需要更多的工作

这不会每次都起作用,有些人还建议您使用htmlspecialchars,但当您使用html时,这会导致问题,正如您所知,您只需尽最大努力,任何系统都无法阻止一切


不知道自己在做什么是不可能的,但你可能会发现使用某种模板引擎很有用,这样HTML就可以从代码中分离出来,你可以使用函数
htmlspecialchars()
,就像你可以将文本发送到模板一样。

使用
strip\u标记($content['MainText']“,”

看一看HTML.Allowed指令;您可以在其中设置允许的标记。

我有一个(唯一)显示内容的页面。它基于
$\u服务器['QUERY\u STRING']
获取mysql。有时以文本形式(以输入形式,将数据发送到mysql)必须添加超链接或设置。所有输入都进入mysql…目前不知道如何存储输入…为MySelf创建了类似CMS的东西您仍然可以在mysql中存储数据您需要做的是添加一些初始验证如果您使用超链接,您可以轻松地使用JavaScript和PHP在savin之前检查它是否是有效链接至于有点棘手的HTML,让我考虑一下。我能问一下为什么要将HTML添加到数据库中吗
$content_main_text_modified = htmlspecialchars($content['MainText']);
$content_main_text_modified = reg_replace('#&lt;(/?(?:a|h2|div|span|br|img))&gt;#', '<$1>', $content_main_text_modified);