本文实例总结了CI框架常用经典操作类。分享给大家供大家参考,具体如下:
1. 超级对象中的URI
CI_URI类的解析url的相关信息
直接使用$this->uri可以使用它的相关属性
system/core/URI.php文件中
部分常用属性:
(1) 分段获取url相关信息
1
2
3
|
$this ->uri->segment(4);
//获取url中pathinfo
//的第四段的值
|
入口文件.php/控制器/动作/参数1/参数2/...
(2) 通过方法中的形参传参
需要设默认值和顺序要注意
index.php/user/index/3/zhangsan
1
2
3
|
public function index( $id =0, $name = '' ){
echo $id , $name ;
}
|
2.CI控制器的扩展
在application/core/文件夹下面
添加自己的扩展控制器
1
2
3
4
5
|
class MY_Controller extends CI_Controller{
public function __construct(){
parent::__construct
}
}
|
配置模型前缀
1
|
$config [ 'subclass_prefix' ]= 'MY_' ; //默认值
|
3.模型的相关操作
文件名全小写,类名首字母大写
建议类名加上 _model后缀
在控制器中加载模型:
在construct中加入:
1
2
|
$this ->load->model( 'User_model' );
$this ->User_model->get();
|
为模型起别名
1
2
|
$this ->load->model( 'User_model' , 'user' );
$this ->user->get();
|
4.url中的常用函数
(1)帮助我们生成控制器
1
2
|
$this ->load->helper( 'url' );
site_url( '控制器/方法' );
|
(2)图片路径的使用
1
|
$this ->load->helper( 'url' );
|
1
|
< img src="<?php echo base_url();?>upload/a.jpg" />
|
可以在autoload.php中配置自动加载
$autoload['helper']加入url
5. CI中的路由与伪静态
(1) 路由伪静态
1
2
|
$router [ 'show/([\d]+)\.html' ]= 'article/show/$1' ;
article/show/5.html => article/show/5;
|
(2) 隐藏入口文件
1
2
3
4
5
6
|
#开启apache的rewrite模块
#在根目录中放入.htaccess文件进行重写
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
|
6. CI中的分页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//模型中操作
//装载分页类文件
$this ->load->library( 'pagination' );
$this ->load->helper(url);
//分页链接
$config [ 'base_url' ] = site_url( 'user/test' );
//总记录条数
$config [ 'total_rows' ] = 100;
//每页显示10条数据
$config [ 'per_page' ] = 10;
//偏移量
$offset_limit = intval ( $this ->uri->segment(3));
$this ->pagination->initialize( $config );
echo $this ->pagination->create_links();
|
分页中按钮的定制(注意在初始化之前配置好)
1
2
3
|
$config [ 'first_link' ] = '首页' ;
...
$config [ 'uri_segment' ] =3; //分页数据查询偏移量
|
在url的哪一段上,对应上面的$offset
默认是3,否则需要修改对应值
7. CI 中session的使用
1
2
|
//加载session库
$this ->load->library( 'session' );
|
(1)获取系统session
1
2
|
//比如获取客户端的ip地址
$this ->session->userdata( 'ip_address' );
|
(2) 添加自定义session
1
2
3
4
5
6
|
//添加
$this ->session->set_userdata( 'some_name' , 'some_value' );
//获取
$this ->session->userdata( 'some_name' );
//删除
$this ->session->unset_userdata( 'some_name' );
|
(3)闪出数据 (取出一次后失效)
1
2
3
4
|
//添加
$this ->session->set_flashdata( 'item' , 'value' );
//获取
$this ->session->flashdata( 'item' );
|
登录数据中 返回登录前的那一个页面的url可以记录下来,
注意:一次性的数据,读取一次后会自动销毁。
为了确保安全,在config.php生成随机加密的字符串中加入
1
|
$config [ 'encryption_key' ]= "fjkdsffjkhjd#kjh" ;
|
是否要将cookie加密
1
|
$config [ 'sess_encrypt_cookie' ] =TRUE;
|
8. CI中的文件上传
1
2
3
4
|
< form action="<?php echo site_url('user/upload');?>" enctype="multipart/form-data">
< input type = "file" name = "pic" />
< input type = "submit" value = "submit" >
</ form >
|
上传处理:
1
2
3
4
|
$config [ 'upload_path' ]= "./upload" ;
$config [ 'allowed_types' ]= 'gif|jpeg|jpg' ;
$this ->load->library( 'upload' , $config );
$this ->upload->do_upload( 'pic' );
|
文件上传的数据
1
|
$filedata = $this ->upload->data();
|
9. CI中的验证码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//生成验证码
$this ->load->helper( 'captcha' );
$this ->load->helper( 'url' );
$vals = array (
'word' =>rand(1000,9999),
'img_path' => './captcha/' ,
'img_url' =>base_url(). '/captcha/'
'img_width' => '150' ,
'img_height' => '100' ,
'expiration' =>7200
);
$cap = create_captcha( $vals );
echo $cap [ 'image' ];
//将验证码获取的数字放在session中
session_start();
$_SESSION [ 'cap' ] = $cap [ 'word' ];
|
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。