帝国论坛帝国网站管理系统交流区帝国CMS使用交流[求助][分享]升级帝国cms的编辑器 【本版专题贴子】  
 2/3    |‹ ‹‹ 1 2 3 ›› ›|
主题:[求助][分享]升级帝国cms的编辑器 [加入收藏夹]   

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 11 楼]

现在可以拖拉图片,粘贴图片了。可惜是base64代码,又写了个newstext字段函数,算是能用了。

//字段函数 newstext 保存base64图片
function user_saveBase64img($mid,$f,$isadd,$isq,$value,$cs){
    global $public_r;
    //print_r($_POST);exit;
    //处理图片
    $classid=(int)$_POST['classid'];
    $filepass=(int)$_POST['filepass'];
    $id=(int)$_POST['id'];
    preg_match_all('/\s+src\s?\=\s?[\'|"]([^\'|"]*)/imus', $value, $imgr);
    foreach($imgr[1] as $url){
        
        if(!preg_match("#^data:image/(jpeg|gif|png);base64,([A-Za-z0-9+/]+)#i",$url, $matches))continue;
            $r[filetype]='.'.$matches[1];
            $string=base64_decode($matches[2]);
        if(!$string)continue;
            //文件名
            $r['insertfile']=ReturnDoTranFilename($file_name,$classid);
            $r['filename']=$r[insertfile].$r['filetype'];
            //日期目录
            $r['filepath']=FormatFilePath($classid,$mynewspath,0);
            $filepath=$r[filepath]?$r[filepath].'/':$r[filepath];
            //存放目录
            $fspath=ReturnFileSavePath($classid);
            $r['savepath']=eReturnEcmsMainPortPath().$fspath['filepath'].$filepath;//moreport
            //附件地址
            $r['url']=$fspath['fileurl'].$filepath.$r['filename'];
            //缩图文件
            //$r['name']=$r[savepath]."small".$r['insertfile'];
            //附件文件
            $r['yname']=$r['savepath'].$r['filename'];
            WriteFiletext_n($r['yname'],$string);
            $r[filesize]=@filesize($r['yname']);
            //会写到value
        $value=str_replace($url,$r['url'],$value);
        
            //写入数据库
            $no=$r['filename'];
            $type=1; //图片
            $fstb=$public_r['filedeftb'];
            $modtype=0; // 0信息  5公共   6会员
            $sql=eInsertFileTable($r['filename'],$r['filesize'],$r['filepath'],$username,$classid,$no,$type,$id,$filepass,$public_r['fpath'],0,$modtype,$fstb);
           
    }
    return  $value;
}



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-18 18:44:47 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 12 楼]

3月19日  降温了。

今天早晨成果:

帝国cms毕竟是比较古老的东西,大量的函数包含printerror语句,一言不合就退出,这对api类型的调用很不友好。以下函数可以拦截printerror,以json格式返回错误信息:




帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-19 08:30:07 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 13 楼]

<?php
$error=1;
ob_start();
register_shutdown_function('jhctest');
function jhctest(){
    global $error;
    if($error==0)return ;
    $contents=ob_get_clean();
    $r['uploaded']=0;// 0失败  1成功  
    preg_match('#<b>(.+?)</b>#imsu',$contents,$m);
    if($m){
        $contents=$m[1];
    }else{
        file_put_contents(__DIR__.'/fankui.txt',$contents);
        $contents='未知原因错误';
    }
   
    $r['error']['message']=$contents;
    echo json_encode($r,true);
}



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-19 08:30:37 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 14 楼]

二次开发,很重要的一个原则,不能破坏帝国cms的安全性。




帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-19 10:11:05 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 15 楼]

另外一个原则是,能不改源码就不改,能少改,就少改。

config.js  改了一句:
        config.filebrowserImageUploadUrl = arraycs[0]+'kuaichuan.php?'+arraycs[1];



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-19 10:12:12 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 16 楼]

kuaichuan.php 是我新建立的文件  ,位置为:e/admin/ecmseditor/kuaichuan.php

内容为:

