【问题标题】:HTML Special characters in DB and echo back in input数据库中的 HTML 特殊字符并在输入中回显
【发布时间】:2013-03-27 09:26:00
【问题描述】:

早上,

我创建了一个小表单来将一些信息存储到数据库中。

我在我的服务器上关闭了 magic_quotes_gpc。

如果我在框中输入"£ 符号,则无需担心将其存储到数据库中。

当我用 php 回显它时,它会显示,但如果我在输入表单字段中使用值," 会关闭值字段。

<input type="text" name="variable" value="<?php echo $row[variable]; ?>" />

我现在在输入值周围使用了 htmlspecialchars,它可以工作了。

<input type="text" name="variable" value="<?php echo htmlspecialchars($row[variable]); ?>" />

但我已将开放购物车源视为参考,它们不使用 htmlspecialchars 而是以不同的方式存储数据。

我尝试使用他们使用的 urlencodes 方法:

urlencode(html_entity_decode($_POST[variable],ENT_QUOTES, 'UTF-8'));

但这似乎存储了很多没有正确显示的数字和+号。

我宁愿对更新数据库进行编码,而不是使用 htmlspecialschars 的方法。

但不太确定哪种方式最好?

谢谢

【问题讨论】:

  • "我宁愿对更新数据库进行编码,而不是使用我使用 htmlspecialschars 的方法。" ——别再想要那个了。在将数据插入 HTML 之前立即将数据编码为 HTML 是明智的做法。它以干净的格式保存数据直到最后一分钟,所以如果你需要把它放在不是 HTML 的地方,它仍然可以。

标签: php html mysql htmlspecialchars


【解决方案1】:

你可以使用

htmlentities() function in php

【讨论】:

    【解决方案2】:

    也许尝试mysqli_real_escape_string($dblink, $string) 而不是htmlspecialchars

    【讨论】:

      【解决方案3】:

      为了存储 HTML 字符,更改章程然后存储它们:

      <?php
            $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
            echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
      ?>
      

      要取回正确的 HTML 字符,请按以下方式进行解码:

      <?php
            $str = "<p>this -&gt; &quot;</p>\n";
      
            echo htmlspecialchars_decode($str);
      
            // note that here the quotes aren't converted
            echo htmlspecialchars_decode($str, ENT_NOQUOTES);
      ?>
      

      更多信息请参考http://www.php.net/manual/en/function.htmlspecialchars.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-08
        • 2016-02-18
        • 2018-08-17
        • 1970-01-01
        • 2011-05-09
        • 2015-07-08
        • 1970-01-01
        • 2014-02-09
        相关资源
        最近更新 更多