Php 在mysql数据库中保存html内容

Php 在mysql数据库中保存html内容,php,mysql,html,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-sa

我正在使用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>
<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> 
这在我的localhostxampp中运行正常。但不是在网上工作。我的主机使用最新版本的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>
<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并在前端显示。

您的托管公司可能已经启用了magic quotes-


您不能在代码中禁用它,但这里的示例2显示了一个解决方法,您的托管公司可能已经启用了magic quotes-


您不能在代码中禁用它,但这里的示例2显示了从数据库中获取它时需要在HTML字符串上运行条带斜杠的解决方法。对吗?

从数据库中获取时,需要在HTML字符串上运行stripslashes。对吗?

听起来您的主机可能已经启用了magic\u quotes\u gpc,它将自动为来自$\u GET、$\u POST和$\u 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,您仍然需要对其进行转义。

听起来您的主机可能已打开magic_quotes_gpc,这将自动为来自$\u GET、$\u POST和$\u 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打开,您仍然需要对其进行转义。

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

存储到数据库中。您必须在实际的mySQL Insertcall中使用以下代码段。我发现,如果先对变量执行此操作,然后将变量放入insert调用中,它将不起作用。函数必须在mySQL语句中。 mysql\u real\u escape\u字符串$myValue

正在检索值中的文本框。假设您的值已经从数据库中检索到,并且现在位于名为theValues的数组中。基本上,我删除任何反斜杠,但在此之前,我要确保它可以正确显示使用htmlentities。据我所知,由于HTML中没有反斜杠,所以服务器将引号替换为\。如果你确实在HTML中遇到了一些反斜杠,你只需要在替换函数中更聪明一点。 $myValue=str_replace\\,htmlentities$theValues->myValue; echo$myValue

返回到页面的原因与上述相同,但htmlentities函数使其仅显示HTML文本,而不处理HTML
str_replace\\,$myValue

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

存储到数据库中。您必须在实际的mySQL Insertcall中使用以下代码段。我发现,如果先对变量执行此操作,然后将变量放入insert调用中,它将不起作用。函数必须在mySQL语句中。 mysql\u real\u escape\u字符串$myValue

正在检索值中的文本框。假设您的值已经从数据库中检索到,并且现在位于名为theValues的数组中。基本上,我删除任何反斜杠,但在此之前,我要确保它可以正确显示使用htmlentities。据我所知,由于HTML中没有反斜杠,所以服务器将引号替换为\。如果你确实在HTML中遇到了一些反斜杠,你只需要在替换函数中更聪明一点。 $myValue=str_replace\\,htmlentities$theValues->myValue; echo$myValue

返回到页面的原因与上述相同,但htmlentities函数使其仅显示HTML文本,而不处理HTML
str_replace\\,$myValue

现在任何打开了魔引号的主机都应该停业。魔引号,每个PHP程序员存在的祸根…他们在想什么?任何打开了魔引号的主机都应该停业。魔引号,每个PHP程序员存在的祸根…他们在想什么?你为什么要否决我?我发布了一个解决这个问题的简单方法。
允许使用额外的斜杠将HTML插入到数据库中,然后在以后修复它并不是一个解决方案。“治疗原因,而不是症状。”StoneGarden看到了前两个答案。你为什么要否决我?我为这个问题发布了一个简单的解决方案。允许HTML以额外的斜杠插入到数据库中,然后在以后修复它不是一个解决方案。治疗原因,而不是症状。@StoneGarden请看前两个答案。