科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件fck的中级使用

fck的中级使用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

fck的中级使用

作者:叁石 来源:CSDN 2008年3月28日

关键字: 使用 Web开发 软件

  • 评论
  • 分享微博
  • 分享邮件

今天突然想看看cms的东西,我到处找了找,发现了三个一个是dedecms,一个是phpcms(加密了),还有一个是verycms。
在弄dedecms的时候发现它使用的编辑器是fck,我原来也用过,但是没有他修改的那么好,修改了很多的东西,我也想
修改一个自己使用的,但是我使用的时候发现没有那么简单,现在的版本跟那个时候差的比较远,我到现在也没有找到
toolbar这些图片放到那里了,感觉是一张大图做的热点,而原来是是图片,而且也没找到具体的对应关系。
但是弄了就不能白弄,顺便修改了一个能使用的fck出来,当然是针对php的,关于fck的初级使用我就不说了,如果不会的你
可以去 blog.csdn.net/sanshi0815 上面去找 那里面有简单的一个使用。这个称之为中级使用,我一定是做修改的。
使用fck的好处就是,使用他的上传功能,fck的上传功能分三种,一种是文件,一种是图片,一种的flash,
如果使用默认的配置文件的话,一定会出现问题。他上传的文件全放在一个目录下,这个目录在你使用以上三种浏览的时候都看不到,
所以要设置下,修改 FCKeditor\editor\filemanager\upload\php\下 的文件,还有一个问题就是,他默认是你上传什么样的文件名字
最后给你存在服务器为什么名字。这样使用我感觉有写地方不太适用,我做了简单的修改
在config.php修改成了如下的样子

<?php
global $Config ;
$Config['Enabled'] = "uploader" ;
$Config['UserFilesPath'] = '/UserFiles/' ;
$Config['UserFilesAbsolutePath'] = '' ;
$Config['ForceSingleExtension'] = true ;

$Config['AllowedExtensions']['File']    = array('rar','doc') ;
$Config['DeniedExtensions']['File']        = array() ;

$Config['AllowedExtensions']['Image']    = array('jpg','gif','jpeg','png') ;
$Config['DeniedExtensions']['Image']    = array() ;

$Config['AllowedExtensions']['Flash']    = array('swf','fla') ;
$Config['DeniedExtensions']['Flash']    = array() ;

//sanshi add. set save file name ,donot the file type
//如果使用上传的文件名的话,设置 $saveFileName=false
$saveFileName date("Y,m,d,H,i,s");
?>
而upload.php 同样进行了修改,动的比较乱,同时做一些东西做了简单的中文翻译

<?php
require('config.php') ;
require(
'util.php') ;

// This is the function that sends the results of the uploading process.
function SendResults$errorNumber$fileUrl ''$fileName ''$customMsg '' )
{
    echo 
'<script type="text/javascript">' ;
    echo 
'window.parent.OnUploadCompleted(' $errorNumber ',"' str_replace'"''\"'$fileUrl ) . '","' str_replace'"''\"'$fileName ) . '", "' str_replace'"''\"'$customMsg ) . '") ;' ;
    echo 
'</script>' ;
    exit ;
}

// Check if this uploader has been enabled.
if ( !$Config['Enabled'] )
    
SendResults'1''''''这个文件上传失败请检查 "editor/filemanager/upload/php/config.php" 文件' ) ;

// Check if the file has been correctly uploaded.
if ( !isset( $_FILES['NewFile'] ) || is_null$_FILES['NewFile']['tmp_name'] ) || $_FILES['NewFile']['name'] == '' )
    
SendResults'202' ) ;

// Get the posted file.
$oFile $_FILES['NewFile'] ;

// Get the uploaded file name extension.
$sFileName $oFile['name'] ;

// Replace dots in the name with underscores (only one dot can be there... security issue).
if ( $Config['ForceSingleExtension'] )
    
$sFileName preg_replace'/\.(?![^.]*$)/''_'$sFileName ) ;

$sOriginalFileName $sFileName ;

// Get the extension.
$sExtension substr$sFileName, ( strrpos($sFileName'.') + ) ) ;
$sExtension strtolower$sExtension ) ;

// The the file type (from the QueryString, by default 'File').
$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;

// Check if it is an allowed type.
if ( !in_array$sType, array('File','Image','Flash','Media') ) )
    
SendResults1'''''上传类别错误!' ) ;

