帝国cms7.5编辑器远程图片本地化不生效原因以及解决方法

帝国CMS教程 2022-10-01 12:54:39 47

使用帝国程序远程保存图片的功能是因为站长的一个导航站在使用一为大神根据URL地址获取网站的Favicon图标的功能,作者在github提供了getfavicon源码

源码地址:https://github./owen0o0/getFavicon

根据作者提供的方案部署到服务器上,发现有些问题,比如google、或者adobe这些网站需要科学上网才能获取网站ico图标,这样就不能正常获取图标缓存到服务器

但是如果使用作者提供的api接口,就可以正常使用

那么导航站就转用大神的api接口作为网站图标使用,但是由于网创邦导航站不是泛流量采集,导航网站精选都是手工编辑、那么如果作者api接口停用,网站图标就不复存在,那么原创保存这些网站图标就势在必行

但是经过测试如果api接口网站链接是https,远程保存上传图片,显示原创保存不成功或文件是已上传文件,但是7.5版本是不支持采集https图片的,需要增加ssl模块支持

那么如何解决,找到/e/class/connect.php

先在<?php下先添加

function getHTTPS($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

再找到function ReadFiletext函数

function ReadFiletext($filepath){
$filepath=trim($filepath);
$htmlfp=@fopen($filepath,"r");
//远程
if(strstr($filepath,"://"))
{
while($data=@fread($htmlfp,500000))
{
$string.=$data;
}
}
//本地
else
{
$string=@fread($htmlfp,@filesize($filepath));
}
@fclose($htmlfp);
return $string;
}

替换如下

//取得文件内容
function ReadFiletext($filepath){
$filepath=trim($filepath);
$htmlfp=@fopen($filepath,"r");
//远程
if(strstr($filepath,"https://")){
return getHTTPS($filepath);
}
if(strstr($filepath,"://"))
{
while($data=@fread($htmlfp,500000))
{
$string.=$data;
}
}
//本地
else
{
$string=@fread($htmlfp,@filesize($filepath));
}
@fclose($htmlfp);
return $string;
}

到这一步就能够原创保存图片了

声明:资源来自网络转载,版权归原作者所有,与本站立场无关,如不慎侵犯了你的权益,请联系我们告知,将做删除处理!

原文地址:《帝国cms7.5编辑器远程图片本地化不生效原因以及解决方法》发布于2022-10-01 12:54:39