[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]

[CodeIgniter] 多國語言網站製作,重複 load 相同 language?

目前正在研究網站的多國語系寫法,研究了 CodeIgniter 的 Language class 用法,可以看線上中文文件:Language 類別,目前遇到一個疑問,在單一 PHP 檔案讀取,不可以同時讀取相同的 Language file 檔案,這樣是完全沒有作用的,以底下的例子來說,我在 application/language 目錄底下放了三個語系資料夾,English、zh-TW、zh-CN 這三個資料夾,裡面分別放路 vbs_lang.php 檔案,為了要區別各國的語系檔案,要分別開資料夾放入,在 CI 文件裡面都寫的很清楚,架構如下

  • application/language/English
  • application/language/zh-TW
  • application/language/zh-CN
[Read More]

[PHP] CodeIgniter 繁體中文翻譯計畫

CideIgniter 官方中文網站 本人目前正在推廣 CodeIgniter 官方中文網站,這套 MVC 在我使用起來還蠻適合新手學習的,也非常容易上手的一套 MVC Web development 架構 ,希望推廣給台灣繁體 php web 開發人員,即使您之前沒有用過 MVC 架構,只要懂的一點 PHP 語法,基本 function 會使用,基本上就可以直接來使用 CodeIgniter,在這裡徵求對 php 或者 CodeIgniter 翻譯繁體中文有興趣的網友或者是使用者們,可以加入繁體中文的翻譯計畫,我在 github 開了CodeIgniter translation 的 repository,網址是: http://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan/tree/master

[Read More]

[CodeIgniter] Web Framework 非官方繁體中文討論區成立

CodeIgniter 是我最近正在研究的一套 Web MVC Framework,為什麼會選擇這一套來推廣呢,目前在網路上大家所推的 MVC Framework,無非是 Zend FrameworkCakePHPKohanaYii PHP Framework{.new}…等,這些都算是國內常用的 MVC 架構,那效能方面可以參考:PHP framework comparison benchmarks,這篇寫到利用 httperf 測試 Web Performance,跑了很多效能方面的數據出來,這些數據也看看就好,大家還是都會選擇自己上手的 Framework 來使用,那今天我就是來推廣 CodeIgniter 這套 Web Framwork。

[Read More]

[PHP] Web Framework : CodeIgniter MySQL Database 使用教學

繼上一篇 [PHP] 好用 Web Framework : CodeIgniter 安裝教學 之後,這次來紀錄一下 Database Class 的用法,我想官方網站都已經寫的很詳細了,就大概快速講一下我的一些用法跟心得,其實最主要講的是內建的 Active Record Class,它可以快速撰寫 SQL 語法,不必打 where 或者是 From 這些字眼,insert update select 都可以利用 Active Record Class 很簡單的撰寫出來喔,它也幫忙簡單的檢查 escape SQL Injection,舉的簡單例子大概就知道了: 假設底下這個簡單的 join 一個表格的 select 語法

$query = $this->db->query("SELECT a.news_id, a.news_name, a.add_time FROM project_news a
 left join project_news_categories b on a.categories_id = b.categories_id
where news_id = '".$id."' order by news_top DESC, a.add_time DESC
");
利用

Active Record Class 可以改寫成:

$this->db->select('a.news_id, a.news_name, a.add_time');
$this->db->from('project_news a');
$this->db->join('project_news_categories b', 'a.categories_id = b.categories_id', 'left'); 
$this->db->order_by("news_top DESC, a.add_time DESC");
$this->db->where('news_id', $id); 
[Read More]

[PHP] 好用 Web Framework : CodeIgniter 安裝教學

最近都在 survey 一堆 PHP Web Framework,自己想學一套可以馬上上手的,其實因為目前在 PHP 的開發上面講求速度,以及程式的可維護性,雖然我自己有一套自己的開發方法,包含包好的 SQL Class 以及上傳模組,不過還是覺得熟悉一套 MVC 架構的寫法,將來維護或者是團隊合作方面會比較好分工,在小專案上面還可以自己來,但是大型專案就必須靠 MVC Framework 了,畢竟一個人寫程式,永遠比不上團隊合作,紀錄一下最近找到的一些網路比較多人用的 FrameWork:

[Read More]