提交数据转义

框架内置获取方法一般会对数据进行转义:

htmlspecialchars

用于将特殊字符转换为 HTML 实体,以防止 HTML 注入攻击。这个函数特别有用在处理用户输入的数据时,通过将特殊字符转换成它们的对应 HTML 实体,可以防止恶意用户在页面中插入或执行 HTML 或 JavaScript 代码,从而增强网站的安全性。
语法:
htmlspecialchars(string $string, int $flags = ENT_COMPAT | ENT_HTML401, string $encoding = ‘UTF-8’, bool $double_encode = true): string

$string:要转换的字符串。

$flags:指定转换的模式,常用的选项有:

  • ENT_COMPAT:默认。仅转换双引号。
  • ENT_QUOTES:同时转换双引号和单引号。
  • ENT_NOQUOTES:不转换任何引号。
  • 其他选项可用于控制更详细的行为,如处理文档类型等。

$encoding:指定字符编码。默认是 UTF-8。

$double_encode:如果为 false,则不会编码已经被编码的实体。

<?php
$string = “Hello, <b>world</b> & welcome to ‘my site’ \”example.com\””;
$escaped_string = htmlspecialchars($string, ENT_QUOTES, ‘UTF-8’);
echo $escaped_string;
?>

输出:

Hello, &lt;b&gt;world&lt;/b&gt; &amp; welcome to &#039;my site&#039; &quot;example.com&quot;

在这个示例中:

< 被转换为 &lt;
> 被转换为 &gt;
& 被转换为 &amp;
单引号 ‘ 被转换为 &#039;
双引号 ” 被转换为 &quot;

htmlspecialchars_decode

将转义字符还原为HTML标签

检查HTML实体是否被转义

在数据库管理工具(如phpMyAdmin)中执行上述查询,查看content字段的内容。如果内容中包含如&lt;、&gt;、&amp;等符号,说明HTML实体被转义了。

正确处理umeditor等编辑器数据

方法1:使用$_POST获取内容

$post[‘content’] = $_POST[‘content’];

展示内容:

<?php echo htmlspecialchars_decode($content); ?>

方法2:多次转码

//数据中存在 &lt;, &gt;, &amp; 实体,解码成 html 标签
$content = html_entity_decode($content, ENT_QUOTES, ‘UTF-8’);

//再次对其中的特殊字符进行解码,从而得到了最终的 HTML 格式的内容。
$content = htmlspecialchars_decode($content);

<?php echo ($content); ?>

最终是以该方法解决的,执行一次转换无法实现

作者 admin

百度广告效果展示