轉載自: PHPChina
近來接受 BBT 的培訓,做一個投票系統。系統程式碼倒不是很難,但是我的時間主要花費在了研究字符集和編碼上面。MySQL 和 Apache 兩個系統的編碼(字符集)問題讓我費勁腦筋,吃盡苦頭。網上對這些問題的解決比較零散,比較片面,大部分是提供解決方法,卻不說為什麼。於是我將這幾天收穫總結一下,避免後來者再走彎路。這篇文章對 PHP 編寫有一點幫助(看完你就知道,怎樣讓你的 PHP 程式在大部分空間提供商的伺服器裡顯示正常),但是更多幫助在於網路伺服器的架設和設置。
繼續閱讀 »
FCKeditor 雖然有提供很多種程式語言的檔案瀏覽程式,讓你可以很方便地上傳及插入遠端伺服器上的圖檔,但在瀏覽檔案的同時,我們最需要用到的圖檔卻不能顯示縮圖,感覺很不方便 (應該是故意留了一手)。
雖然官方網站上有建議使用 CKFinder 這支外掛程式來管理伺服器上的檔案,但 CKFinder 卻不是免費的。
思考了一下,雖然我的 PHP 很爛,但只是要做個縮圖的功能應該還難不倒我,於是就花了幾個小時把縮圖的功能實做出來。原理很簡單,只是先在相同目錄下產生 “.thumb.gif” 的縮圖檔,在列示時將縮圖顯示出來。