// Get the allowed and denied extensions arrays.
$arAllowed    $Config['AllowedExtensions'][$sType] ;
$arDenied    $Config['DeniedExtensions'][$sType] ;

// Check if it is an allowed extension.
if ( ( count($arAllowed) > && !in_array$sExtension$arAllowed ) ) || ( count($arDenied) > && in_array$sExtension$arDenied ) ) )
    
SendResults'202' ) ;

$sErrorNumber    '0' ;
$sFileUrl        '' ;

// Initializes the counter used to rename the file, if another one with the same name already exists.
$iCounter ;

// The the target directory.
if ( isset( $Config['UserFilesAbsolutePath'] ) && strlen$Config['UserFilesAbsolutePath'] ) > )
    
$sServerDir $Config['UserFilesAbsolutePath'] ;
else 
    
$sServerDir GetRootPath() . $Config["UserFilesPath"]."{$sType}/";

while ( 
true )
{
    
// Compose the file path. 
    //$sExtension 这个变量是文件后缀
    // $saveFileName 为设置的保存文件名
    //$sFilePath = $sServerDir . $sFileName ; //old
    //sanshi add
    
if( $saveFileName!=false )
        
$sFileName $saveFileName.".".$sExtension;
    else
        
$sFilePath $sServerDir $sFileName ;

    
$sFilePath $sServerDir $sFileName ;
    
// If a file with that name already exists.
    
if ( is_file$sFilePath ) )
    {
        
$iCounter++ ;
        
$sFileName RemoveExtension$sOriginalFileName ) . '(' $iCounter ').' $sExtension ;
        
$sErrorNumber '201' ;
    }
    else
    {
        
//SendResults( '1', '', '',  $sFilePath) ;exit(); 
        
if( function_exists("move_uploaded_file") )
            
move_uploaded_file$oFile['tmp_name'], $sFilePath ) ;
        else
            
copy($oFile['tmp_name'], $sFilePath);

        if ( 
is_file$sFilePath ) )
        {
            
$oldumask umask(0) ;
            
chmod$sFilePath0777 ) ;
            
umask$oldumask ) ;
        }
        
        
$sFileUrl =  $Config["UserFilesPath"]."{$sType}/" $sFileName ;

        break ;
    }
}

SendResults$sErrorNumber$sFileUrl$sFileName ) ;
?>
php的文件基本处理完成了,然后看其他的文件
对fck的配制文件的修改是必然的了,就不在展示了
同时,我对几个错误处理文件也做了中文的错误提示的修改
路径是
FCKeditor\editor\dialog\的 fck_image ,fck_flash,fck_link 目录下的错误提示做的修改
然后就是对上面路径下的js文件大家有个思想准备,他们提供了错误号
0         成功
1         自己定义
101        自己定义
202     类型错误
203     权限错误

大家注意使用fck的时候会做一些权限的处理,这个时候可以使用js在这几个js的文件里做判断了
这几个文件是在提交的时候用的上,如果加权限判断的话,请加在 CheckUpload()这个函数里。

关于如何找到tool与文件的对应关系我使劲的找也没有结果,
不过大家可以看到 FCKeditor\editor\dialog\ 这个目录下有很多的对应文件,大家可以想办法做些处理来完善下。

说另外一个问题,多用户使用
fck可以完成多用使用,原来是不同的用户把图片放到不同的目录下,浏览的时候根据不同的用户去看不同的目录就可以了,
把管理员的目录放到最上面,也就是说其他人员的图片目录在管理员的目录下面,就可以了。
关于上传还是设置 config.php这个文件的  $Config['UserFilesPath'] 路径 加个什么其他的您自己看着办
浏览目录的设置在 FCKeditor\editor\filemanager\browser\default\connectors\php\config.php
文件
修改
$Config['UserFilesPath'] = '/UserFiles/' ; 要做基本的对应
这个目录看名字增加了很多新的功能,不过,没具体看

