PHP CI 例子——從簡單到復(fù)雜的web開發(fā)
PHP是目前主流的web開發(fā)語言之一,您可以使用各種框架來幫助您快速的開發(fā)成型的網(wǎng)站應(yīng)用程序。 CodeIgniter(CI)是其中一項(xiàng)流行的PHP框架之一。它主要用于快速開發(fā)PHP應(yīng)用程序。在這份文章中,我們將看到一些從簡單到復(fù)雜的PHP CI例子,來說明這個(gè)框架的優(yōu)勢。
第一個(gè)案例:Hello World
在學(xué)習(xí)任何編程語言時(shí),你都會接觸到一個(gè)Hello World的例子。同樣,我們在學(xué)習(xí)CI框架時(shí),我們同樣開始于這個(gè)例子。在這個(gè)例子中,我們使用CI框架創(chuàng)建一個(gè)簡單的Hello World 程序。
首先,您需要安裝CI框架。 安裝完成后,請打開CodeIgniter.php文件并添加以下內(nèi)容:
class Welcome extends CI_Controller {
function index()
{
echo "Hello World!";
}
}
打開瀏覽器并輸入http://[yourdomain.com]/index.php/welcome。 現(xiàn)在,您會看到輸出“Hello World!” 的頁面。
第二個(gè)案例:表單驗(yàn)證
在此示例中,我們將實(shí)現(xiàn)客戶端端和服務(wù)端 的表單驗(yàn)證。開發(fā)人員應(yīng)該始終驗(yàn)證表單數(shù)據(jù),以確保輸入數(shù)據(jù)的有效性和狀態(tài)。 它可以防止不必要的SQL注入攻擊。
這種驗(yàn)證通常分為兩個(gè)部分:
1.客戶端驗(yàn)證
2. 服務(wù)器端驗(yàn)證
這是一個(gè)簡單的表單。<form action="/form/submit" method="post">
<input type="text" name="username" id="username" /><br />
<input type="text" name="password" id="password" /><br />
<input type="submit" name="submit" value="submit" />
</form>
客戶端驗(yàn)證:$(function(){
$('form').submit(function(){
var uname = $('#username').val();
var pwd = $('#password').val();
if(uname.length <5){
alert('username is too short');
return false;
}
if(pwd.length <8){
alert('password is too short');
return false;
}
}
});
服務(wù)器端驗(yàn)證:class form extends CI_Controller {
function index{
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('form_view');
}
else
{
$this->load->view('success');
}
}
}
這里我們使用CI框架的表單驗(yàn)證類。 它將所有輸入數(shù)據(jù)的字段名稱,規(guī)則以及帶消息的驗(yàn)證異常對象傳遞給設(shè)置規(guī)則的方法。
第三個(gè)案例:用戶認(rèn)證
在一個(gè)web應(yīng)用程序中,用戶認(rèn)證是很重要的一部分。在此示例中,我們將實(shí)現(xiàn)基本的用戶認(rèn)證功能。在這里,我們將利用CI框架的Session庫來實(shí)現(xiàn)認(rèn)證。
首先,我們需要數(shù)據(jù)庫來存儲用戶信息。對于這個(gè)例子,我們使用了MySQL數(shù)據(jù)庫。以下是一個(gè)簡單的用戶表。CREATE TABLE users (
id int(11) NOT NULL auto_increment,
username varchar(50) NOT NULL,
password varchar(50) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
之后,我們根據(jù)以上的表,為用戶登錄生成一個(gè)表單。<form action="" method="post">
<label>Username:</label> <input type="text" name="username" value="" /><br />
<label>Password:</label> <input type="password" name="password" value="" /><br />
<input type="submit" name="login" value="login" />
</form>
在表單提交后,我們需要對發(fā)送過來的數(shù)據(jù)進(jìn)行驗(yàn)證。class Auth extends CI_Controller {
function index() {
if(isset($_POST['login'])) {
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE) {
$this->load->view('login_view');
} else {
redirect('home', 'refresh');
}
}
}
function check_database($password) {
$username = $this->input->post('username');
$result = $this->auth_model->login($username, $password);
if($result) {
$sess_array = array();
foreach($result as $row) {
$sess_array = array(
'id' => $row->id,
'username' => $row->username
);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
} else {
$this->form_validation->set_message('check_database', 'Invalid username or password');
return FALSE;
}
}
}
在代碼中,我們使用了CI框架的Form Validation類來驗(yàn)證表單數(shù)據(jù),并將登錄驗(yàn)證的邏輯封裝在auth_model中。如果用戶登錄信息驗(yàn)證成功,則將用戶信息存儲在CI框架的session中。
綜上所述,我們在本文中學(xué)習(xí)了一系列從簡單到復(fù)雜的 PHP CI例子,包括Hello World示例,表單驗(yàn)證和用戶認(rèn)證。在這些常見示例中,CI框架展示了其簡單易用,性能優(yōu)越等優(yōu)點(diǎn),可以幫助我們快速開發(fā)現(xiàn)代web應(yīng)用程序。 無論是新手還是有經(jīng)驗(yàn)的開發(fā)人員都可以通過使用這個(gè)強(qiáng)大的框架實(shí)現(xiàn)更簡潔和高效的web應(yīng)用程序。