Featured Posts

纠结与释怀 这几天的纠结让我度日如年,伴随我的是焦虑和失眠。好久没有这样的感觉了。 我总是患得患失,这是一种心理问题,在做选择的时候,反复对比各方的优劣,放不下东,也舍不得西。 自己不知道怎么选择,然后反复问家人和朋友,即使问到答案,也不能让自己安心顺从。 幸运的是,在反复纠结之后,我逐渐想明白了一些道理。 选择,就要付出代价,必定有所得有所失,我应该勇敢承担起责任,坦然面对自己的选择带来的变化和影响。 纠结的时候,我感觉自己是个懦弱的人,害怕犯错,害怕不好的结果。 现在,我鼓起勇气,自己做出选择,不管对错,我接受,不后悔。 我要感谢猛哥,花费很多时间和精力,前后沟通,给我提供了非常难得的机会,在我最终没有选择这个机会的时候,仍然支持我的选择,并告诉我他这里的大门永远向我敞开。 此时,时间像突然停止了一样,飞快打字的手,也一下停住了,我反复看着这句话,感觉到眼眶周围热热的,滑滑的…… 我想我的勇气,多半来自于猛哥对我的关照。 我只求将来有机会能够报答猛哥的知遇之恩。 是时候为自己的选择努力工作了,大家一起加油!

Readmore

CentOS: cannot restore segment prot after reloc 最近在研究CentOS,用xampp装一套集成的LAMP环境,结果在启动Apache的时候报错: cannot restore segment prot after reloc: Permission denied 原因是 modules/mod_perl.so 不能加载。 查了一下可能是SELINUX的问题,有一个解决方法: 用 chcon...

Readmore

PHP 文件下载 IE 无法打开页面 IE 又有一个弱得不行的问题让我发现! 有个项目,要限制文件的下载权限,只有注册用户才可以下载,用户登录后,点击下载链接,弹出保存附件的提示。 我用...

Readmore

Subversion neon 诡异配置 一波三折 今天发现前几天装的 subversion 居然没法通过 http 协议访问版本库! Subversion 出现 svn: Unrecognized URL scheme for 'http://.....'  这样的错误提示。 检查 svn 客户端是否支持...

Readmore

  • Prev
  • Next

FCKeditor 2.6 安装 配置 问题 图片上传

Posted on : 09-04-2009 | By : leakon | In : Symfony, Web开发

0

今天给使用 Symfony 的项目装了 FCKeditor 编辑器,配了图片上传。

遇到一些问题,总结下。

安装时,为了简单,最好把解压的 fckeditor 文件夹放在 web/ 目录下。

在模板中加入编辑器很简单:

$webDir = sfConfig::get('sf_web_dir'); // DocumentRoot 的服务端路径
$editorInclude = $webDir . "fckeditor/fckeditor.php";
require_once($editorInclude);

$oFCKeditor = new FCKeditor('detail') ; // form 表单字段名称是 detail
$oFCKeditor->BasePath = '/fckeditor/' ; // 客户端访问编辑器资源文件的路径
$oFCKeditor->Width = '100%'; // 宽
$oFCKeditor->Height = '100%'; // 高
$oFCKeditor->Value = $articleItem->detail; // $articleItem 是 ORM 对象,直接引用 detail 字段
$oFCKeditor->Config = array(
        'AutoDetectLanguage' => false, // 关闭浏览器语言自动检测
        'DefaultLanguage' => 'zh-cn' // 设置简体中文
);
$oFCKeditor->Create() ;

设置完了,刷新页面,直接可用!很简单。

已经检查的问题,可以很好地处理 XSS 问题,在编辑器里填写 <script>alert(123)</script> 这样的字符串,都会转义成纯字符,不会被浏览器解析为 HTML 代码。这在编辑器和最终页面都可以正常显示,需要注意的是输出的时候都要加 htmlspecialchars 转义,这是必须养成的习惯!

图片上传的问题。

默认是关闭的,修改 fckeditor/editor/filemanager/connectors/php/config.php 为:

$Config['Enabled'] = true;

$Config['UserFilesPath'] = '/uploads/'; // 这是 Symfony 自动生成的目录。

现在可以上传了,不过会遇到 2 个问题。

问题 1:点击“发送到服务器上”按钮,浏览器 alert 一个错误,显示“Error creating folder "redirect:/index.php" (Can't create redirect: directory)”。参考了“在symfony中使用FCKeditor上传图片附件” 这篇文章,得到了很好的解决。是 .htaccess 造成的。最简单的办法是在 uploads 目录下再放置一个 .htaccess,关闭 rewrite 即可,内容如下:

Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
  RewriteEngine Off
</IfModule>

问题 2:上传文件后修改文件名。fckeditor 默认是保留原有文件名。英文名的文件还勉强能用,如果是中文文件名就麻烦了。最好是统一按照自己的命名规则修改文件名。这时编辑 fckeditor/editor/filemanager/connectors/php/io.php,修改一个函数:

function SanitizeFileName( $sNewFileName ) {
  $arr = explode('.', $sNewFileName);
  $ext = array_pop($arr);
  $filename = date('Ymd_His_') . rand(1000, 9999) . '.' . $ext;
  return $filename;

把原函数改名作为备份。这函数就是保留了扩展名,把主文件名按照日期编码。呃,为了更好地保存文件,其实还应该把扩展名统一大小写,我记得有一个 pathinfo 函数,返回值有一个 extension 字段就是扩展名。其实过程都差不多,您自选吧。

总的说来,fckeditor 给我的感觉是安装简单,功能强大,代码逻辑清晰,便于修改。

赞一个~~

另:推荐一个 Blog

4’s symfony blog

这兄弟很深入地了解 Symfony 框架,我已订阅了他的 RSS,每天学习中……

睡了,晚安……

Write a comment