另外一个问题就是,如果用户上传了什么东西,我们要做个记录这个怎么办?
没有什么好的办法,在用户提交以后做判断,如果是附件上传那您需要自己分析下,如果是图片的
我写了一个,不过我正则不好,也就是笔画下,有什么好的方式,方法麻烦您留言,我也顺便学习下

<?php
$str
='<p><img height="100" width="100" alt="" src="/UserFiles/Image/2006,08,24,12,10,36.jpg" /><img height="100" width="100" alt="" src="/UserFiles/Image/2006,08,24,12,10,36.jpg" /></p>';
$format='/<img.*?/>/i';
$temp=array();
preg_match_all($format,$str,$out);
foreach ((array)
$out[0] As $k)
{
    
$format2 '/src=["](.*)["]/';
    
$len=preg_match_all($format2,$k,$outTemp);
    
$temp[]=$outTemp[$len];
}
print_r($temp);
?>
还有个问题,就是css的问题,如果用户在选择字体的时候一直使用默认的,当用户发表以后有可能会发现,
编辑时候的字体与发表后的字体有区别,我当初使用的时候就遇到了,但是没想出来好的解决办法,现在告诉您,去修改一个文件
文件位置在
FCKeditor\editor\css\fck_editorarea.css 这个文件,起作用的是
body, td
{
        font-family: Arial, Verdana, Sans-Serif;
        font-size: 12px;
}
这里的内容把字体的大小设置成,跟您发布的默认大小一样就不会出现上面说的问题了。

最后一个问题就是,当我要浏览服务器上的图片,flash,还有文件的时候,会出现一个提示,你可以建立新的文件夹
并可以选择文件夹上传东西,这个功能如果你想关闭的话
请到
FCKeditor\editor\filemanager\browser\default 目录下
修改
frmcreatefolder.html
把下面的内容注释掉

                                        <button type="button" style="WIDTH: 100%" onclick="CreateFolder();">
                                       
                                                <table cellSpacing="0" cellPadding="0" border="0">
                                                        <tr>
                                                                <td><img height="16" alt="" src="images/Folder.gif" width="16"></td>
                                                                <td>&nbsp;</td>
                                                                <td nowrap>Create New Folder</td>
                                                        </tr>
                                                </table>
                                        </button>
还有
frmupload.html 这个文件

<input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file">
还有
<input id="btnUpload" type="submit" value="Upload">
也同时注释掉

如果使用他们建立与上传
使用的文件是
FCKeditor\editor\filemanager\browser\default\connectors\php 下面的
commands.php 这个文件
这个上传与我们刚才修改过的那个上传是不一样,如果您想使用一个的话,请重新修改


到此fck的使用我也就说这么多了!会的也就这么多了。希望大家指教下,由于附件太少,我精简完是350k,所有没有办法给大家我的代码了,如果需要留下mail地址,我给大家发,或者你直接给我发邮件,我给你回复过去.

