博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中CKEditor和CKFinder使用心得
阅读量:3038 次
发布时间:2019-05-15

本文共 2282 字,大约阅读时间需要 7 分钟。

最近由于工作需要,一次性需要把所有的编辑器改进成CKEditor,不过这玩意没有上传功能,只好找到它的姐妹产品CKFinder。网上一查,才知道这两东西合伙才有希望完成上传等诸多功能。

由于之前都用FCKeditor,突然使用CKEditor蛮不适应,不过FCK由于有漏洞,也不敢用了,才知道原来FCK是CK的前身。 几经抓狂,花了半天时间终于搞定了。总结了以下心得:

1、/ckeditor/config.js, 配置文件,如果不想写太多,可以直接写好默认配置(语言,菜单栏,宽度),有需要可以百度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定位。

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
'
])
;

两者配合用起来还是挺不错的,更重要的原因是安全性高了很多。

转载地址:http://ijwic.baihongyu.com/

你可能感兴趣的文章
Ocelot监控
查看>>
【转】搭建自己的OpenWRT开发环境
查看>>
线程中的start()与run()有什么区别?
查看>>
如果有人问你数据库的原理,叫他看这篇文章
查看>>
POJ2632
查看>>
HDU2859 Phalanx (动态规划)
查看>>
求助 页面布局哪里错了
查看>>
MySQL 存储过程
查看>>
Ruby基础知识-1.变量
查看>>
2017湖湘杯Writeup
查看>>
iOS:城市级联列表的使用
查看>>
[沈航软工教学] 前五周3,4班排行榜
查看>>
[沈航软工教学] 前八周3,4班排行榜
查看>>
VirtualBox 共享文件夹设置
查看>>
20172301 《程序设计与数据结构》第二周学习总结
查看>>
C# Dictionary与List的相互转换
查看>>
扭曲效果
查看>>
C++ DateTime 结构
查看>>
16 3Sum Closest
查看>>
六款值得推荐的android(安卓)开源框架简介
查看>>