CodeIgniter 是一套給 PHP 網站開發人員使用的應用程式開發架構和工具包。它提供一套豐富的標準庫以及簡單的介面和邏輯結構,其目的是使開發人員更快速地進行項目開發。使用 CodeIgniter 可以減少代碼的編寫量,並將你的精力投入到項目的創造性開發上。
CodeIgniter是由Ellislab公司的CEO RickEllis開發的。其核心架構是為這個程式特別編寫的,而其他很多類庫、輔助函數和子系統則來自於RickEllis和PaulBurdick編寫的內容管理系統ExpressionEngine。來自RubyonRails的靈感啟發我們創造了一個PHP架構,並且將架構的概念引入到網路社區的一般意識中。
在這篇文章中,我將介紹如何使用CodeIgniter架構、開發一個登入認證和註冊系統。
建立一個資料庫來儲存使用者資訊
下表將儲存在MySQL使用者相關的所有資訊。它僅獲得一些基本的資訊,你可以隨意延長。
| 代碼如下 |
複製代碼 |
CREATE TABLE IF NOT EXISTS `ci_users` ( `id_users` bigint(20) NOT NULL AUTO_INCREMENT, `user_login` varchar(255) NOT NULL, `user_pass` varchar(32) NOT NULL, `user_email` varchar(255) NOT NULL, `first_name` varchar(100) NOT NULL, `last_name` varchar(100) NOT NULL, PRIMARY KEY (`id_users`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
|
建立使用者登入表格
由於這將是簡單的HTML,我不會在這裡寫的代碼。確保,表單動作應指向使用者/註冊路線,這樣的請求到達使用者的控制器,然後執行功能“註冊”
建立表格後,我們需要寫“模型”邏輯,這樣我們就可以儲存到資料庫中的使用者註冊資訊。我要去,到建立方法create_user,裡面的“使用者”模式。的create_user方法將下面的代碼:
| 代碼如下 |
複製代碼 |
function create_user(){ $first_name = $this->input->post('first_name'); $last_name = $this->input->post('last_name'); $username = $this->input->post('user_login'); $eml = $this->input->post('email_address'); $clear_pass = $this->input->post('password'); $member_data = array( 'user_login' => $username, 'user_pass' => md5($clear_pass), 'user_email' => $eml, 'first_name' => $first_name, 'last_name' => $last_name ); $insert = $this->db->insert('ci_users', $member_data); return $insert; } |
現在我們有了模型和視圖準備,我們需要寫這兩個控制器邏輯串連,使我們能夠成功地渲染登記表和儲存資料。我們也打算把驗證邏輯,使用CodeIgniter的內建的驗證庫,裡面的控制器本身。
我假設您知道如何建立在CI的控制器,所以我將討論控制方法,其中最重要的部分。
首先,討論,讓我們使用下面這行代碼載入表單驗證庫。位於裡面的application / config / autoload.php autoload.php通過指定其名稱,可以自動載入這個庫。
| 代碼如下 |
複製代碼 |
PHP $this->load->library('form_validation');
|
現在來驗證,可以使用下面這行代碼:
| 代碼如下 |
複製代碼 |
PHP $this->form_validation->set_rules('first_name', 'Name', 'trim|required');
|
哪裡的FIRST_NAME是HTML元素的名稱,名稱是人類可讀元素名稱,修剪|所需元素的驗證規則。
您可以指定其他各種規則,你可以使用回調方法定義自訂驗證規則。如需更多資訊,驗證,檢查文檔。
要檢查如果驗證成功,我們使用下面的代碼塊:
PHP
| 代碼如下 |
複製代碼 |
if($this->form_validation->run() == FALSE) { //not validated - reload the view and display errors $this->load->view('signup'); } else { $this->load->database();//load users_mode defined in modes/uses_model.php $this->load->model('users_model'); //create user $this->users_model->create_user(); }
|
讓我們回顧一下上面的代碼片斷。我們首先驗證表單驗證,使用方法$this->form_validation->run() 。如果返回true,那麼我們是很好的。否則,我們在視圖中顯示錯誤。如果一切都正確輸入,我們應該建立新的使用者。請注意,我手動建立資料庫連接。
如果您的應用程式會更經常地使用資料庫,那麼你就可以載入庫通過指定到autoload.php檔案。最後,我們的模型載入並調用我們上面所討論的create_user。
這應該是你需要做的所有註冊一個新使用者在您的Web應用程式。
建立一個登入過程
下一步,我們應該提供一種方法,在這些註冊使用者登入。的過程是相同的。我們建立視圖,然後模型和控制器內部終於做加工。
消毒後的使用者輸入(如上述),在模型中,我們可以查詢資料庫,用下面的方法:
PHP
| 代碼如下 |
複製代碼 |
| function validate_user() { $this->db->select('*'); $this->db->limit(1); $this->db->where('user_email',$user_login); $this->db->where('user_pass', md5($password)); $this->db->from('ci_users'); if($query->num_rows == 1) { $data = $query->row_array(); if($data['user_login'] == $user_login) return $data; else return false; } } |
上面的方法是簡單易懂。我已經查詢拆分,使其更清晰。如果行數是1,那麼我們驗證使用者,否則我們不知道。我們返回完整的使用者資訊的控制器,我們要建立的會話資訊。讓我們來看看:
| 代碼如下 |
複製代碼 |
if(is_array($user) && !empty($user)) { $user_data = array('is_logged_in' => 1,'user_email' => $user['user_email']); //set the session information $this->session->set_userdata($user_data); //write code here to show the success message redirect(site_url('dashboard')); exit(); }
|
我已經重新導向資料到儀表板,在這裡我們要告訴使用者相關資訊。只有合法的使用者被允許進入,其餘全部被重新導向到登入頁面。
建立一個登出過程
最後,我們需要一個使用者登出的方式。通過調用內建的會議庫sess_destroy()方法,我們可以摧毀當前會話。
結論
就是這樣。使用上面的方法,你可以設定一個登入和註冊系統使用CodeIgniter。以此作為基礎,根據需要,該系統擴充