[英]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.