<?php
$error=1;
ob_start();
register_shutdown_function('jhctest');
function jhctest(){
    global $error;
    if($error==0)return ;
    $contents=ob_get_clean();
    //  EcmsEditorReturnDoAction1('/d/file/p/2022/03-19/ebab31a618698cdfa2ba3b23534c0591.png')
     preg_match("#EcmsEditorReturnDoAction1\('(.+?)'#imsu",$contents,$m);
     if($m){
          $r['uploaded']=1;
          $r['url']=$m[1];
     }else{
           $r['uploaded']=0;// 0失败  1成功  
           preg_match('#<b>(.+?)</b>#imsu',$contents,$m);
           if(!$m){
                //alert('您上传的类型有误,系统不接受')  TranFiletypeFail
                preg_match("#alert\((.+?)\)#imsu",$contents,$m);
            }
           if($m){
                $contents=$m[1];
            }else{
                file_put_contents(__DIR__.'/fankui.txt',$contents);
                $contents='未知原因错误,请查看文件fankui.txt';
            }
           
            $r['error']['message']=$contents;
     }
     echo json_encode($r,true);
     return ;
}


define('EmpireCMSAdmin','1');
require("../../class/connect.php");
require("../../class/db_sql.php");
require("../../class/functions.php");
require("../../data/dbcache/class.php");
require "../".LoadLang("pub/fun.php");
require("editorfun.php");
include('eshoweditor.php');
$link=db_connect();
$empire=new mysqlquery();
$editor=1;
$enews=$_POST['enews'];
if(empty($enews))
{
        $enews=$_GET['enews'];
}


//验证用户
$lur=is_login();
$logininid=$lur['userid'];
$loginin=$lur['username'];
$loginrnd=$lur['rnd'];
$loginlevel=$lur['groupid'];
$loginadminstyleid=$lur['adminstyleid'];
$ecms_hashur=hReturnEcmsHashStrAll();

print_r($_FILES);exit;


/*
get的数据
Array
(
    [classid] => 36
    [filepass] => 76
    [infoid] => 76
    [modtype] => 0
    [sinfo] => 1
    [ehash_aGJNg] => 7UruNvaYgeCUKWjjJNXg
    [responseType] => json
)

//    [responseType] => json
    [ckCsrfToken] => 3957op6nuJtU65N18TmsK2C6sKrPsxuzB7xpqxaA


files的数据
Array
(
    [upload] => Array
        (
            [name] => image-20220319065118-3.png
            [type] => image/png
            [tmp_name] => /tmp/phpmGaTYV
            [error] => 0
            [size] => 11820
        )

)

可能的错误信息

<script>alert('您上传的类型有误,系统不接受');history.go(-1)</script>

正确的返回

<script type='text/javascript'>
window.parent.EcmsEditorReturnDoAction1('/d/file/p/2022/03-19/ebab31a618698cdfa2ba3b23534c0591.png');</script>
*/
$_POST=$_GET;
$_POST['tranfrom']=1;//明确是编辑器上传
$file=$_FILES['upload']['tmp_name'];
$file_name=$_FILES['upload']['name'];
$file_type=$_FILES['upload']['type'];
$file_size=$_FILES['upload']['size'];
$tranurl=$_POST['tranurl'];
$no=$_POST['no'];
$classid=$_POST['classid'];
$type=$_POST['type'];  // 1 图片  2 flash文件 3 多媒体图片  其他:附件
if(!$type)$type=1;
TranFile($file,$file_name,$file_type,$file_size,$tranurl,$no,$classid,$type,$_POST,$logininid,$loginin);
db_close();
$empire=null;
exit();



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-19 10:14:25 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 17 楼]

现在可以方便的截图,拖拉上传了。也不需要字段函数来中转了。

这个二开基本结束。有需要的朋友qq联系,好测试完善。



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-19 10:17:15 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :9085
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 18 楼]

演示下:

https://www.ixigua.com/7076793384475886088



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2022-03-19 20:59:55 已设置保密 顶部 回复 引用 报告 编辑 删除

hibaidu
用户头衔:探花

精华贴   :0
发贴数   :4005
经验值   :12197
注册时间:2010-05-26
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 19 楼]





2022-03-19 22:24:18 已设置保密 顶部 回复 引用 报告 编辑 删除

luckypet
用户头衔:举人

精华贴   :0
发贴数   :130
经验值   :1000
注册时间:2008-11-29
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 20 楼]

这么好的教程,没人顶



答案窝
青少年编程
老文秘
除五害
2022-03-19 22:35:05 已设置保密 顶部 回复 引用 报告 编辑 删除
 2/3    |‹ ‹‹ 1 2 3 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1