CodeIgniter 2.0.1 Release 發佈了

CodeIgniter
很高興可以聽到這消息,那就是

CodeIgniter Release 2.0.1 版本了,原本大家都很擔心為什麼 CodeIgniter 每發佈 Release 版本都要等個好幾個月甚至到半年以上,現在不用這麼久了,因為自從官方新增了 CodeIgniter Reactor 加速版本開發及修正,所以更多人貢獻了自己的程式碼及回報問題,我相信 CodeIgniter 會越來越好,希望有更多台灣的朋友來使用。 2.0.1 版本新增了 ENVIRONMENT 這環境變數,讓程式開發者可以任意調整環境狀況,最主要是改變 PHP error reporting 狀態:

/*
 * production => error_reporting(0)
 * development => error_reporting(E_ALL)
 */
define('ENVIRONMENT', 'production');
當您設定為 production,表示網站不需要任意輸出錯誤訊息,如果調整成 development,系統就會打開全部錯誤訊息,這對開發者相當重要。如果想瞭解更多,請參考

Handling Multiple Environments。 歡迎大家下載最新版本: http://www.codeigniter.org.tw/downloads 如果想加入翻譯團隊,可以參考這裡: https://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan

PHP CodeIgniter Google URL Shortener API Library

CodeIgniter

原由 由於 bbs 的盛行,從最早的

0rz.tw 短網址出現,陸陸續續出來很多更好用的網址: tinyurl.com, bit.ly,後來 Google 也推出 goo.gl 服務,讓大家可以使用,提供了 Google URL Shortener API 讓程式開發者可以順利使用此 API,當然在使用 API 之前一定要跟 Google 申請一組 API Key,先到 Google API Console 申請,Shortener API 的規定每天可以存取 1,000,000 次(100萬),我想這樣也足夠個人或者是公司使用了,除非真的比這個大量,可以跟 Google 再提出額外申請。

系統需求

下載檔案 我已經將檔案都放在

github 上面,為了保持程式最新版本,請大家到底下連結進行下載

CodeIgniter-Google-URL-Shortener-API

系統文件

安裝 此安裝檔案共有三個:
  • application/config/google_url_api.php
  • application/controllers/google_url.php
  • application/libraries/Google_url_api.php 請將檔案放入到相對應的 application 目錄即可
設定 打開

application/config/google_url_api.php 檔案,將申請好的 API Key 填入即可

第一次執行 請在網址列打入

http://your_host/index.php/google_url/ 即可,如果有任何問題,可以在 Controller 部份將 debug mode 打開

$this->google_url_api->enable_debug(TRUE);
[Read More]

[新聞] CodeIgniter 發佈 2.0.0 版 Release

CodeIgniter
繼上次

[新聞] PHP Framework Codeigniter 1.7.3 釋出 Release 之後,官方終於釋出 2.0 的版本,消息來源: http://codeigniter.com/news/codeigniter_2.0.0_released/CodeIgniter 發展其實還蠻慢的,所以很多工程師都跳去其他 PHP Framework 了,然而我始終認為 CI 是一套非常好學習的初階 Framework,希望更多人來使用,底下是 2.0 發佈相關新聞,大家可以參考看看到底做了哪些改變以及 Fix Bug list:

[Read More]

[新聞] PHP Framework Codeigniter 1.7.3 釋出 Release

CodeIgniter
剛出爐的新聞:

CodeIgniter 1.7.3 Released,1.7.3 版本的出來,最主要是修正了 Upload class 的安全性,在上一次公告就有 Upload Class Patch,只是 1.7.3 就把它納入進來,還有修正在某些情況下可能出現所有檔案,除此之外沒有其他重大修正了,看起來是為了過不久的 2.0 所準備,目前團隊都朝 2.0 發展了。 原文:

Version 1.7.3 is a security maintenance release, including a previously patched file Upload class, and a new security fix to prevent possible directory traversal in certain circumstances (back ported from a fix made to CodeIgniter 2.0 at BitBucket). There are no other significant changes. 搶先版: 下載 Codeigniter 1.7.3

CodeIgniter 2.0 發展狀況(現在更棒了) 不再支援 PHP4

CodeIgniter 在官網正式公告了一篇 2.0 目前的狀況及改善 CodeIgniter 2.0 - Now with more Awesome,該篇重點莫過於 CI 2.0 將不再支援 PHP 4.0 版本了,這是一項重大改變,官方給目前版本取了一個名稱:CodeIgniterNoPhp4,看到這名字大概就可以知道官方要捨棄 PHP4 了。 自從 CodeIgniter 將所有程式碼搬到 Bitbucket 上面時,就已經宣稱不再 support PHP4,運行了好幾個月,現在以 PHP 5.1.6 來當作開發重點,底下是官方說明 CI 2.0 該注意的地方(其實還有很多地方要注意): 1. 所有類別將以 CI_ 當作前置符號 2. 因為不支援 PHP4 了,所以建構子一律改成 __construct 3. CI_Base 已經被移除,取而代之的是 CI_Controller 4. 之前有提供 Compatibility 輔助函數,目前已經支援 PHP5 了,故將此移除 開始支援 Email and Validation chaining,看一下範例: $this->email->from('your@example.com', 'Your Name') ->to('someone@example.com') ->cc('another@another-example.com') ->bcc('them@their-example.com') ->subject('Email Test') ->message('Testing the email class.') ->send(); 最後官方作者有提到一些事情:ExpressionEngine and CodeIgniter 將不再支援 PHP4,PHP4 從2000年出來,到 2007 年結束,重點來了,官方說 PHP 4 帶給您的困擾,就如同現在 Internet Explorer 6。 可以參考: What’s New in CodeIgniter 2. [Read More]

