本文章來(lái)給大家介紹CodeIgniter創(chuàng)建一個(gè)簡(jiǎn)單的注冊(cè)系統(tǒng),CodeIgniter 是一個(gè)簡(jiǎn)單快速的PHP MVC 框架,CodeIgniter 不需要大量代碼,也不會(huì)要求您插入類似于 PEAR 的龐大的庫(kù),它在 PHP 4 和 PHP 5 中表現(xiàn)同樣良好,允許您創(chuàng)建可移植的應(yīng)用程序,最后,您不必使用模板引擎來(lái)創(chuàng)建視圖 — 只需沿用舊式的 HTML 和 PHP 即可.
CodeIgniter 是一套給 PHP 網(wǎng)站開發(fā)者使用的應(yīng)用程序開發(fā)框架和工具包,它提供一套豐富的標(biāo)準(zhǔn)庫(kù)以及簡(jiǎn)單的接口和邏輯結(jié)構(gòu),其目的是使開發(fā)人員更快速地進(jìn)行項(xiàng)目開發(fā),使用 CodeIgniter 可以減少代碼的編寫量,并將你的精力投入到項(xiàng)目的創(chuàng)造性開發(fā)上.
CodeIgniter是由Ellislab公司的CEO RickEllis開發(fā)的,其核心框架是為這個(gè)程序特別編寫的,而其他很多類庫(kù)、輔助函數(shù)和子系統(tǒng)則來(lái)自于RickEllis和PaulBurdick編寫的內(nèi)容管理系統(tǒng)ExpressionEngine,來(lái)自RubyonRails的靈感啟發(fā)我們創(chuàng)造了一個(gè)PHP框架,并且將框架的概念引入到網(wǎng)絡(luò)社區(qū)的一般意識(shí)中.
在這篇文章中,我將介紹如何使用CodeIgniter框架、開發(fā)一個(gè)登錄認(rèn)證和注冊(cè)系統(tǒng),創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)用戶信息,下表將存儲(chǔ)在MySQL用戶相關(guān)的所有信息,它僅獲得一些基本的信息,你可以隨意延長(zhǎng),代碼如下:
- 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 ;
創(chuàng)建用戶登錄表格
由于這將是簡(jiǎn)單的HTML,我不會(huì)在這里寫的代碼,確保,表單動(dòng)作應(yīng)指向用戶/注冊(cè)路線,這樣的請(qǐng)求到達(dá)用戶的控制器,然后執(zhí)行功能“注冊(cè)”.
創(chuàng)建表格后,我們需要寫“模型”邏輯,這樣我們就可以存儲(chǔ)到數(shù)據(jù)庫(kù)中的用戶注冊(cè)信息,我要去到創(chuàng)建方法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; }
現(xiàn)在我們有了模型和視圖準(zhǔn)備,我們需要寫這兩個(gè)控制器邏輯連接,使我們能夠成功地渲染登記表和存儲(chǔ)數(shù)據(jù),我們也打算把驗(yàn)證邏輯,使用CodeIgniter的內(nèi)置的驗(yàn)證庫(kù),里面的控制器本身.
我假設(shè)您知道如何創(chuàng)建在CI的控制器,所以我將討論控制方法,其中最重要的部分.
首先,討論,讓我們使用下面這行代碼加載表單驗(yàn)證庫(kù),位于里面的application / config / autoload.php autoload.php通過(guò)指定其名稱,可以自動(dòng)加載這個(gè)庫(kù),代碼如下 :
$this->load->library('form_validation');
現(xiàn)在來(lái)驗(yàn)證,可以使用下面這行代碼:
$this->form_validation->set_rules('first_name', 'Name', 'trim|required');
哪里的FIRST_NAME是HTML元素的名稱,名稱是人類可讀元素名稱,修剪|所需元素的驗(yàn)證規(guī)則.
您可以指定其他各種規(guī)則,你可以使用回調(diào)方法定義自定義驗(yàn)證規(guī)則,如需更多信息,驗(yàn)證,檢查文檔,要檢查如果驗(yàn)證成功,我們使用下面的代碼塊:
- 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(); }
讓我們回顧一下上面的代碼片斷,我們首先驗(yàn)證表單驗(yàn)證,使用方法$this->form_validation->run(),如果返回true,那么我們是很好的,否則,我們?cè)谝晥D中顯示錯(cuò)誤,如果一切都正確輸入,我們應(yīng)該創(chuàng)建新的用戶,請(qǐng)注意,我手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)連接.
如果您的應(yīng)用程序會(huì)更經(jīng)常地使用數(shù)據(jù)庫(kù),那么你就可以加載庫(kù)通過(guò)指定到autoload.php文件,最后,我們的模型加載并調(diào)用我們上面所討論的create_user.
這應(yīng)該是你需要做的所有注冊(cè)一個(gè)新用戶在您的Web應(yīng)用程序.
創(chuàng)建一個(gè)登錄過(guò)程
下一步,我們應(yīng)該提供一種方法,在這些注冊(cè)用戶登錄的過(guò)程是相同的,我們創(chuàng)建視圖,然后模型和控制器內(nèi)部終于做加工.
消毒后的用戶輸入(如上述),在模型中,我們可以查詢數(shù)據(jù)庫(kù),用下面的方法:
- 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; } }
上面的方法是簡(jiǎn)單易懂,我已經(jīng)查詢拆分,使其更清晰,如果行數(shù)是1,那么我們驗(yàn)證用戶,否則我們不知道,我們返回完整的用戶信息的控制器,我們要建立的會(huì)話信息,讓我們來(lái)看看:
- if(is_array($user) && !emptyempty($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(); }
我已經(jīng)重定向數(shù)據(jù)到儀表板,在這里我們要告訴用戶相關(guān)信息,只有合法的用戶被允許進(jìn)入,其余全部被重定向到登錄頁(yè)面.
創(chuàng)建一個(gè)注銷過(guò)程
最后,我們需要一個(gè)用戶注銷的方式,通過(guò)調(diào)用內(nèi)置的會(huì)議庫(kù)sess_destroy()方法,我們可以摧毀當(dāng)前會(huì)話.
結(jié)論:就是這樣,使用上面的方法,你可以設(shè)置一個(gè)登錄和注冊(cè)系統(tǒng)使用CodeIgniter,以此作為基礎(chǔ),根據(jù)需要進(jìn)行系統(tǒng)擴(kuò)展.
新聞熱點(diǎn)
疑難解答