【问题标题】:htmlspecialchars_decode shows tags instead of formattinghtmlspecialchars_decode 显示标签而不是格式化
【发布时间】:2017-05-15 00:05:33
【问题描述】:

我在 mysql 数据库中存储了一些数学问题,其 UTF-8 列如下:

htmlspecialchars($data, ENT_QUOTES, 'UTF-8');

将问题存储在数据库中:

log<sub>2</sub>(log<sub>5</sub>625)का मान ज्ञात करें ?

现在,我将这个问题从数据库调用到前端,如下所示:

htmlspecialchars_decode($quest, ENT_QUOTES)

显示以下输出:

log<sub>2</sub>(log<sub>5</sub>625)का मान ज्ञात करें ?

而输出应该是

log2(log5625)का मान ज्ञात करें ?

如何解决这个问题?我错过了什么?

【问题讨论】:

  • 不要做htmlspecialcharshtmlspecialchars_decode
  • 您好,为了保护数据库免受 SQL 注入攻击,这是我正在执行的一项附加安全措施。 htmlentities 在这方面会有所帮助吗?
  • 执行htmlspecialchars 并不能防止sql注入。
  • 它将单引号广告双引号转换为等效的html实体,并防止引号直接提交到数据库中
  • 从SQL注入攻击,你应该使用prepared statements

标签: php html mysqli encoding utf


【解决方案1】:

试试这个:html_entity_decode(htmlspecialchars_decode($quest,ENT_QUOTES)) 问题一定会解决的。

【讨论】:

    【解决方案2】:

    当您在浏览器上显示此 HTML 时,这似乎是正确的,它将呈现如下:

    log&lt;sub&gt;2&lt;/sub&gt;(log&lt;sub&gt;5&lt;/sub&gt;625)का मान ज्ञात करें ?

    【讨论】:

    • 不,正如我所说,这是由于 htmlspecialchars_decode() 而在我的 HTML 页面上得到的输出
    • 您是否将htmlspecialchars_decode($quest, ENT_QUOTES) 存储在一个变量中,然后再存储echo ?或者你在呼应$quest?只是为了确认
    • 它的 echo htmlspecialchars_decode($quest, ENT_QUOTES);
    • 我删除了 htmlspecialchars_decode,只是回显了 $quest,没有用。然后我用 htmlentities 代替 htmlspecialchars_decode,仍然是相同的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多