守成 的个人资料小人物的奋斗照片日志列表更多 工具 帮助

小人物的奋斗

修身-齊家-治國-平天下

臧 守成

职业
地点
兴趣
男兒立志出鄉關
學不成名誓不還
埋骨何須扶桑地
人生無處不青山
找我点这里
第 1 张,共 8 张
4月10日

搬家喽

支持我的朋友请去

http://shadowzsc.blog.sohu.com/

找我吧!

Technorati 标签:
4月7日

$this->a、$this->a()、$this->$a、$this->$a()的区别

class test
{
    var $a = "我是属性" ;
    function a()
    {
        echo $this->a;
        echo "<br>我是方法";
    }

    function b()
    {
        $this->a();
    }
}

 

1. $this->a 当前物件的属性,属性名为'$a'
$new_test = new test ;
echo $new_test->a ;
//out: 我是属性

 

2. $this->a() 当前物件的方法,方法名为a
$new_test = new test ;
echo $new_test->a() ;
//out: 我是属性
         我是方法
echo $new_test->b() ;
//out: 我是属性
         我是方法

 

3. $this->$a 就是属性名由$a这个变量来决定,当$a='a';时与例子1结果相同
$a='a';

$new_test = new test ;
echo $new_test->$a ;
//out: 我是属性

 

4. $this->$a() 就是方法名由$a这个变量来决定,当$a='a';时与例子2结果相同
$a='a';

$new_test = new test ;
echo $new_test->$
Technorati 标签: ,,,
a() ;
//out: 我是属性
         我是方法
echo $new_test->b() ;
//out: 我是属性
         我是方法

学习日语的利器-灵格斯(lingoes)

Lingoes Homepage 灵格斯首页

lingoes

灵格斯 - 著名的词典与翻译软件, 支持多语种互查互译, 屏幕取词和语音朗读功能.

上面的的内容是lingoes自己对自己的解释,在找了好多免费的反译软件之后,在同事的推荐下使用了lingoes免费翻译软件。

大家可以从这里得到他:http://www.lingoes.cn/

看上去lingoes是国人开发的软件。

Lingoes 灵格斯词霸 是一款简明易用的词典与文本翻译软件,支持全球超过80多个国家语言的词典查询、全文翻译、网络释义、屏幕取词、索引提示和语音朗读功能,这些语言包括 英、法、德、意、俄、中、日、韩、西班牙、葡萄牙、阿拉伯语 及更多

因为在外企工作,使用初终是用来翻译英文,后来发现他有很多的词典可以用,因为之前是在日企,所以也会点日文,于是就下载日文词点和日文发音库。

两者配合使用才发现,功能真的很强大,现在遇到不会的词,可以贴到lingoes里面,不光有翻译,有假名,还有读音,而且还可以朗读句子。当然语调有点怪怪的。毕竟是机器翻译,做到这样已经够好了。

具体如果用,网站上说的很清楚了,只要下载主程序文件,再下载相应的日中、中日词典,再下载TTS语音引擎和相应的语言包,一个自定义的外语词典就做成了。

他支持普通的查词、鼠标取词、和剪贴板取词。

剪贴板取词功能非常好用。比如说在PDF文件里要取词的话,金山词霸的做法是再装一个插件到PDF里,用lingoes的话,直接Crtl+C就可以出现翻译了。

lingoes是我最喜欢的一款国产软件了,而且他还是全免费的,如果他像maxthon一样可以捐助的话,我一定要捐助他。因为我希望这样的优秀国产软件可以做的更好。

Technorati 标签: ,,

4月6日

神奇的SQL语句

Technorati 标签: ,

做PHP+MYSQL这么久,之前只做些小完意,最近公司因为业务关系,要用joomla,研究了一个他的结构,和他用的sql语句。发现我之前了解的都只是些皮毛而以。
这次手头的项目就用到PHP的完全面向对像,只做个开头,就感觉到OOP的好处和强大和灵活。还容易维护。
由其是刚才,正好要用到,细看了一个sql语句:
SELECT u. * , g.g_name , l.l_name
FROM `sys_user` AS `u`
LEFT JOIN `sys_group` AS `g` ON ( u.group = g.id )
LEFT JOIN `sys_level` AS l ON u.level = l.id
ORDER BY regdate ASC
这要在我以前,得用三条语句,然后再把数组组合到一起,再输出。现在一你看,一条就搞定。
还是得不断学习

3月28日

把GET方法直接存到数组

今天研究Joomla的时候发现他URL是这样写的,http://localhost/index.php?a[]=xxxx

马上试了一下,果然是$_GET[a]是数组,又一大发现,不过还没想到有什么用。

Technorati 标签: ,
3月26日

解决php自带mail函数发信乱码问题

首先文件要是utf-8编码,然后在把文字和标题部分进行base64编码就不会出现中文乱码问题了。

Technorati 标签: ,,

