繁体   English   中英

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

[英]saving html content in mysql database

我正在使用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']);

这在我的本地主机(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并在前端显示。

您的托管公司可能已启用魔术引号-http: //php.net/manual/en/security.magicquotes.php

您无法在代码中将其禁用,但是示例2在此处显示了围绕http://www.php.net/manual/zh/security.magicquotes.disabling.php的工作

听起来您的主机可能已打开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打开的情况下,仍然需要取消转义数据。

我通过在php和mySQL数据库中使用以下代码段来完成此任务:

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

检索到文本框中的值。 假设您的值已经从数据库中检索出来,现在位于名为theValues的数组中。 基本上,我正在删除任何反斜杠,但是在使用之前,我确保可以使用htmlentities正确显示它。 因为您在HTML中没有反斜杠,所以我知道它可以解决服务器将引号替换为\\“的问题。如果确实遇到了HTML中的反斜杠,则您的替换功能必须更加聪明。
$myValue= str_replace("\\\\", "", htmlentities($theValues->myValue)); echo $myValue;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM