一.CI的HelloWorld!
注意: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——文本操作与调用视图操作
调用视图的基本格式:
$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 } 1112 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); 1819 $re = fopen(\'./num.txt\',\'w\'); 20 fwrite($re, $count); 2122 $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 } 1213 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 } 1819 public function delete(){ 20 $this->load->model(\'test_m\'); 21 $this->test_m->user_delete(22); 22 } 2324 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; 3031 } 32 } 3334 /* 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 database12 $this->load->database(); 13 //$this->load->insert($t_name,$data)14 } 1516 function user_insert($arr){ 17 $this->db->insert(\'user\',$arr); 18 } 1920 function user_update($id,$arr) 21 { 22 $this->db->where(\'usid\',$id); 23 $this->db->update(\'user\',$arr); 24 } 2526 function user_delete($id){ 27 $this->db->where(\'usid\',$id); 28 $this->db->delete(\'user\'); 29 } 3031 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\'); 1011 } 1213 //显示上传信息14 public function up(){ 1516 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; 2829 default: 30 $br = false; 31 break; 32 } 3334 if($br){ 35 $time = time(); 36 move_uploaded_file($file[\'tmp_name\'], "./upload/$time$br"); 3738 } 39 else{ 40 echo "type no"; 41 } 42 } 4344 } 45 } 4647 }
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="提交" />78 </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\'); 910 } 1112 //显示上传信息13 public function up(){ 1415 $config[\'upload_path\'] = \'./uploads/\'; 16 $config[\'allowed_types\'] = \'gif|jpg|png\'; 17 $config[\'max_size\'] = "2000"; 1819 $this->load->library(\'upload\',$config); 2021 //打印成功或错误的信息22 if($this->upload->do_upload(\'upfile\')) 23 { 24 $data = array("upload_data" => $this->upload->data()); 25 var_dump($data); 26 } 27 else28 { 29 $error = array("error" => $this->upload->display_errors()); 30 var_dump($error); 31 } 32 } 3334 }
五.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 } 1112 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 } 3233 public function checksession(){ 34 $this->load->library(\'session\'); 35 if($this->session->userdata(\'uid\')){ 36 echo \'已经登录。\'; 37 } 38 else{ 39 echo \'没有登录。\'; 40 } 41 } 4243 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\'); 910 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); 1415 } 16 } 1718 public function pagelist(){ 19 $this->load->model(\'test_m\'); 20 $user = $this->test_m->user_select_all(); 21 $allnum = count($user); 22 $pagenum = 20; 2324 $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; 2930 $this->load->library(\'pagination\'); 31 $this->pagination->initialize($config); 3233 var_dump($this->pagination->create_links()); 34 echo $this->pagination->create_links(); 3536 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 }