以下的修改方式適用於 FCKeditor 2.51 及 2.6Beta 版,請參考下列步驟 (推薦使用 2.6Beta 版):
安裝 php-gd 模組
其實製作完美縮圖的程式應該是 ImageMagick,但 ImageMagick 若要與 php 整合,步驟似乎比較麻煩,以簡單為原則,我們還是使用 GD 模組,你可以用 yum 安裝:
yum install php-gd
安裝完請動新啟動 apache:
service httpd restart
啟用 FKCeditor 的 php 遠端資源瀏覽程式
- 編輯 fckeditor/editor/filemanager/connectors/php/config.php:
- 將 $Config['Enabled'] 的值設為 true。
- 將 $Config['UserFilesPath'] 的值設為使用者圖檔的相對路徑 (網址的相對路徑)。
- 將 $Config['UserFilesAbsolutePath'] 的值設為使用者圖檔的絕對路徑 (伺服器上的絕對路徑)。
- 存檔完成。
- 編輯 fckeditor/fckconfig.js:
- 將 _FileBrowserLanguage 及 _QuickUploadLanguage 的值為 “php”。
- 將 FCKConfig.LinkBrowser、FCKConfig.ImageBrowser、FCKConfig.FlashBrowser、FCKConfig.LinkUpload、FCKConfig.ImageUpload、FCKConfig.FlashUpload 的值都設為 true。
- 存檔完成。
製作縮圖的功能
修改圖檔上傳的功能,圖檔上傳時製作縮圖。
編輯 fckeditor/editor/filemanager/connectors/php/commands.php,搜尋:
$sFileUrl = CombinePaths( GetResourceTypePath( $resourceType, $sCommand ) , $currentFolder ) ;
在這一行的上面加入:
// 製作縮圖
if ($sExtension == "gif"){
$src = imagecreatefromgif($sFilePath);
}else if($sExtension == "png"){
$src = imagecreatefrompng($sFilePath);
}else if($sExtension == "jpeg" || $sExtension == "jpg"){
$src = imagecreatefromjpeg($sFilePath);
}
if(isset($src)){
$src_w = imagesx($src);
$src_h = imagesy($src);
if($src_w > $src_h){
$thumb_w = 120;
$thumb_h = intval($src_h / $src_w * 120);
}else{
$thumb_h = 120;
$thumb_w = intval($src_w / $src_h * 120);
}
// 如果你使用 GD 的版本是 1.6.x, 請改用 imagecreate() 函數
$thumb = imagecreatetruecolor($thumb_w, $thumb_h);
imagecopyresized($thumb, $src, 0, 0, 0, 0, $thumb_w, $thumb_h, $src_w, $src_h);
imagegif($thumb, $sFilePath . “.thumb.gif”);
}
顯示縮圖的功能
修改資源瀏覽程式,可以顯示圖檔的縮圖。
編輯 fckeditor/editor/filemanager/browser/default/frmresourceslist.html。
- 搜尋:
return '<tr>' +
'<td width="16">' +
sLink +
'<img alt="" src="images/Folder.gif" width="16" height="16" border="0"><\/a>' +
'<\/td><td nowrap colspan="2"> ' +
sLink +
folderName +
'<\/a>' +
'<\/td><\/tr>' ;
改成:
return '<div style="float:left;width:120px;height:160px;margin-right:20px;">' +
sLink + '<img width="120px" border="0" src="images/Folder.gif">'+
'<p style="text-align:center;font-size:10px;margin-top:0px;"><' +
folderName + '></p></a></div>';
- 繼續搜尋:
return '<tr>' +
'<td width="16">' +
sLink +
'<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"><\/a>' +
'<\/td><td> ' +
sLink +
fileName +
'<\/a>' +
'<\/td><td align="right" nowrap> ' +
fileSize +
' KB' +
'<\/td><\/tr>' ;
改成:
var isImage = new RegExp(/\.(gif|png|jpg|jpeg)$/i);
var isThumb = new RegExp(/\.thumb\.gif$/i);
if(isImage.test(fileName)){
if(!isThumb.test(fileName)){
return '<div style="float:left;width:120px;height:160px;margin-right:20px;">' +
sLink + '<div style="text-align:center;width:120px;height:120px;cursor:hand;">' +
'<img border="0" src="' + ProtectPath( fileUrl ) + '.thumb.gif' +
'"></div><p style="text-align:center;font-size:10px;margin-top:0px;">' +
fileName + ' (' + fileSize + 'KB)' + '</p></a></div>';
}
}else{
return '<div style="float:left;width:120px;height:160px;margin-right:20px;">' +
sLink + '<img width="120px" border="0" src="images/icons/' + sIcon + '.gif">'+
'<p style="text-align:center;font-size:10px;margin-top:0px;">' +
fileName + ' (' + fileSize + 'KB)' + '</p></a></div>';
}
- 存檔完成。
注意事項
以上這樣就算大功告成了,你可以選擇 FCKeditor 工具列上 “插入/編輯影像” 的圖示,在對話框中選擇 “瀏覽伺服器端” 就可以了 (如果 “瀏覽伺服器端” 出現的畫面是空白的,你可能要先清除暫存檔,重新載入 FCKeditor 一次)。
在你上傳圖檔時,會自動產生一個寬或高皆不大於 120px 的圖檔放在同一個目錄,並且,也只有新上傳的圖檔才會有縮圖,之前就已經存在的圖檔,你必須自行製作圖檔放在同一個目錄才會有縮圖顯示(縮圖需命名為 “filename.ext.thumb.gif“)。
參考網頁
HTML
<head>
<meta http-equiv=refresh content="0;url=http://host.domain.tld/path/to/">
</head>
JavaScript
<script language="JavaScript">
<!--
window.location.href = "http://host.domain.tld/path/to/";
//-->
</script>
PHP
<?php
header("Location: http://host.domain.tld/path/to/");
?>
(轉址前不可有任何資料輸出)
Perl
#!/usr/bin/perl -w
print "Location: http://host.domain.tld/path/to/ \n\n";
(轉址前不可有任何資料輸出)
Perl - 使用 CGI 模組
#!/usr/bin/perl -w
use CGI qw/:standard/;
my $CGI = CGI->new();
print $CGI->redirect("http://host.domain.tld/path/to/");
(轉址前不可有任何資料輸出)