寒假學習一下CI框架,請各位多多指教!php
一.CI的HelloWorld!html
注意:CI禁止直接經過文件目錄來訪問控制器。數據庫
./application/controllers/hello.php
1 <?php 2 //放止用戶直接經過路徑來訪問控制器,若是這樣的話會顯示找不到(封裝) 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 4 5 class Hello extends CI_Controller { 6 7 public function sayhello($name,$name2){ 8 echo $name,",Hello CI to ",$name2; 9 } 10 }
二.CI的文本計時器demo——文本操做與調用視圖操做數組
調用視圖的基本格式:session
$this->load->view('XXX');app
1 <?php 2 //./applications/controllers/hello.php 3 //放止用戶直接經過路徑來訪問控制器,若是這樣的話會顯示找不到(封裝) 4 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 5 6 class Hello extends CI_Controller { 7 8 public function sayhello($name,$name2){ 9 echo $name,",Hello CI to ",$name2; 10 } 11 12 public function show(){ 13 $name = "deng"; 14 @$count = file_get_contents('./num.txt'); //裝飾器 15 $count = $count ? $count:0; 16 $count++; 17 $data = array('key'=>$name,'value'=>$count); 18 19 $re = fopen('./num.txt','w'); 20 fwrite($re, $count); 21 22 $this->load->view("testview.php",$data); //裝載兩個視圖頁面 23 $this->load->view("testview2.php"); 24 } 25 }
三.CI的數據庫demo——對數據模型的增,刪,改,查框架
數據模型——函數
1.數據模型是一個數據庫類post
2.一個模型針對一張表學習
建立一個模型必須注意——
必須繼承數據核心類CI_Model,同時重載父類中的構造方法
class Model_name extends CI_Model { function __construct() { parent::__construct(); } }
對數據庫的操做——
1.鏈接數據庫($this->load->database());
2.插入數據($this->db->insert($t_name,$arr);)
$t_name——你要操做的表]
$arr——你要插入的數據("key"=>value)
3.更新數據
$this->db->where(字段名,字段值)
$this->db->update(表名,修改值的數組)
4.查詢數據
$this->db->where(字段名,字段值)
$this->db->select(字段)
$query = $this->db->get(表名)
return $query->result();
5.刪除數據
$this->db->where(字段名,字段值)
$this->db->delete(表名)
1 ./application/controllers/user.php 2 <?php 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 4 5 class User extends CI_Controller { 6 7 public function insert(){ 8 $this->load->model('test_m'); 9 $arr = array('usid'=>1,'uname'=>'deng1','upass'=>'1234'); 10 $this->test_m->user_insert($arr); 11 } 12 13 public function update(){ 14 $this->load->model('test_m'); 15 $arr = array('usid'=>22,'uname'=>'deng222','upass'=>'1233333'); 16 $this->test_m->user_update(2,$arr); 17 } 18 19 public function delete(){ 20 $this->load->model('test_m'); 21 $this->test_m->user_delete(22); 22 } 23 24 public function select() 25 { 26 $this->load->model('test_m'); 27 $arr = $this->test_m->user_select(1); 28 print_r($arr); 29 echo $arr[0]->usid; 30 31 } 32 } 33 34 /* End of file welcome.php */ 35 /* Location: ./application/controllers/welcome.php */
1 <?php 2 /** 3 * ./application/models/test_m.php 4 */ 5 class Test_m extends CI_Model 6 { 7 8 function __construct() 9 { 10 parent::__construct(); 11 //connect to the database 12 $this->load->database(); 13 //$this->load->insert($t_name,$data) 14 } 15 16 function user_insert($arr){ 17 $this->db->insert('user',$arr); 18 } 19 20 function user_update($id,$arr) 21 { 22 $this->db->where('usid',$id); 23 $this->db->update('user',$arr); 24 } 25 26 function user_delete($id){ 27 $this->db->where('usid',$id); 28 $this->db->delete('user'); 29 } 30 31 function user_select($id){ 32 $this->db->where('usid',$id); 33 $this->db->select('*'); 34 $query = $this->db->get('user'); 35 return $query->result(); 36 } 37 } 38 ?>
四.CI的文件上傳demo
1.面向過程的文件上傳方法
1 #/controllers/upload.php 2 <?php 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 4 5 class Upload extends CI_Controller { 6 7 //顯示帶表單的視圖 8 public function index(){ 9 $this->load->view('up'); 10 11 } 12 13 //顯示上傳信息 14 public function up(){ 15 16 if(!empty($_POST['sub'])){ 17 //打印變量的函數 18 //var_dump($_FILES['upfile']); 19 $file = $_FILES['upfile']; 20 if($file['size'] >= 20000000){ 21 echo "size no!"; 22 } 23 else{ 24 switch ($file['type']) { 25 case 'image/jpeg': 26 $br = '.jpg'; 27 break; 28 29 default: 30 $br = false; 31 break; 32 } 33 34 if($br){ 35 $time = time(); 36 move_uploaded_file($file['tmp_name'], "./upload/$time$br"); 37 38 } 39 else{ 40 echo "type no"; 41 } 42 } 43 44 } 45 } 46 47 }
1 #/views/up.php 2 <html> 3 <!--注意相對路徑的創建--> 4 <form action="/CI/index.php/upload/up" method="post" enctype="multipart/form-data"> 5 <input type="file" name="upfile" /> 6 <input type="submit" name="sub" value="提交" /> 7 8 </form> 9 </html>
2.面向對象的CI框架文件上傳方法
a.定義一個數組,設置一些與上傳相關的參數
//設置上傳目錄,這裏寫./,目錄要建在網站根目錄,就是和application同級 //若是你要放在application目錄下,能夠用系統定義的路徑常量APPPATH //例如:APPPATH.'uploads/' $config['upload_path'] = './uploads/'; //設置容許上傳的類型 $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; //若是是圖片還能夠設置最大高度和寬度 $config['max_height'] = 768; $config['max_width'] = 1024;
b.還能夠設置其餘的一些額外參數,詳細看用戶手冊
c.調用CI的上傳通用類,並執行上傳
//upload爲調用的類名,全小寫
$this->load->library('upload',$config);
//若是上傳框的name寫的是userfile,那就不用傳參數了,若是不是,把name的值傳進去
$this->upload->do_upload('上傳框的name');
d.接收出錯信息或成功信息
//出錯信息
$error = array('error' => $this->upload->display_error());
//成功信息
$data = array('upload_data' => $this->upload->data());
1 <?php 2 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 3 4 class Upload extends CI_Controller { 5 6 //顯示帶表單的視圖 7 public function index(){ 8 $this->load->view('up'); 9 10 } 11 12 //顯示上傳信息 13 public function up(){ 14 15 $config['upload_path'] = './uploads/'; 16 $config['allowed_types'] = 'gif|jpg|png'; 17 $config['max_size'] = "2000"; 18 19 $this->load->library('upload',$config); 20 21 //打印成功或錯誤的信息 22 if($this->upload->do_upload('upfile')) 23 { 24 $data = array("upload_data" => $this->upload->data()); 25 var_dump($data); 26 } 27 else 28 { 29 $error = array("error" => $this->upload->display_errors()); 30 var_dump($error); 31 } 32 } 33 34 }
五.CI的登陸驗證demo
1.利用CI類實現session登陸
a.修改配置文件(config.php)
$config['encryption_key']
b.加載SESSION類
$this->load->library('session');
c.建立SESSION
$this->session->set_userdata($array);
d.查看SESSION
$this->session->userdata(session名);
e.刪除SESSION
$this->session->unset_userdata('SESSION名');
1 ./application/controllers/login.php 2 <?php 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 4 5 class Login extends CI_Controller { 6 7 public function index() 8 { 9 $this->load->view('login.html'); 10 } 11 12 public function checklogin(){ 13 $this->load->model("test_m"); 14 $user = $this->test_m->user_select($_POST['uname']); 15 if($user){ 16 if($user[0]->upass == $_POST['upass']){ 17 echo '密碼正確!'; 18 $this->load->library('session'); 19 $arr = array("uid" => $user[0]->usid); 20 $this->session->set_userdata($arr); 21 echo "<br />"; 22 echo $this->session->userdata('uid'); 23 } 24 else{ 25 echo '密碼不正確!'; 26 } 27 } 28 else{ 29 echo '用戶名不存在'; 30 } 31 } 32 33 public function checksession(){ 34 $this->load->library('session'); 35 if($this->session->userdata('uid')){ 36 echo '已經登陸。'; 37 } 38 else{ 39 echo '沒有登陸。'; 40 } 41 } 42 43 public function loginout(){ 44 $this->load->library('session'); 45 $this->session->unset_userdata('uid'); 46 } 47 }
六.CI的分頁功能demo
1.必須知道的一些參數
a.總共有多少條記錄
b.一頁要有多少條記錄
c.總共多少頁
d.當前頁先後要顯示多少個分頁連接
2.設置一些CI分頁類基本參數
//總條數
$config['total_rows']
//一頁顯示幾條
$config['per_page']
//定義當前頁的先後各有幾個數字連接
$config['num_links']
//定義沒有分頁參數,主URL
$config['base_url']
3.調用CI的分頁類
$this->load->library('pagination');
4.執行分頁方法
$this->pagination->initialize($config);
5.輸出分頁連接
echo $this->pagination->create_links();
6.查詢部分數據(limit)
echo $this->db->limit($num,$start); //從$start查$num條
1 ./applications/controllers/page.php 2 <?php 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 4 5 class Page extends CI_Controller { 6 7 public function user_add(){ 8 $this->load->model('test_m'); 9 10 for ($i = 1;$i <= 100;$i++){ 11 $name = 'u'.$i; 12 $arr = array("usid"=>$i,"uname"=>$name,"upass"=>123456); 13 $this->test_m->user_insert($arr); 14 15 } 16 } 17 18 public function pagelist(){ 19 $this->load->model('test_m'); 20 $user = $this->test_m->user_select_all(); 21 $allnum = count($user); 22 $pagenum = 20; 23 24 $config['total_rows'] = $allnum; 25 $config['per_page'] = $pagenum; 26 $config['num_links'] = 3; 27 $config['base_url'] = "/CI/index.php/page/pagelist"; 28 $config['use_page_numbers'] = true; 29 30 $this->load->library('pagination'); 31 $this->pagination->initialize($config); 32 33 var_dump($this->pagination->create_links()); 34 echo $this->pagination->create_links(); 35 36 echo "<br />"; 37 $id = $this->uri->segment(3); //得到url第三段字符 38 $id =$id ? $id:1; 39 $start = ($id - 1) * $pagenum; 40 $list = $this->test_m->user_select_limit($start,$pagenum); 41 var_dump($list); 42 } 43 }