預設情況下,Codeigniter的網址長這樣:
example.com/index.php/news/article/my_article
設定友善網址之後,就變成這樣:
example.com/news/article/my_article
就是把多餘的index.php給拿掉了,Codeigniter本身提供快速簡潔的URL處理方式,設定步驟很簡單。
.htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|img|css)
RewriteRule ^(.*)$ index.php/$1 [L]
※ 必須將放置靜態檔案(例如css/js/img等)的資料夾名稱加入RewriteCond設定,否則一律都丟給index.php處理就麻煩了。
application/config/config.php
$config['index_page'] = "";
$config['base_url'] = "http://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= preg_replace('@/+$@','',dirname($_SERVER['SCRIPT_NAME'])).'/';
※ index_page的設定值空白,在使用Codeigniter的URL Helper系列function時,就會產生友善網址(其實就是少了index.php字串的輸出)。
二、取得GET資料
既然使用Codeigniter,當然就不必再用$_GET的傳統PHP寫法去抓網址列參數,Codeigniter的Controller提供一個簡潔的參數處理機制。
傳統的PHP可能這樣寫:
example.com/index.php?module=blog&action=article&id=123&type=json
使用Codeigniter之後,要開始習慣這樣做:
example.com/blog/article/123/json
而對應的Controller則是這樣寫:
class Blog extends Controller {
function article($id, $type = 'xml') {
...
在Controller的method可以自訂多個參數,Codeigniter會將網址包含的參數資料取出,依參數的位置順序傳遞給method處理。
所以,複雜的資料,例如表單提交的一大串代碼,就不適合用GET的方式傳遞。事實上由於URL有長度、編碼限制,本來就不適合傳遞又大又雜的資料,複雜的資料必須以POST方式處理。
三、取得POST資料
假設有一表單資料 <input name="field1" ... /> 送出,則使用以下語法接收。
$form_field1 = $this->input->post('field1');
若要防止XSS(Cross Site Script)攻擊,可以指定第二個參數為true,藉由Codeigniter提供的XSS Filter過濾不安全的代碼。
$form_field1 = $this->input->post('field1', true);
※ 附錄今天製作的一個網站雛型畫面,使用Codeigniter + PEAR::Text_Wiki_Mediawiki 開發,只寫四個PHP程式就完成一個內建Wiki語法引擎的動態網頁,即2個Controller + 2個View。網站的動態內容以Wiki語法儲存成TXT純文字檔案,並提供線上管理者編輯功能,導覽列的選單也即時由TXT檔案解析產生。


※ Codeigniter: http://codeigniter.com/
請問下CodeIgniter 的數字分頁該如何寫
回覆刪除官方的 use_page_numbers 似乎好像怪怪的