$url = $_GET[url];
$xtype = $_GET[xtype];
$id = $_GET[id];
$action = $_GET[action];
if ($action == 'send')
{
    $charset = 'utf-8';  
    $messageEncoding = 'base64';  
    $headerFormat = '=?' . $charset . '?' . $messageEncoding[0] . '?%s?=';  

    $mailInfo = $_POST;
    // multiple recipients
//    $to  = "$mailInfo[to_mail]" ; // note the comma
    $to  = "\"" . sprintf($headerFormat, base64_encode($mailInfo[to_name])) . "\" <$mailInfo[to_mail]>";
    // subject
    $subject = '積金國際';

    // message
    $message = "$mailInfo[mail_word]";
    $message = addslashes($message);
    // To send HTML mail, the Content-type header must be set
    //$headers  = 'MIME-Version: 1.0' . "\r\n";
    //$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    // Additional headers
    //$headers .= 'To: '.$mailInfo[to_name].'.<'.$mailInfo[to_mail]. "> \r\n";
    //$headers .= 'From: '.$mailInfo[from_name].' '.$mailInfo[to_name].'>' . "\r\n";
    //    $headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
    //    $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

    // Mail it

    $boundary = uniqid( "");
    $headers = "From:\"" . sprintf($headerFormat, base64_encode($mailInfo[from_name])) . "\" <$mailInfo[form_mail]>
Content-type:text/html; charset:utf-8; boundary=\"$boundary\"";
    if (mail($to, sprintf($headerFormat, base64_encode($subject)), '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . $message, $headers))
    {
        echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
        echo "<script language='javascript' charset='utf-8'>";
        echo "alert('發送成功!');";
        echo "win.document.close();";
        echo "</script>";
    }
    else
    {
        echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
        echo "<script language='javascript' charset='utf-8'>";
        echo "alert('發送失敗!');";
        echo "history.go(-1);";
        echo "</script>";
    }
}
else
{
    $tpl->assign(array("url"=>$url,"xtype"=>$xtype,"id"=>$id));
    $tpl->dp('default/activity01-c');
}

3月25日

PHPMailer使用手册

下载地址:http://phpmailer.codeworxtech.com/

<?php

// 引用类

require("../class.phpmailer.php");

//实例化

$mail = new PHPMailer();

//设定编码

$mail->CharSet ="GB2312";

$mail->IsSMTP(); // send via SMTP

$mail->Host = "smtp.163.com"; // SMTP servers

$mail->SMTPAuth = true; // turn on SMTP authentication

$mail->Username = "lwyzsc"; // SMTP username

$mail->Password = "rjgxvv88#"; // SMTP password

$mail->From = "lwyzsc@163.com";

$mail->FromName = "zsc";

$mail->AddAddress("lwyzsc@163.com","Josh Adams");

$mail->AddAddress("lwyzsc@gmail.com","zsc");

//$mail->AddAddress("pietro51@163.com"); // optional name

//$mail->AddReplyTo("pietro51@163.com","Information");

$mail->WordWrap = 50; // set word wrap

//$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment

//$mail->AddAttachment("/123.jpg", "new.jpg");

$mail->IsHTML(true); // send as HTML

$mail->Subject = "Here is the subject";

$mail->Body = '<meta http-equiv=content-type content="text/html; charset=GB2312">This is the <b>HTML body</b>支持中文';

$mail->AltBody = "This is the text-only body";

if(!$mail->Send())

{

echo "Message was not sent <p>";

echo "Mailer Error: ".$mail->ErrorInfo;

exit;

}

else {

echo "Message has been sent";

}

Technorati 标签: ,
3月24日

强烈推荐:240多个jQuery插件[转]

Technorati 标签:

概述

jQuery 是继 prototype 之后又一个优秀的 Javascript 框架。其宗旨是—写更少的代码,做更多的事情。它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不jquery及的,它兼容 CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery 是一个快速的,简洁的 javaScript 库,使用户能更方便地处理 HTML documents、events、实现动画效果,并且方便地为网站提供 AJAX 交互。 jQuery 还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。 jQuery 能够使用户的 html 页保持代码和 html 内容分离,也就是说,不用再在 html 里面插入一堆js来调用命令了,只需定义 id 即可。今天在Kollermedia.at上发现了一篇JQuery插件列表的文章,特推荐如下。

文件上传(File upload)JQuery_001

Ajax File Upload.
jQUploader.
Multiple File Upload plugin
jQuery File Style.
Styling an input type file.
Progress Bar Plugin.

表单验证(Form Validation)

jQuery Validation.
Auto Help.
Simple jQuery form validation.
jQuery XAV - form validations.
jQuery AlphaNumeric.
Masked Input.
TypeWatch Plugin.
Text limiter for form fields.
Ajax Username Check with jQuery.

表单-选取框(Form - Select Box stuff)

jQuery Combobox.
jQuery controlled dependent (or Cascadign) Select List.
Multiple Selects.
Select box manipulation.
Select Combo Plugin.
jQuery - LinkedSelect
Auto-populate multiple select boxes.
Choose Plugin (Select Replacement).

表单基本、输入框、选择框等(Form Basics, Input Fields, Checkboxes etc.)

jQuery Form Plugin.
jQuery-Form.
jLook Nice Forms.
jNice.
Ping Plugin.
Toggle Form Text.
ToggleVal.
jQuery Field Plugin.
jQuery Form’n Field plugin.
jQuery Checkbox manipulation.
jTagging.
jQuery labelcheck.
Overlabel.
3 state radio buttons.
ShiftCheckbox jQuery Plugin.
Watermark Input.
jQuery Checkbox (checkboxes with imags).
jQuery SpinButton Control.
jQuery Ajax Form Builder.
jQuery Focus Fields.
jQuery Time Entry.

时间、日期和颜色选取(Time, Date and Color Picker)

jQuery UI Datepicker.
jQuery date picker plugin.
jQuery Time Picker.
Time Picker.
ClickPick.
TimePicker.
Farbtastic jQuery Color Picker Plugin.
Color Picker by intelliance.fr.

投票插件(Rating Plugins)

jQuery Star Rating Plugin.
jQuery Star Rater.
Content rater with asp.net, ajax and jQuery.
Half-Star Rating Plugin.

搜索插件(Search Plugins)

jQuery Suggest.
jQuery Autocomplete.
jQuery Autocomplete Mod.
jQuery Autocomplete by AjaxDaddy.
jQuery Autocomplete Plugin with HTML formatting.
jQuery Autocompleter.
AutoCompleter (Tutorial with PHP&MySQL).
quick Search jQuery Plugin.

编辑器(Inline Edit & Editors)JQuery_002

jTagEditor.
WYMeditor.
jQuery jFrame.
Jeditable - edit in place plugin for jQuery.
jQuery editable.
jQuery Disable Text Select Plugin.
Edit in Place with Ajax using jQuery.
jQuery Plugin - Another In-Place Editor.
TableEditor.
tEditable - in place table editing for jQuery.

多媒体、视频、Flash等(Audio, Video, Flash, SVG, etc)

jMedia - accessible multi-media embedding.
JBEdit - Ajax online Video Editor.
jQuery MP3 Plugin.
jQuery Media Plugin.
jQuery Flash Plugin.
Embed QuickTime.
SVG Integration.

图片(Photos/Images/Galleries)

ThickBox.
jQuery lightBox plugin.
jQuery Image Strip.
jQuery slideViewer.
jQuery jqGalScroll 2.0.
jQuery - jqGalViewII.
jQuery - jqGalViewIII.
jQuery Photo Slider.
jQuery Thumbs - easily create thumbnails.
jQuery jQIR Image Replacement.
jCarousel Lite.
jQPanView.
jCarousel.
Interface Imagebox.
Image Gallery using jQuery, Interface & Reflactions.
simple jQuery Gallery.
jQuery Gallery Module.
EO Gallery.
jQuery ScrollShow.
jQuery Cycle Plugin.
jQuery Flickr.
jQuery Lazy Load Images Plugin.
Zoomi - Zoomable Thumbnails.
jQuery Crop - crop any image on the fly.
Image Reflection.

Google地图(Google Map)

jQuery Plugin googlemaps.
jMaps jQuery Maps Framework.
jQmaps.
jQuery & Google Maps.
jQuery Maps Interface forr Google and Yahoo maps.
jQuery J Maps - by Tane Piper.

游戏(Games)

Tetris with jQuery.
jQuery Chess.
Mad Libs Word Game.
jQuery Puzzle.
jQuery Solar System (not a game but awesome jQuery Stuff).

表格等(Tables, Grids etc.)

UI/Tablesorter.JQuery_003
jQuery ingrid.
jQuery Grid Plugin.
Table Filter - awesome!.
TableEditor.
jQuery Tree Tables.
Expandable “Detail” Table Rows.
Sortable Table ColdFusion Costum Tag with jQuery UI.
jQuery Bubble.
TableSorter.
Scrollable HTML Table.
jQuery column Manager Plugin.
jQuery tableHover Plugin.
jQuery columnHover Plugin.
jQuery Grid.
TableSorter plugin for jQuery.
tEditable - in place table editing for jQuery.
jQuery charToTable Plugin.
jQuery Grid Column Sizing.
jQuery Grid Row Sizing.

统计图(Charts, Presentation etc.)

jQuery Wizard Plugin .
jQuery Chart Plugin.
Bar Chart.

边框、圆角、背景(Border, Corners, Background)

jQuery Corner.
jQuery Curvy Corner.
Nifty jQuery Corner.
Transparent Corners.
jQuery Corner Gallery.
Gradient Plugin.

文字和超链接(Text and Links)

jQuery Spoiler plugin.
Text Highlighting.
Disable Text Select Plugin.
jQuery Newsticker.
Auto line-height Plugin.
Textgrad - a text gradient plugin.
LinkLook - a link thumbnail preview.
pager jQuery Plugin.
shortKeys jQuery Plugin.
jQuery Biggerlink.
jQuery Ajax Link Checker.

鼠标提示(Tooltips)

jQuery Plugin - Tooltip.
jTip - The jQuery Tool Tip.
clueTip.
BetterTip.
Flash Tooltips using jQuery.
ToolTip.

菜单和导航(Menus, Navigations)

jQuery Tabs Plugin - awesome! . [demo nested tabs.]
another jQuery nested Tab Set example (based on jQuery Tabs Plugin).
jQuery idTabs.
jdMenu - Hierarchical Menu Plugin for jQuery.
jQuery SuckerFish Style.
jQuery Plugin Treeview.
treeView Basic.
FastFind Menu.
Sliding Menu.
Lava Lamp jQuery Menu.
jQuery iconDock.
jVariations Control Panel.
ContextMenu plugin.
clickMenu.
CSS Dock Menu.
jQuery Pop-up Menu Tutorial.
Sliding Menu.

http://stilbuero.de/jquery/tabs_3/

幻灯、翻转等(Accordions, Slide and Toggle stuff)

jQuery Plugin Accordion.
jQuery Accordion Plugin Horizontal Way.
haccordion - a simple horizontal accordion plugin for jQuery.
Horizontal Accordion by portalzine.de.
HoverAccordion.
Accordion Example from fmarcia.info.
jQuery Accordion Example.
jQuery Demo - Expandable Sidebar Menu.
Sliding Panels for jQuery.
jQuery ToggleElements.
Coda Slider.
jCarousel.
Accesible News Slider Plugin.
Showing and Hiding code Examples.
jQuery Easing Plugin.
jQuery Portlets.
AutoScroll.
Innerfade.

拖放插件(Drag and Drop)

UI/Draggables.
EasyDrag jQuery Plugin.
jQuery Portlets.
jqDnR - drag, drop resize.
Drag Demos.

XML XSL JSON Feeds

XSLT Plugin.
jQuery Ajax call and result XML parsing.
xmlObjectifier - Converts XML DOM to JSON.
jQuery XSL Transform.
jQuery Taconite - multiple Dom updates.
RSS/ATOM Feed Parser Plugin.
jQuery Google Feed Plugin.

浏览器(Browserstuff)

Wresize - IE Resize event Fix Plugin.
jQuery ifixpng.
jQuery pngFix.
Link Scrubber - removes the dotted line onfocus from links.
jQuery Perciformes - the entire suckerfish familly under one roof.
Background Iframe.
QinIE - for proper display of Q tags in IE.
jQuery Accessibility Plugin.
jQuery MouseWheel Plugin.

对话框、确认窗口(Alert, Prompt, Confirm Windows)

jQuery Impromptu.
jQuery Confirm Plugin.
jqModal.
SimpleModal.

CSS

jQuery Style Switcher.
JSS - Javascript StyleSheets.
jQuery Rule - creation/manipulation of CSS Rules.
jPrintArea.

DOM、AJAX和其它JQuery插件(DOM, Ajax and other jQuery plugins)

FlyDOM.
jQuery Dimenion Plugin.
jQuery Loggin.
Metadata - extract metadata from classes, attributes, elements.
Super-tiny Client-Side Include Javascript jQuery Plugin.
Undo Made Easy with Ajax.
JHeartbeat - periodically poll the server.
Lazy Load Plugin.
Live Query.
jQuery Timers.
jQuery Share it - display social bookmarking icons.
jQuery serverCookieJar.
jQuery autoSave.
jQuery Puffer.
jQuery iFrame Plugin.
Cookie Plugin for jQuery.
jQuery Spy - awesome plugin.
Effect Delay Trick.
jQuick - a quick tag creator for jQuery.
Metaobjects
.
elementReady.

英文:http://www.kollermedia.at/archive/2007/11/21/the-ultimate-jquery-plugin-list/

作者:TerryLee
出处:http://terrylee.cnblogs.com

3月22日

项目正式启动

来公司十多天,昨天宣布法国项目正式启动,这个项目预计要做6个月。

这个项目是基于Joomla的二次开发,项目本身没有多难,但是新公司做的都很正规,质量控制,风险评估,功能测试,都一起进行。学到了不少。

Technorati 标签: ,
3月15日

起点

  刚到公司第一天就有新任务,是法国的一个项目。在Joomla系统上进行二次开发。

  研究了一下Joomla,中文资料还真少,比Xoops还要少。不过这个CMS系统写的比Xoops还要巧妙。正是因为他的巧妙,所以刚开始学的时候不那么容易理解。本来E文就不好,想找中文的资料看看,找了一圈又看了一下E文官网上的教程,API手册也没有中文的,试着看中文的吧。

  第一个小Demo做出来了,感觉还行,只要了解了他的API和结构还是能上手的。就是现在还不知道项目具体会要什么样的组件。

  准备开始学英语了,之前一直没后悔没学好英语,现在开始有点了,从最初级的学起吧。音标现在我都认不全,语法更别提了。一直看CSI,对语音还是有点感觉的,就是从没张嘴说过。

  再次加油,努力~!

Technorati 标签: ,
3月12日

工作用英语

我英语就初二水平,日语毕业前也不会,但是不知道为什么,我总能被外企看中,明天就要去新公司上班了不免有点紧张。

自从初二以后英语就从没及格过的我,能行吗?

不过想想也没什么好怕的,听都听十好几年了,日语之前也是不会,不也学下来了。这回趁这个机会,一定要把英语学好。艺多不压身嘛。

就是上班时间有点奇怪,10到19点,不过还好不是半夜。

Writer试用

以前也用过一回,不那么好使,今天看上去好像还可以。

2月22日

终于好使一回

不知道为什么这里一直有问题,今天终于好使一回,可我一打字还一闪一闪的。
12月7日

fckeditor配置详解2.4.2

原文连接:http://www.phpx.com/viewarticle.php?id=133761
前言:

FCKeidtor是个国外的多语言编辑器,你可以对其配置文件进行简单修改使之支持目前常用Web开发语言的应用,下面我就讲讲FCKeditor的最新版本2.4.2在php的具体配置过程,有不足和出错的地方,欢迎指正。

精简:
正因为这个编辑器是支持多语言的,所以首先我们针对使用对其做相应的冗余文件删除。

1、临时文件及文件夹删除:从根目录下开始删除一切以“_”开头的文件及文件夹,因为他们为临时文件和文件夹。删除这类临时文件及文件夹之后,我们还 要删除一些根目录下的多余文件,根目录下我们只保留fckconfig.js(配置文件)、fckeditor.js(js方式调用文件)、 fckeditor.php(php方式调用文件,新版本通过该文件统一调用php4或者php5的调用文件, fckeditor_php4.php/fckeditor_php5.php你可以根据自己服务器使用的情况删减,建议都保留)、 fckeditor_php4.php(php4的调用文件)、fckeditor_php5.php(php5的调用文件)、 fckstyles.xml(样式)、fcktemplates.xml(模板)文件和editor文件夹。

2、editor\lang目录:存放的是多语言配置文件,因为我们只可能用到en和zh-cn(简体中文)所以,根据我的选择,我删掉其他的语言配置文件。

3、editor\skins界面目录:默认带有三个界面(default:默认界面,加载速度相对较快;office2003:相对pp的界面,不过速度确实要慢些;silver:银白色界面,加载速度也相对较快),可以自行决定是否删除其中一两个。

4、editor\filemanager\browser\default\connectors目录:存放编辑器所支持的Web动态语言,我们以 php为例所以保留php目录,test.html文件可以帮助你查看某语言下的上传设置等(具体上传设置我将在后面的配置作较为详细讲解),可以自行决 定是否删除。

5、editor\filemanager\upload目录:同理。

到此精简完成,你会发现整个编辑器确实“瘦身”不少,呵呵

基本配置:

下面我开始对编辑器进行简单配置(并非每步都必须,可根据自己的需要参考修改):

1、默认语言
打开fckconfig.js文件(注意此文件是utf-8编码哦), 找到FCKConfig.AutoDetectLanguage = true ;(第56行)此句作用为自动检测语言,默认为true,即表示编辑器会根据系统语言自动检测加载相应的语言,我们将其改为false,不让其检测,然后 将FCKConfig.DefaultLanguage = 'en';(编辑器默认语言,第57行)改为简体中文"zh-cn"。

2、字体列表
依然打开fckconfig.js,因为此编辑器为外国人编写,所以默认不提供中文字体,我们为其加入,找到FCKConfig.FontNames(第142行)加入“宋体;楷体_GB2312;新宋体;黑体;隶书;幼圆;”其他字体可根据自己需要自行加入。

3、文件上传
FCKeditor的文件管理程序在editor/filemanager/文件夹下,分为浏览(browser)和上传(upload)两种。“浏 览”是指浏览服务器已存在文件并可以选择,也可以上传本地文件至服务器;上传是指快速上传,在窗口中点“上传”选项,选择本地文件后上传就行,但是不能查 看服务器上已有上传文件,相对而言不太方便,只是操作更为快捷。也就是说FCKeditor中有一个文件浏览,有两个文件上传,而这些设置是分散在多个文 件中,配置相对复杂,下面我大致讲一下:
在FCKeditor中共有三个文件跟上传功能有关,一个是js文件,两个是php文件,前者关闭后界面中不出现相关窗口或按钮,后者关闭后相关功能不可用。
js文件即是指的fckconfig.js文件,在以前旧版本的fckconfig.js中首先你必需开启如下几项:

浏览上传功能:

CODE:
FCKConfig.LinkBrowser = true ; //文件
FCKConfig.ImageBrowser = true ; //图片
FCKConfig.FlashBrowser = true ; //Flash

快速上传功能:

CODE:
FCKConfig.LinkUpload = true ; //同上
FCKConfig.ImageUpload = true ; //同上
FCKConfig.FlashUpload = true ; //同上

即把这几项设为true,而我们今天使用的2.4.2的fckconfig.js中默认已经是开启上传开关显示功能的,所以,如果你要将该编辑器作为前 台使用(fckeditor上传漏洞问题一直没有得到较好的改善),考虑到安全性你可能需要关闭文件上传功能,那么你只需要将这几项设置为false即可 (当然两个php文件你也不要开启上传功能哦)。

如果你要使用文件上传功能,那么我们继续配置:
依然在fckconfig.js文件中,fckeditor对语言默认支持的是asp,找到以下两句,进行相应修改:

CODE:
var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py(第182行)
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php(第183行)

我们将其均改为'php':

CODE:
var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py(第182行)
var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php

在2.4.2版本中,我们发现增加了对更多文件后缀名的支持,这个应该是为了解决上传漏洞所作的些许改动,不过作用不大,呵呵
*.AllowedExtensions:(其中*号代表:FCKConfig.LinkUpload、FCKConfig.ImageUpload 等)表示允许上传的文件后缀名,为空表示允许所有文件,你可根据自己需要设置上传文件后缀名,一定程度增加安全性,设置的格式可以参考它已有的后缀名设 置。
*.DeniedExtensions:同上,表示禁止上传的文件后缀名。

注:你设置了允许上传的,当然禁止的也就不必要设置了,本人推荐设置允许的,毕竟禁止的后缀名列表不能罗列完全,可能还有很多我们不曾想到的后缀名。

对js文件的配置到此已经完成,下面我们进行两个php文件在上传方面的设置:

文件浏览上传修改:
打开editor\filemanager\browser\default\connectors\php\config.php文件,找到:
$Config['Enabled'] = false ;(第28行)将false改为true,即允许上传。
$Config['UserFilesPath'] = '/userfiles/' ;(第32行)为定义上传目录,可根据自己情况进行修改,我将其改为upload目录。

注:注意FCKeditor是不支持虚拟目录的,你的所有路径都是针对网站根目录的绝对路径。

文件快速上传修改:
打开文件editor\filemanager\upload\php\config.php文件,找到
$Config['Enabled'] = false ;(第28行)将false改为true。
$Config['UserFilesPath'] = '/UserFiles/' ;(第35行)同“文件浏览上传”的上传目录。
$Config['UseFileType'] = false ; (第32行)改为true,不然上传文件不会放在上传目录中
在该文件中,还有一项:
$Config['UserFilesAbsolutePath'] = '' ;(第41行)
这项的作用是设定上传的绝对路径,比如,你想指定上传文件到D:/Web/upload/下,你可以指定它的值为你的绝对路径,注意,如果你指定了该值,那你也要对$Config['UserFilesPath'] = '/UserFiles/' ;作相同的设置。

到此上传基本配置已经完成,整个编辑器最基本的配置也已经结束了,你可以通过下列代码对其进行调用测试了:
[php]<?php
include("/fckeditor/fckeditor.php"); // 包含fckeditor类,fckeditor目录放在网站根目录下
$BasePath = "/fckeditor/"; // 编辑器路径
$oFCKeditor = new FCKeditor('jayliao'); // 创建一个fckeditor对象,表单的名称为jayliao
$oFCKeditor->BasePath = $BasePath;
$oFCKeditor->Value = 'test'; // 设置表单初始值

// 还可设置以下部分(“=”包含部分),并非必须:
//==================================================================================//
$oFCKeditor->Width = '100%'; // 编辑器宽度,类中有默认值,如果不想修改可不管此项
$oFCKeditor->Height= '300'; // 同width,此处为高$oFCKeditor->ToolbarSet
$oFCKeditor->ToolbarSet = 'JayLiao'; // 默认编辑器工具栏有Basic(基本工具)和Default(所有工具)两种选择,JayLiao为本人自定义的工具条,如有需要可参考后文中的说明新建或修改工具条
$oFCKeditor->Config['SkinPath'] = '/fckeditor/editor/skins/office2003/'; // 设置编辑器皮肤
//==================================================================================//

$oFCKeditor->Create(); // 调用类中方法,必须
?>[/php]

赶紧测试一下吧,是不是很激动,终于可以看到这个强大的编辑器了,呵呵。不过,马上你会发现在上传以中文命名的文件时会出现乱码,这到底是怎么回事呢?呵呵,不怕,下面我们就对其进行简单修改问题很快就解决的:
我们为上传文件以时间+随机数作为其新名字,打开:editor\filemanager\upload\php\upload.php,找到:
[php]$sFileName = $oFile['name'] ;[/php]
替换为:
[php]  $sFileName = $oFile['name'] ;
$sOriginalFileName = $sFileName ;
$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ;
$sFileName = date("YmdHis").rand(100, 200).".".$sExtension;[/php]
哈哈,你会发现“快速上传”的乱码已经解决,就这么简单,高兴之余不要忘了,同样,还需要修改“浏览”的上传,修改文件:editor\ filemanager\browser\default\connectors\php\commands.php,修改内容同上。

另:你上传的中文文件不做以上命名修改可能在服务器上并非乱码,如果你只是为了在浏览 的时候让编辑器正确显示该类文件名,那你可以作如下修改,打开:editor\filemanager\browser\default\ connectors\php\util.php,修改ConvertToXmlAttribute函数,将:

CODE:
return utf8_encode( htmlspecialchars( $value ) ) ;

修改为:

CODE:
return iconv( "GBK", "UTF-8", htmlspecialchars($value) ) ;

这样,你的编辑器应该已经能正确显示中文名,不过强烈建议你修改上传文件的命名,中文名可能存在诸多不便。

当完成以上设置后,fckeditor已经能满足我们的日常使用需要,不过我们却又发现一个问题,那就是上传后的文件我们却无法删除,这样会使网站上 的垃圾文件(主要是图片)日益增多,那我们是否能够通过对编辑器的修改能较为方便的管理删除无用上传文件呢?我们不难想到fckeditor的浏览文件功 能,对该功能进行适当的扩展,对日常所上传的文件进行管理就变得相当简单易行了,那我们赶紧动手吧:
增加该功能我们修改的页面为:fckeditor\editor\filemanager\browser\default\frmresourceslist.html

第一步,在页面的body区域增加如下代码:

CODE:
  <div id="showFile" style="float:left; display:none; background-color:#999999"></div>
<iframe id="iframe_del" name="iframe_del" width="0" height="0" scrolling="no"></iframe>
<div id="body_content"></div>

说明:第一对的作用是当我们把鼠标移动到所上传的文件上时显示其相关信息;<iframe></iframe>标签的作用是供我们删除上传文件时做动作响应窗口的,即是将我们的删除动作在iframe中运行,目的是实现伪无刷新删除效果;最后一对的作用是显示上传文件及文件夹的列表(2.4较以前版本对标签中内容作了调整,老版该页面以
作为存放列表的容器,而新版直接将显示容器在js中生成,为了使文件显示div和iframe两组标签正常使用,故在body标签中加入一对标签,使之能正常使用,在我的尝试中,倘若不这样修改似乎有错,当然不排除我方法不当的原因,呵呵

第二步,在文件的js代码区中加入:

CODE:
  // add by jayliaoscu @ 2007-04-23 /*{{{{*/
// 显示文件显示层
function showDiv( fileUrl )
{
var name = fileUrl;
//获取文件类型
var suffix = name.substring(name.lastIndexOf(".")+1);

var div= document.getElementById("showFile");
div.content = "";
div.style.position = "absolute";
div.content += "<table width='256' border='0' cellpadding='3' cellspacing='1' bgcolor='#737357'><tbody><tr><td height='23' align='left' bgcolor='#C7C78F'><table width='100%' height='100%' border='0' cellpadding='0' cellspacing='0'><tbody><tr><td width='47%'>&nbsp;<a href='javascript:' onClick='hiddenDiv();'><font color='#000000' style='text-decoration:none;'>关闭</font></a></td> <td width='53%' align='right'><a href='javascript:' onclick='delFile(\"" + fileUrl + "\");'><font color='#000000' style='text-decoration:none;'>删除</font></a>&nbsp;< /td></tr></tbody></table></td></tr>";
if (suffix=='gif' || suffix=="jpg" || suffix=="jpeg" || suffix=="bmp" || suffix=="png")
{
div.content += "<tr><td align='center' bgcolor='#C7C78F'><img src='" + fileUrl + "' onload='if(this.width>250) this.width=250' style='margin:3px;'></td></tr>";
}
else
{
div.content += "<tr><td height='35' align='center' bgcolor='#C7C78F'><strong>该类型不能预览</strong></td>< /tr>";
}
div.content += "</tbody></table>";
div.innerHTML = div.content;
div.style.display = "";
div.style.top = event.y+document.body.scrollTop+10;
div.style.left = event.x+document.body.scrollLeft+30;
}
// 隐藏文件显示层
function hiddenDiv()
{
var div= document.getElementById("showFile");
div.style.display ="none";
}
// 在iframe中删除文件
function delFile( fileUrl )
{
if(!confirm('你确定删除该文件?'))
return;
var url = '/fckeditor/del_file.php?filePath='+ fileUrl;
window.open(url, "iframe_del");
Refresh();
}
///*}}}*/

第三步,修改本页面原有js
修改:

CODE:
  oListManager.Clear = function()
{
document.body.innerHTML = '' ;
}

为:

CODE:
  oListManager.Clear = function()
{
hiddenDiv();
document.getElementById("body_content").innerHTML = '' ; // body_content为我们在body区域增加的div标签
}


找到:

CODE:
var sLink = '<a href="#" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');return false;">' ;

修改为:

CODE:
var sLink = '<a href="#" onmouseover="showDiv(\'' + fileUrl + '\');" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');return false;">' ; // 即是文件信息显示功能

修改:

CODE:
  function Refresh()
{
LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
}

为:

CODE:
  function Refresh()
{
hiddenDiv(); // 所作修改,为了刷新列表时默认隐藏文件显示层
LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
}

修改函数:GetFoldersAndFilesCallBack,找到:

CODE:
document.body.innerHTML = oHtml.ToString() ;

修改为:

CODE:
document.getElementById("body_content").innerHTML = oHtml.ToString() ;

最后,增加一个文件删除页面del_file.php(该文件路径和增加的js函数delFile(fileUrl)中的调用一致),作用为删除文件,给出成功与否的操作提示,参考代码:
[php]  <?php
$filePath = "..".trim($_GET['filePath']);

if ( $filePath )
{
@unlink($filePath);
echo "<script>alert('删除成功。');</script>";
}
else
{
echo "<script>alert('删除错误,可能文件不存在或者已经删除。');</script>";
}
?>[/php]

至此,我对于fckeditor的修改基本完成,当然这些修改只是对fckeditor修改使用的抛砖引玉,给大家一个参考,希望对初学者有所帮助。 后面对编辑器的修改过程比较匆忙,并未修改一步完成一步文档书写,所以,难免有所出错,望见谅,如果你有什么问题和错误发现欢迎联系我互相讨论,共同进 步,呵呵

By jayliaoscu @ 2007-5-5
QQ: 41806572
Email: jayliaoscu@gmail.com


另附:
配置文件(fckconfig.js)中主要配置项目如下,根据自己看情况配置:
CODE:
 FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称
FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件
FCKConfig.BaseHref = ''; // 相对链接的基地址
FCKConfig.Debug = true/false; // 是否开启调试功能,当调用FCKDebug.Output()时,会在调试窗中输出内容
FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/'; // 设置皮肤
FCKConfig.AutoDetectLanguage = true/false ; // 是否自动检测语言
FCKConfig.DefaultLanguage = 'zh-cn' ; // 设置默认语言
FCKConfig.ContentLangDirection = 'ltr/rtr'; // 默认文字方向,ltr左,rtr右
FCKConfig.FillEmptyBlocks = true/false ; // 使用这个功能,可以将空的块级元素用空格来替代
FCKConfig.FormatSource = true/false; // 切换到代码视图时,是否自动格式化代码
FCKConfig.FormatOutput = true/false; // 当输出内容时是否自动格式化代码
FCKConfig.FormatIndentator = ""; // 当在“源码格式”下缩进代码使用的字符
FCKConfig.GeckoUseSPAN = true/false; // 是否允许SPAN标记代替B,I,U标记
FCKConfig.StartupFocus = true/false; // 开启时是否FOCUS到编辑器
FCKConfig.ForcePasteAsPlainText = true/false;// 强制粘贴为纯文本
FCKConfig.ForceSimpleAmpersand = true/false; // 是否不把&符号转换为XML实体
FCKConfig.TabSpaces = 0/1; // TAB是否有效
FCKConfig.TabSpaces = 4; // TAB键产生的空格字符数
FCKConfig.ShowBorders = true/false; // 是否合并边框
FCKConfig.ToolbarStartExpanded = true/false; // 页面载入时,工具栏是否展开,点“展开工具栏”时才出现
FCKConfig.ToolBarCanCollapse = true/false; // 是否允许展开折叠工具栏
FCKConfig.ToolbarSets = object ; // 编辑器的工具栏,可以自行定义,删减,可参考已存在工具栏
FCKConfig.EnterMode = 'p'; // 编辑器中直接回车,在代码中生成,可选为p | div | br
FCKConfig.ShiftEnterMode = 'br'; // 编辑器中Shift+回车,在代码中生成,可选为p | div | br
FCKConfig.ContextMenu = 字符串数组; // 右键菜单的内容
FCKConfig.FontColors = ""; // 文字颜色列表
FCKConfig.FontNames = ""; // 字体列表
FCKConfig.FontSizes = ""; // 字号列表
FCKConfig.FontFormats = ""; // 文字格式列表
FCKConfig.StylesXmlPath = ""; // CSS样式列表的XML文件的位置
FCKConfig.TemplatesXmlPath = ""; // 模版的XML文件位置
FCKConfig.SpellChecker = "ieSpell/Spellerpages"; // 拼写检查器
FCKConfig.IeSpellDownloadUrl = ""; // 下载拼写检查器的网址
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/'; // 表情文件存放路径
FCKConfig.SmileyImages = ''; // 表情文件名称列表,具体参考默认设置
FCKConfig.SmileyColumns = 8; // 表情窗口显示表情列数
FCKConfig.SmileyWindowWidth = 320; // 表情窗口显示宽度,此窗口会因为表情文件的改变而作调整
FCKConfig.SmileyWindowHeight = 240; // 表情窗口显示高度,此窗口会因为表情文件的改变而作调整
FCKConfig.FullPage = true/false; // 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
11月13日

Zend Framework 编码问题

之前在PHP下工作,解决了很多乱码问题,因为常做日本项目,最近用ZendFramework的时候发现中文乱码,后来研究了一下,解决了,代码如下。
$dbAdapter = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
$dbAdapter->query("SET NAMES utf8");
 
只要在实列化具库后运行设置一下MySQL的编码就可以了。开始写成了utf-8一直没好使,后来才改对的。
 
;
;
请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。
LiYanrong发表:
呵呵,留言了。
你的blog内容丰富阿。
6 月 13 日