昨天,好端端的网站突然上传图片无法显示,并且无法居中,后台采用的是ckeditor。然后进入了沉思,起初以为是编辑器的问题,更换编辑器试验,还是同样的问题,显然排除了编辑器的问题。那是什么问题呢?
从编辑器的输入内容的源码分析,内容是含有引号和HTML标签的,但是提交的时候ckeditor会把预定义的字符如”<“等转换为HTML实体,入库后的内容被转换后已经被实体化了。
通过查询数据库结果得知,内容中的引号被替换掉了,成为空白,然而被出来的数据放到编辑器中还是能解释,但是样式却一塌糊涂,并且还被添加了一些其他标签。正是这些导致了前台样式错乱,导致上传图片无法显示和居中的问题。
找出原因了,接下来就是想法解决了。
此时我想到了php配置文件中的如果magic_quotes_gpc参数。果不其然,该参数处于Off关闭状态。当开启时,通过GET,POST,COOKIE传递的数据会自动被转义。
如果magic_quotes_gpc=Off; 那么字符中要带有引号(不管单引号还是双引号) ,直接写入mysql都会直接变成空白。
显然是这个问题导致,于是开启此参数magic_quotes_gpc=On。插入数据库的数据显示正常了,引号被替换为\(反斜线)。
取数据的时候使用$contents = preg_replace(“/\\\\/”,'”‘,$contents);进行替换一下,当如编辑器中即可正常显示。
至此问题解决。关于入库数据转义参数的使用后面再专门作文总结。