PHP中CKEditor和CKFinder配置问题小结
在PHP中配置CKEditor和CKFinder时,需预设config.js的默认设置,使用PHP类生成编辑器,设置CKFinder的CheckAuthentication函数通过session验证,利用session定位上传路径,并采用日期重命名上传文件以防乱码,最后通过CKFinder::SetupCKEditor实现两者配合,提升安全性。
1、/ckeditor/config.js, 配置文件,如果不想写太多,可以直接写好默认配置(语言,菜单栏,宽度),有需要可以百度config配置
如果不想折腾,可以直接预设好默认配置,比如语言、菜单栏、宽度等。有需要可以百度config配置。示例:
config.language = 'en';config.skin = 'v2';config.uiColor = '#AADC6E';config.toolbar = 'Basic';…。
2、官方的demo大多都喜欢用js配置editor区域,习惯写php的我就嫌麻烦,只好看内置的php类。
具体做法:
require_once ROOTPATH 。 "ckeditor/ckeditor.php";$CKEditor = new CKEditor();$CKEditor-》returnOutput = true; //设置输出可用变量的情况$CKEditor-》basePath = '/ckeditor/';//设置路径$contentarea = $CKEditor-》editor("content", $rs['contents']); //生成一个以name为content的textarea
echo $contentarea;
3、需要上传了 ,只好加入ckfinder.把ckfinder和ckeditor放在同级目录下。
打开/ckfinder/config.php,首先设置第一个函数CheckAuthentication()。这个函数需要按照自己的规则写,只要return true才能允许上传文件到服务器,当然不建议直接写return true,这会导致安全问题。采用session来处理比较方便:
session_start();function CheckAuthentication(){ if(isset($_SESSION['UseEidtor']))
return true;else return false;}
4、上传文件位置:也在/ckfinder/config.php, 找到$baseUrl,之前一直想自己写一个方法用来定位路径,实在不好办,后来只好用sesssion,如果一个网站中,有需要上传到不同的位置,正好可以利用session定位。
利用session定位的示例:
if (isset($_SESSION['UseEidtor'])) {
switch ($_SESSION['UseEidtor']) { case 'Addr1':$baseUrl = '/addr1/uploadfile/';case 'Addr2':$baseUrl = '/addr2/upfiles/';}
} else {
$baseUrl = '/upfiles/';}
5、对于上传文件名,ckfinder会按照原有的名字命名,中文的情况下可能会乱码,所以建议使用日期重命名。打开/ckfinder/core/connector/php/php5/CommandHandler/FileUpload.php 找到《 /p》
在找到的代码后面加上:
$sUnsafeFileName =CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(CKFinder_Connector_Utils_Misc::mbBasename($uploadedFile['name']));后面加上
$sExtension = CKFinder_Connector_Utils_FileSystem::getExtension($sUnsafeFileName);$sUnsafeFileName=date('YmdHis').'.'.$sExtension;
6、 最后就是使用ckfinder
require_once ROOTPATH 。 "ckeditor/ckeditor.php";require_once ROOTPATH 。 'ckfinder/ckfinder.php' ;
$CKEditor = new CKEditor();$CKEditor-》returnOutput = true;$CKEditor-》basePath = '/ckeditor/';
CKFinder::SetupCKEditor($CKEditor, '/ckfinder/') ;//注意这里是相对路径,相对于根目录,不能用绝对路径
$contentarea = $CKEditor-》editor("content", $rs['contents']);
两者配合用起来还是挺不错的,更重要的原因是安全性高了很多。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。
Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,













