ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变

使用后台的富文本域上传图片,上传的时候没问题,存储数据库的时候发现路径会少导致图片在前台无法显示!如下:
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第1张图片
在这里插入图片描述
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第2张图片

对比发现少了一个/upload,调试加上后图片是可以显示的!
数据库查询发现也是少这个,说明储存的时候被什么过滤掉了!

下来上代码,开始排查错误:
在这里插入图片描述
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第3张图片

去找了data这个方法
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第4张图片

第一次

在这里插入图片描述

第二次

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190904101159429.png

根据上面的判断确定了程序走的顺序
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第5张图片

12exit;去掉即可得到下面的程序走向

ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第6张图片
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第7张图片
打印查看,如下:
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第8张图片
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第9张图片

这里我也纠结了许久,从程序运行顺序这里下手,最后从新整理了思路如下:

ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第10张图片
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第11张图片

在此我也是遇到了写瓶颈,纠结许久,但是不阔以放弃!经过朋友指点解了这个小问题,这也算是这框架里的技巧了!
这是在循环中调用了一个方法,而这个方法名是在变量中,如果你单独去看没有什么明显的地方调用过,这样一来代码重用性提高许多,我也第一次遇到这样的,只怪平时不爱读别人代码,O(∩_∩)O哈哈~以后要多读别人代码了,大神们封装的代码重用性真的很高!

ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第12张图片
这张只是为了让大家知道他里面写的什么ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第13张图片
这个才是上上一张打印结果
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第14张图片
然后在编辑器中搜索这个东西:
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第15张图片
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第16张图片
直接把 $value 输出发现问题则就解决了,好的,现在来解释一下他下面这三个php函数的意义也许就知道为什么地址经过该函数就会被过滤掉了。

# 预定义的字符转换为 HTML 实体
htmlspecialchars_decode($value)
# 特殊的 HTML 实体转换回字符(这个其实和上面的是一对PHP函数)
htmlspecialchars();
# 这个应该说是他这个框架里封装的了
# 替换编辑器内容中的文件地址,true:表示把绝对地址换成相对地址,用于数据库保存,false:表示把相对地址换成绝对地址用于界面显示
cmf_replace_content_file_url(htmlspecialchars_decode($value), true)

其实这个图中就可以发现到底是哪个地方被过滤掉了
在这里插入图片描述
分别打印的是下面内容:

var_dump(htmlspecialchars_decode($value));
var_dump(cmf_replace_content_file_url(htmlspecialchars_decode($value), true));

经过去查阅网上的材料发现此函数确实存在有时候会将地址过滤的不完整现象,抱着这颗好奇的心,查看这个函数看看里面封装了什么
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第17张图片
更改成下面这样就ok了
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第18张图片
ThinkCMF使用文本域问题,后台上传图片成功,前台无法显示,图片路径被改变_第19张图片

你可能感兴趣的:(php,小技巧)