论坛风格切换
  • 2979阅读
  • 1回复

[bug]门户底层化远程js调用,其他域名调用本站域名下的推送图片地址显示不完整 [复制链接]

上一主题 下一主题
离线rickyleo
 

发帖
315
金币
0
威望
99
只看楼主 倒序阅读 使用道具 楼主  发表于: 2012-05-31
在本站门户底层化模块推送数据上传图片的时候,存储的图片附件地址没有包含本站点域名,直接是attachment/******这种形式,这个在本站任何地方显示或者js调用都是可以的,因为头部会有一个 base ,所有的attachment下的图片都会基于这个地址进行图片地址补全.
如果将这个门户底层化的js调用放到其他域名下呢? 其他域名的页面也有自己的base地址,比如这个base是www.***.com,但是你之前论坛的base是bbs.***.com,
然后www.***.com 和bbs.***.com又是绑定一台主机的不同目录,或者解析到不同主机上,如果http://bbs.***.com/attachment/1.gif存在,能保证http://www.***.com/attachment/1.gif能正常打开吗? 这个就是隐藏的BUG
解决方案两种:
1). 在门户底层化推送数据 上传图片的时候存储的图片image地址为基于域名的绝对地址,可以避免这个问题
2). 或者在调用推送的上传图片地址的时候,自动跟上本站域名地址比如bbs.***.com,那么无论调用js的当前域名是多少,他的base地址都是不生效的.浏览器会直接解析bbs.***.com的附件路径并显示图片
基于应用场景, 下面修改了第2钟方法:
打开lib/area/db/pushdatadb.class.php文件,
找到:
  1. $temp = $this->_colorTitle($temp);
下方添加代码:
  1. $temp = $this->_fixAttach($temp); // rickyleo
找到:
  1. function _colorTitle($rt) {...}
下方添加代码:
  1. /**
  2.      * 修补其他域名下js调用本站域名下的推送数据图片加上本站域名,避免调用域名页面html写有baseurl
  3.      *
  4.      * @author rickyleo
  5.      */
  6.     function _fixAttach($rt){
  7.         global $db_bbsurl, $db_attachname;
  8.         
  9.         if ($rt['data']){
  10.             if (strpos($rt['data']['image'], $db_attachname) == 0){
  11.                 $rt['data']['image'] = $db_bbsurl.'/'.$rt['data']['image'];
  12.             }
  13.         }
  14.         
  15.         return $rt;
  16.     }






1条评分bug优化分+1
云天河 bug优化分 +1 有使用场景时可以分享下,不然看不懂。 2012-07-04
离线ywhnhvio

发帖
9
金币
0
威望
0
只看该作者 沙发  发表于: 2012-10-19
顶起来,受教了,支持支持<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>美白方法
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
提到某人:
选择好友
上一个 下一个