作者:叁石
    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愪粙鏌ㄩ悢鍝勑㈤柣顓燁殜楠炴牕菐椤掆偓婵¤偐绱掗幇顓ф疁闁哄矉绻濆畷鍫曞煛娴i攱鐫忛梻浣告惈椤戝懘鏌婇敐澶婅摕闁哄浄绱曢悿鈧柣搴秵娴滅偞绂掗悙顒傜瘈婵炲牆鐏濋悘鐘绘煏閸喐鍊愮€殿喖顭峰鎾晬閸曨厽婢戦梺璇插嚱缂嶅棙绂嶉弽顓炵;闁规崘顕ч崘鈧銈嗘尪閸斿海绮欒箛娑欌拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚�

    濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴濐潟閳ь剙鍊圭粋鎺斺偓锝庝簽閸旓箑顪冮妶鍡楀潑闁稿鎹囬弻娑㈡偄闁垮浠撮梺绯曟杹閸嬫挸顪冮妶鍡楀潑闁稿鎸剧槐鎾愁吋閸滃啳鍚Δ鐘靛仜閸燁偉鐏掗柣鐘叉穿鐏忔瑧绮i悙鐑樷拺鐟滅増甯掓禍浼存煕閹惧娲撮柟顔藉劤鐓ゆい蹇撴噳閹锋椽姊婚崒姘卞闁告娲熷畷濂稿Ψ閵壯勭叄婵犵數濮撮敃銈団偓姘煎弮瀹曪綀绠涢弮鍌滅槇婵犵數濮撮崐缁樻櫠濞戙垺鐓曢悗锝冨妼婵′粙鏌曢崶褍顏€殿喕绮欐俊姝岊槹闁逞屽墯鐢繝寮婚悢鍏煎癄濠㈣泛锕ュ▓濠氭⒑閸濆嫮鐏遍柛鐘崇墵楠炲啫饪伴崼婵堝幐闂佺ǹ鏈粙鎾广亹鐎n喗鐓熼幖娣€ゅḿ鎰箾閸欏顏堟偩濠靛牏鐭欓悹鎭掑妽濞堥箖姊洪崜鎻掍簼婵炲弶鐗犻幃鈥斥槈閵忥紕鍘遍柣蹇曞仜婢т粙鎯岀€n偆绠鹃柛顐ゅ枑閸婃劖鎱ㄦ繝鍕笡闁瑰嘲鎳愮划鐢碘偓锝庝簼閻d即姊绘担瑙勫仩闁告柨顑夊畷锟犲礃閼碱剚娈鹃梺闈涚箞閸婃洟宕橀埀顒€顪冮妶鍡楀闁稿骸宕惃顒勬⒒閸屾瑧鍔嶉悗绗涘懐鐭欓柟瀵稿Л閸嬫挸顫濋悡搴$睄閻庤娲戦崡鍐茬暦閸楃倣鐔兼⒐閹邦喚娉块梻鍌欑窔濞佳囨偋閸℃稑绠犻幖娣灪閸欏繑銇勯幒鍡椾壕闂佸疇顫夐崹鍧楀春閵夆晛骞㈡俊鐐插⒔閸戣绻濋悽闈浶為柛銊︽そ閺佸鏌ч懡銈呬沪濞e洤锕俊鍫曞川椤斿吋顏¢梻浣呵归鍛村磹閸︻厽宕叉繛鎴欏灩楠炪垺淇婇婵愬殭缁炬澘绉归弻锝嗘償閵忥絽顥濆銈忓閺佽顕g拠宸悑闁割偒鍋呴鍥⒒娴e憡鍟為柟鎼佺畺瀹曠増鎯旈…鎴炴櫔闂佹寧绻傞ˇ浠嬪极閸℃ぜ鈧帒顫濋濠傚闂佹椿鍘介〃鍡欐崲濞戙垹绠婚柡澶嬪灩閸斾即姊虹粙娆惧剱闁圭懓娲濠氭晲閸涱亝顫嶅┑鐐叉閸旀洜澹曢幎鑺モ拺闁告繂瀚﹢鎵磼鐎n偄鐏撮柛鈺冨仱楠炲鏁冮埀顒€顔忓┑鍥ヤ簻闁哄洨鍋為崳娲煃鐠囪鍔熺紒杈ㄦ崌瀹曟帒鈻庨幋婵嗩瀴婵$偑鍊戦崝宀勫箠濮椻偓楠炲棗鐣濋崟顐わ紲闂佺粯鍔欏ḿ褏绮婇敃鍌涚厵闁稿繗鍋愰弳姗€鏌涢弬璺ㄧ劯闁诡喚鍋ゅ畷褰掝敃閻樿京鐩庨梻浣告贡閸庛倝宕归悽鍓叉晜闁冲搫鎳忛崐鍨叏濮楀棗澧绘俊鎻掔秺閺屾洟宕惰椤忣厾鈧鍠曠划娆愪繆濮濆矈妲奸梺闈╃祷閸庡磭妲愰幘瀛樺缂佹稑顑呭▓顓炩攽閳藉棗浜濈紒璇茬墕椤曪絾绻濆顓炰簻缂佺偓濯芥ご鎼佸疾閿濆鍋℃繝濠傚暟鏁堥梺璇″枟閿曘垽骞婇悩娲绘晢闁稿本绮g槐鏌ユ⒑閸濆嫷妲搁柣妤€瀚板畷婵囨償閿濆洣绗夐梺缁樺姉閸庛倝鎮″☉銏″€堕柣鎰硾琚氶梺鍝ュУ閿曘垽寮婚埄鍐╁闁荤喐婢橀~鎺楁倵鐟欏嫭绀堥柛鐘崇墵閵嗕礁顫滈埀顒勫箖閳哄懏鎯炴い鎰╁€濋幏濠氭⒒閸屾艾鈧嘲霉閸パ呮殾闁割煈鍋呴崣蹇涙煙閹澘袚闁抽攱姊婚埀顒€绠嶉崕閬嵥囬鐐插瀭闁稿瞼鍋為悡銏′繆椤栨粌鐨戠紒杈ㄥ哺閺屻劌鈹戦崱鈺傂︾紓浣插亾閻庯綆鍋佹禍婊堟煛瀹ュ啫濡块柍钘夘槹缁绘盯宕奸悢铏圭厜濠殿喖锕ㄥ▍锝呪槈閻㈢ǹ宸濇い鏂惧嫎閳ь剚鍔曢—鍐Χ鎼粹€茬凹濠电偠灏欓崰鏍х暦濞差亜鐒垫い鎺嶉檷娴滄粓鏌熼崫鍕棞濞存粓绠栧娲箰鎼淬垻鈹涙繝纰樷偓铏悙閸楅亶鏌熼悧鍫熺凡缂侇偄绉归弻娑㈩敃閿濆洨鐣煎銈嗘尰濡炶棄顫忛搹鍦<婵☆垰鎼~宀勬倵濞堝灝娅橀柛鎾寸懆閻忓啴姊洪崨濠佺繁闁哥姵宀稿畷銏ゅ箹娴e厜鎷洪梺鍛婃尰瑜板啯绂嶆禒瀣厱閻庯綆浜滈顓㈡煙椤旀枻鑰块柡浣稿暣瀹曟帒鈽夊顒€绠為梻浣筋嚙閸戠晫绱為崱娑樼;闁糕剝蓱濞呯姵銇勯幒鎴濃偓鑽ゅ婵傚憡鐓曢悘鐐插⒔閳藉绱掑锕€娲﹂悡娆撴煟閻斿憡绶叉い蹇e弮閺岀喖鎮℃惔銏g闂佺懓寮堕幐鍐茬暦閻斿吋顥堟繛鎴炵懄閻濓繝姊婚崒姘偓鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈠Χ閸屾矮澹曞┑顔矫畷顒勫储鐎电硶鍋撶憴鍕缂傚秴锕濠氬幢濡ゅ﹤鎮戦梺鍛婁緱閸ㄧ晫妲愰柆宥嗙厽閹艰揪绱曢悾顓㈡煕鎼淬劋鎲鹃挊婵喢归崗鍏肩稇缁炬崘娉曢埀顒€绠嶉崕閬嵥囨导瀛樺亗闁哄洢鍨洪悡娑㈡煕閵夛絽鍔氬┑锛勫帶椤儻顧侀柛銊ゅ嵆濠€渚€姊虹紒妯撳湱绮旈鈧、鏃堝醇閻旇櫣鏆㈤梻鍌氬€烽悞锔锯偓绗涘懏宕查柛灞绢嚤濞戞鏃堝川椤撶姴骞掗梻浣告惈濞层垽宕瑰ú顏呭亗闁告劦浜濋崰鎰節婵犲倻澧曠紒鈧崼鐔稿弿婵☆垱瀵х涵楣冩煢閸愵亜鏋涢柡灞炬礃缁绘稖顦查悗姘卞厴瀹曟垿濡搁埡鍌楁嫼缂傚倷鐒﹂敋濠殿喖娲﹂妵鍕即閵娿儱绫嶉梺绯曟杺閸ㄨ棄顕i幘顔碱潊闁炽儲鏋奸崑鎾绘偨閸涘﹦鍙嗗┑鐘绘涧濡鍩€椤掑倹鍤€闁宠绉瑰畷鍫曞Ω閿濆嫮鐩庨梻濠庡亜濞诧妇绮欓幇鏉跨疅濡わ絽鍟悡娑㈡倶閻愰潧浜剧紒鈧€n兘鍋撶憴鍕濞存粌鐖奸妴浣割潨閳ь剟骞冮姀锛勯檮濠㈣泛顦辨径锟�

    重磅专题
    往期文章
    最新文章