PHP CI 例子——從簡單到復(fù)雜的web開發(fā)
PHP是目前主流的web開發(fā)語言之一,您可以使用各種框架來幫助您快速的開發(fā)成型的網(wǎng)站應(yīng)用程序。 CodeIgniter(CI)是其中一項流行的PHP框架之一。它主要用于快速開發(fā)PHP應(yīng)用程序。在這份文章中,我們將看到一些從簡單到復(fù)雜的PHP CI例子,來說明這個框架的優(yōu)勢。
第一個案例:Hello World
在學(xué)習(xí)任何編程語言時,你都會接觸到一個Hello World的例子。同樣,我們在學(xué)習(xí)CI框架時,我們同樣開始于這個例子。在這個例子中,我們使用CI框架創(chuàng)建一個簡單的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!” 的頁面。
第二個案例:表單驗證
在此示例中,我們將實現(xiàn)客戶端端和服務(wù)端 的表單驗證。開發(fā)人員應(yīng)該始終驗證表單數(shù)據(jù),以確保輸入數(shù)據(jù)的有效性和狀態(tài)。 它可以防止不必要的SQL注入攻擊。
這種驗證通常分為兩個部分:
1.客戶端驗證
2. 服務(wù)器端驗證
這是一個簡單的表單。<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>
客戶端驗證:$(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ù)器端驗證: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框架的表單驗證類。 它將所有輸入數(shù)據(jù)的字段名稱,規(guī)則以及帶消息的驗證異常對象傳遞給設(shè)置規(guī)則的方法。
第三個案例:用戶認(rèn)證
在一個web應(yīng)用程序中,用戶認(rèn)證是很重要的一部分。在此示例中,我們將實現(xiàn)基本的用戶認(rèn)證功能。在這里,我們將利用CI框架的Session庫來實現(xiàn)認(rèn)證。
首先,我們需要數(shù)據(jù)庫來存儲用戶信息。對于這個例子,我們使用了MySQL數(shù)據(jù)庫。以下是一個簡單的用戶表。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ù)以上的表,為用戶登錄生成一個表單。<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)行驗證。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類來驗證表單數(shù)據(jù),并將登錄驗證的邏輯封裝在auth_model中。如果用戶登錄信息驗證成功,則將用戶信息存儲在CI框架的session中。
綜上所述,我們在本文中學(xué)習(xí)了一系列從簡單到復(fù)雜的 PHP CI例子,包括Hello World示例,表單驗證和用戶認(rèn)證。在這些常見示例中,CI框架展示了其簡單易用,性能優(yōu)越等優(yōu)點,可以幫助我們快速開發(fā)現(xiàn)代web應(yīng)用程序。 無論是新手還是有經(jīng)驗的開發(fā)人員都可以通過使用這個強大的框架實現(xiàn)更簡潔和高效的web應(yīng)用程序。