在mysql数据库中保存html内容

时间:2011-10-21 15:45:24

标签: php mysql html

我正在使用php并尝试在mysql数据库中保存一些html内容。 html内容由ckeditor生成。内容是这样的 -

<p><img align="left" alt="" src="images/1im1.jpg" style="margin:1px 15px 0 0; border:1px solid #cecece; " /> <img alt="If syou love hot sauce" src="images/tit_If-you-love-hot-sauce.jpg" /></p><br>D'elidas is a fine<p>

我在php中使用它 -

$main_data = mysql_real_escape_string($_POST['content']);

这在我的localhost(xampp)中运行正常。但不是在网上工作。我的托管是使用最新版本的PHP和MySQL。保存在在线数据库后,我看到这样 -

<p><img align=\"left\" alt=\"\" src=\"images/1im1.jpg\" style=\"margin:1px 15px 0 0; border:1px solid #cecece; \" /> <img alt=\"If syou love hot sauce\" src=\"images/tit_If-you-love-hot-sauce.jpg\" /></p>br>D\'elidas is a fine<p> 

这就是HTML在我的页面中无法正确显示的原因。请帮我解决这个问题。这是在引号之前添加斜杠。我想保存确切的html并在前端显示。

4 个答案:

答案 0 :(得分:7)

您托管公司可能已开启魔术报价 - http://php.net/manual/en/security.magicquotes.php

您无法在代码中禁用它,但此处的示例2显示了http://www.php.net/manual/en/security.magicquotes.disabling.php

的解决方法

答案 1 :(得分:2)

听起来您的主机可能已启用magic_quotes_gpc,这会自动为来自$ _GET,$ _POST和$ _COOKIE的数据中的引号和双引号添加斜杠。

您可能想要创建一个用于转义GPC数据的包装函数。举个例子......

function mysql_escape_gpc($dirty)
{
    if (ini_get('magic_quotes_gpc'))
    {
        return $dirty;
    }
    else
    {
        return mysql_real_escape_string($dirty);
    }
}

这样,无论服务器的配置如何,您的代码都是可移植的。

此外,如果您的生产环境支持它,您应该考虑查看准备好的语句。这样您就不必担心转义数据了,但是如果magic_quotes_gpc已打开,您仍需要对其进行取消隐藏。

答案 2 :(得分:-1)

从数据库中获取它时,需要在HTML字符串上运行stripslashes()。正确?

答案 3 :(得分:-1)

我通过在php和mySQL数据库中使用以下代码段来实现这一点:

存储到数据库中。您必须在实际的mySQL Insertcall中使用以下代码段。我发现如果你首先对变量执行此操作然后将变量放入insert调用中它将无法工作。该函数必须在mySQL语句中 mysql_real_escape_string($myValue)

在值中检索文本框。假设您的值已经从数据库中检索到,现在位于一个名为theValues的数组中。基本上我正在删除任何反斜杠,但在手之前,我确保它可以使用htmlentities正确显示。由于你不是HTML格式的反斜杠,我知道它修复了服务器用\“替换引号的地方。如果你确实在HTML中遇到一些反斜杠,你只需要在替换函数中更聪明一点。
 $myValue= str_replace("\\", "", htmlentities($theValues->myValue)); echo $myValue;

回显一个页面与上面相同的原因,但是htmlentities函数使它只显示HTML的文本而不是处理HTML
str_replace("\\", "",$myValue)