Upgrading to CodeIgniter 2.0 (升級 CI 到 2.0 版本)

2011.02.09 Update: 由於官方推出 2.0.0 的升級方式,請參考升級版本 1.7.3 到 2.0.0

CodeIgniter
在國外文章看到

Phil Sturgeon 已在今年三月發佈了一篇如何將目前 CodeIgniter 版本升級到 2.0 開發版本,轉移的經驗會在底下做介紹,PyroCMS 是該作者產品之一,也升級到 2.0 了,大家可以參考看看。

[Read More]

CodeIgniter 2.0 的發展以及特性改變

在今年3月11日 EllisLab 發布了一則新訊息,信件內容大致上提到,他們將會改變程式的版本控制軟體,由原本的 Subversion 轉換到 Mercurial,CodeIgniter 也選擇了網路知名版本控制 BitBucket 網站來存放 CI 的程式碼,CI 團隊目前致力於 CodeIgniter 2.0 作開發,如果要取得程式碼,可以透過這裡,利用底下指令來取得: hg clone http://bitbucket.org/ellislab/codeigniter 這次我們來看看 CodeIgniter 2.0 跟 1.7.2 的版本差異性,雖然說這些不是官方公告的,可是也是改變蠻多的,也許有哪些沒有列到的,之後再慢慢補: 1. PHP4 正式掰掰 我想使用 CI 最方便的地方,就是支援 PHP5 & PHP4,方便使用者轉換網站到 CI 上面,現在 CI 2.0 之後將完全不支援 PHP4,一些舊有的函式會在 2.1 之後也不支援 PHP4 了,我想這樣整個 CI 的架構會縮小許多,PHP4 也太多漏洞了,這樣跟 Kohana PHP Framwork(原本從 CI branch 出來的) 一樣只會支援 PHP5 了,效能應該可以增加不少 2. Scaffolding 正式移除 Scaffolding 對於沒有後台管理的網站,臨時可以修改新增或者是刪除資料庫,不過相當危險,所以 CI 正式移除它,可以看一下中文文件。 3. 重新命名核心資料夾 將 system/codeigniter/ 名稱變成 system/core/,核心程式 Router, Loader, Output 等,都可以用 application/core 之中去替換(參考) 4. [Read More]

[CodeIgniter] 簡單擷取 html 原始碼(PHP Simple HTML DOM Parser)

來介紹一套解析 html 原始碼的 open source: PHP Simple HTML DOM Parser,這套程式可以讓您任意對原始碼進行擷取操作,抓取一些您需要的資訊,在搭配 preg_match 跟 preg_match_all 函數來使用,使用方法可以參考線上 Document,簡單的範例如下(參考官方網站):

// Create a DOM object from a string
$html = str_get_html('Hello!');

// Create a DOM object from a URL
$html = file_get_html('http://www.google.com/');

// Create a DOM object from a HTML file
$html = file_get_html('test.htm');
程式提供了三種讓您讀取原始碼,您可以直接丟 $string 或者是網址列,或者是檔案都可以,如果使用過 jQuery 您會發現在擷取 dom 的寫法很像,參考使用說明都寫得很清楚,由於

CodeIgniter 沒有此功能,所以我把程式改了一下 porting 到 CI 的 libraries 資料夾裡面,Patch 檔案

[Read More]

ICOS 2010 Introduction to CodeIgniter PHP MVC Framework

codeigniter_2
今年

ICOS 2010 我有講一場『Introduction to CodeIgniter PHP MVC Framework』的介紹,本來想藉此機會來宣導 CodeIgniter 這套比較少人知道的 Framework,可惜天公不作美,來了一場颱風,以至於2010年9月19號的議程全部取消,不過還是希望自己可以分享跟推廣這套 Framework,將來有機會也想在台北開一場台北的教學課程,就跟去年在高雄跟 OSSF 合作的『Open Source PHP Web Framework 系列講座』類似,底下是原本預計在19號(星期日)的簡報,希望大家會喜歡

[CodeIgniter] 利用 jQuery 簡易驗證使用者帳號/Email

codeigniter_2
好久沒寫相關

CodeIgniter 文章,針對於剛入門 CI 的新手們,此篇教學如何使用 jQuery AJAX 搭配 CI 來驗證使用者帳號及相關資訊,本篇教學帶您如何在 CI 中發出 AJAX request 給伺服器端。 請先在網頁 header 自行 include jQuery 檔案,或者可以使用 Google AJAX CDN 方式來讀取,將底下程式碼放到之前:

$(document).ready(function() {
    /* 先停止讀取狀態 */
    $('#Loading').hide();

    /* 填寫好 email 欄位,按下 Tab 會進行讀取 */
    $('#email').blur(function(){
    /* 讀取 email 欄位 */
	var a = $("#email").val();
    /* email 正規語法 */
	var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
    /* 簡易驗證 email */
	if(filter.test(a)){
        /* 讀取狀態 */
		$('#Loading').show();
        /* AJAX 比對資料庫 */
		$.post("controller_name/check_email_availablity", {
			email: $('#email').val()
		}, function(response){
            /* 驗證後讀取 reponse 狀態 */
			$('#Loading').hide();
			setTimeout("finishAjax('Loading', '"+escape(response)+"')", 400);
		});
		return false;
	}
});
[Read More]