点击这里给我发消息 QQ登录
【原创】 各种demo——CI框架学习
栏目:CodeIgniter  作者:力涛  阅读:(646)

一.CI的HelloWorld!

注意:CI禁止直接通过文件目录来访问控制器。

 <?   ( ! ('BASEPATH')) ('No direct script access allowed'   Hello         sayhello(,          ,",Hello CI to ",  }

blob.png 

二.CI的文本计时器demo——文本操作与调用视图操作

调用视图的基本格式:

$this->load->view('XXX');

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.数据模型是一个数据库类

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)

http://www.cnblogs.com/sysu-blackbear/p/3528509.html



昵称
邮箱
域名
  记住 通知博主
验证码