[CodeIgniter] 解決 CI 下載函數 force_download 在 IE 底下檔案標題亂碼

CodeIgniter 底下提供了 force_download 函數,讓使用者可以直接下載檔案,但是會遇到中文的問題,IE 底下開起來檔名會是亂碼,force_download(‘filename’, ‘data’) 如果 filename 使用中文,測試 FireFox 跟 Chrome 都是沒問題的,唯獨 IE 開起來就是有問題,所以麻煩請修改 helpers/download_helper.php 這隻程式。 if ( ! function_exists('force_download')) { function force_download($filename = '', $data = '') { if ($filename == '' OR $data == '') { return FALSE; } // Try to determine if the filename includes a file extension. // We need it in order to set the MIME type if (FALSE === strpos($filename, '.')) { return FALSE; } // Grab the file extension $x = explode('. [Read More]

[新聞] CodeIgniter v1.7.2 Released

CodeIgniter 終於 Release V1.7.2 版本了,官方網站也公佈了此消息,那這次跟 v1.7.2 版本有哪些不一樣呢,我想最主要應該是支援 PHP 5.3.0 了

  • 相容於 PHP 5.3.0
  • 新增 Cart Class 類別
  • 改善 Form helper 函數
  • 新增 is_php() 到 Common functions 來更有善的比較 PHP 版本
  • 無數個 bug 修正
  • 修改 show_error() 函數功能 更多的 bug 修正,可以觀看

change log,我也順便了 send-pr 給 FreeBSD ports maintainer 請他 update 到 1.7.2:ports/138848,台灣的官網也需要來修正了,已經更新了 v1.7.2 上去,至於繁體中文文件方面還沒更新,有時間會把它更新,如果有任何問題,可以先到論壇留言找我。

[CodeIgniter] 分享中文官方網站範例程式碼

之前在高雄開了一堂:[CodeIgniter] Open Source PHP Web Framework 系列講座,在上課過程,我很強調大家可以多多參考網路上的範例來學習,所以找了官方網站的程式碼想分享給大家,希望大家看完程式碼,可以針對 CodeIgniter 的 Model Views Controller 有比較深入的瞭解,如果有不懂的地方,可以來論壇這邊提出問題,我會儘快回答大家,底下是程式碼的下載網址,包含論壇程式 PHPBB3,以及所有影片程式碼,大家可以參考看看: 檔案下載 裡面有需要注意的,就是 .htaccess 檔案:

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(videos|download_files|user_guide|forum|index\.php|admin|css|flash|images|img|includes|js|language|captcha|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
裡面會附上 db.sql 檔案,這是資料庫檔案,請麻煩匯入到您的資料庫,然後修改

system/application/config/database.php 內容的資料庫相關資訊,這樣就可以了。

[教學] 加入 Sphinx 繁體中文全文檢索 on CodeIgniter

sphinx 在寫這篇之前,有介紹過了 Sphinx 一篇針對繁體中文檢索的教學,大家可以先去參考看看,把 Sphinx 服務架設起來,在搭配 CodeIgniter MVC Framework 使用,把 Sphinx 提供的 PHP API 放到 CI 的 Library 裡面就可以運作了,首先去官網下載套件,然後參考官方的安裝文件,大致上就差不多了,下載的檔案裡面會有 api 資料夾,裡面提供了 python, ruby, java, php 的 client 端檔案,讓您去自由呼叫,PHP 部份可以看 sphinxapi.php 這個檔案,我們也只需要把這個檔案放入 CI 的 Library 裡面,不過寫法有些改變,請看底下

[Read More]

[CodeIgniter] Open Source PHP Web Framework 系列講座

update 2009.07.23: 有影音檔可以看了,請點選這裡 7月18日受到 OSSF::自由軟體鑄造場(Open Source Software Foundry)的邀請,在高雄講一場 Open Source PHP Web Framework系列講座 - CodeIgniter (高雄場次) ,我準備了 87 張投影片,包含介紹了 CodeIgniter 目前台灣官方網站的狀況,以及流行 PHP MVC Framework 的比較,大部分時間花在 Controller, Views 身上,還有 helper function, Library Class 教學使用,沒有把 Model 精華部份教完有點可惜,內容可能有點多,一整天六小時的課程把教學消化,好像有點困難了,這也是給我一點警惕,下次教學這部份內容要在改變一下,這樣對於來上課的學員,才不會感到排斥,最後非常感謝酷學園的阿民來幫忙錄影,以及飛亨現場支援,以及讓我有這次機會可以上台分享這幾個月在 CI 上面的使用心得,底下是我這次的上課投影片,如果大家有問題可以到論壇討論,或者是看看繁體中文教學文件,如果對於翻譯教學文件有興趣,可以再跟我聯絡喔。

[CodeIgniter] lighttpd rewrite rule && apache mod_rewrite

CodeIgniter 要移除網址列存在的 index.php,apache 必須使用 mod_rewrite 寫入 .htaccess 的方式來達成,lighttpd 也是有支援 rewrite,可以參考官方文件:Module: mod_rewrite,設定方法很容易。

$HTTP["host"] == "mimi.twgg.org" {
  server.document-root = "/var/www/html/MLB/"
  url.rewrite = (
        "^/images/.*$" => "$0",
        "^/includes/.*$" => "$0",
        "^/(.*)$" => "index.php/$1"

  )
  accesslog.filename = "/var/log/lighttpd/mimi.twgg.org-access_log"
}
[Read More]

[PHP] Gallery 3.0 Beta 1 使用 Kohana MVC Framework

Gallery Gallery 3.0 Beta 1 出來了,在 roga’s blog,看到這篇訊息,gallery 3 捨去 php smaty template engine,而改用 Kohana MVC Framework 這套 base on CodeIgniter 的 Framework,在 Gallery3:FAQ 裡面有提到為什麼會使用 Kohana 這套 MVC,gallery 團隊找尋了許多 MVC 的架構來幫助開發整個相簿系統,包含了 CakePHPZend FrameworkPradoSymfonyCodeIgniter,最後經過許多人的討論,選用了 Kohana 這套 MVC,原本打算考慮 CI 的,雖然 CI 支援 PHP4 跟 PHP5,以及它非常的小,對於效能方面也非常的好,但是並不支援 PHP5 的 exception,畢且有些少數的 Structure 只有支援 PHP4,所以就不被他們採納了,再來 Zend Framework 因為包含了 1705 個檔案,相當龐大,效能比 CI 少了 200-300%,雖然 ZF 文件相當豐富,不過沒有良好的 example 範例,所以導致 gallery 團隊遇到很多挫折,XDD。 最後選擇了 Kohana,雖然 Kohana 效能輸給 CI,不過這之間的差異極小,Kohana 也有 support PHP5 的 exception,Kohana 文件比 CI 還要少了些,不過對 gallery 團隊已經相當足夠了。底下有一篇各大 Framework 的效能比較:PHP framework comparison benchmarks,還有另一篇:Kohana vs CodeIgniter: Speed and Memory Usage Performance Benchmark

[CodeIgniter] 使用者註冊 auth code 亂數認證碼圖片

我想這已經是網站最基本的技術,防止機器人大量註冊,或者是灌爆留言板,之前寫了兩篇製作認證碼的教學:[PHP]製作類似 google 網頁認證碼[PHP] 好用的留言板 驗證碼 功能,這篇是要寫如何實做把第一篇教學整合到 CodeIgniter 系統裡面,來筆記一下,以後用到就相當方便了,CodeIgniter 在 path 路徑上面有小 bug,查了國外討論區發現了這篇 Path to CSS doesn’t work a second time,不過這並沒有解決我的問題,主機的網址是 http://xxxxx.xxx/path/,所有的 CI 檔案都是放在 path 目錄底下,包含圖片是 http://xxxxx.xxx/path/images/,在 View 裡面基本上只要寫 這樣就可以顯示圖片了,但是要改成 才能,但是我的 index.php 是放在 /path/ 裡面,以絕對路徑跟相對路徑來想,都是不太合理的,所以後來用 來解決,不過這是暫時的問題,我比較龜毛,喜歡寫短一點的 code。 如何裝上類似 google 的認證碼呢,首先打開 index.php 檔案

/* 算出 index.php 根目錄 */
define('Document_root',dirname(__FILE__));
[Read More]

[CodeIgniter] Text 補助函數 character_limiter 不適用於中文字

CodeIgniter 裡面的 Text 補助函數,目前只適用於英文字體,不支援 utf-8 或者是簡體字體,bite 數超過2的都會出問題,當然是因為這是國外的 mvc 所以也沒有考慮到這麼週到就是了,也不是沒有辦法解決,之前就用了PHP官方網站所提供的一個函式來正確切割中文字串,就是要利用 ord 判斷 ASCII 編碼範圍,或者是可以使用 mb_substr 函式正確切割,之前寫一篇可以參考看看:[PHP] 如何切割中文標題。 底下是原本 CodeIgniter 所提供的 Text 函數

if ( ! function_exists('character_limiter'))
{
	function character_limiter($str, $n = 500, $end_char = '…')
	{
		if (strlen($str) < $n)
		{
			return $str;
		}
		
		$str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));
    
		if (strlen($str) <= $n)
		{
			return $str;
		}
    
		$out = "";
		foreach (explode(' ', trim($str)) as $val)
		{
			$out .= $val.' ';
			
			if (strlen($out) >= $n)
			{
				$out = trim($out);
				return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
			}		
		}
	}
}
[Read More]