帝国CMS编辑器远程保存图片失效原因汇总

微信扫一扫,分享到朋友圈

帝国CMS编辑器远程保存图片失效原因汇总
收藏 00

原因1:http网站采集不支持https图片

经过检查,原来是当前站点是http,而要远程下载的图片地址是https,如果改成http协议的图片地址,就能正常远程下载。在帝国cms官方论坛查询了下,有网友提出:远程保存图片不支持https,需要php开启ssl模块。

打开文件/e/class/connect.php:

第一步:在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;
}

原因2:远程保存不支持没有后缀的图片

帝国CMS编辑器下方的“远程保存图片”勾选以后,如果复制过去的信息里的图片没有任何后缀,那么是保存不了图片到本地空间的,今天来说下解决方法。(修改后不影响原始,也就是普通形式的图片,和不带扩展名形式的图片都能够正确的远程保存下来。

以下修改适用于帝国7.2~7.5版本,其他版本墨鱼未测试!修改文件请用编辑器修改,比如DW或者NOTEPAD之类编辑器,切勿用系统的TXT直接打开,会导致编码错乱!

1.修改文件:/e/class/functions.php

查找:

$zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)>/is";
$text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5\\6".$exp2."\\7>",$text);
改成:
$zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)([^'|\"|\\\\\"|]*)('|\"|\\\\\"|)(.*?)>/is";$text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5".$exp2."\\6\\7>",$text);

2.修改文件:/e/class/connect.php

找到:

$r[filetype]=GetFiletype($url);

在这句话的后面加入如下代码:

if ((strlen($r[filetype]) !==4 ) OR (strlen($r[filetype]) !==5 ))
    {
        $r[filetype]=".jpg";
    }

 

一个热爱互联网的咸鱼
上一篇

帝国cms索引灵动标签调取时候有待审核文章

下一篇

帝国cms文章系统模型获取文章图片作为缩略图

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

热门

    抱歉,30天内未发布文章!
返回顶部