CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)


Posted in PHP onNovember 21, 2016

本文实例总结了CI框架常用经典操作类。分享给大家供大家参考,具体如下:

1. 超级对象中的URI

CI_URI类的解析url的相关信息

直接使用$this->uri可以使用它的相关属性

system/core/URI.php文件中

部分常用属性:

(1) 分段获取url相关信息

$this->uri->segment(4);
//获取url中pathinfo
//的第四段的值

入口文件.php/控制器/动作/参数1/参数2/...

(2) 通过方法中的形参传参

需要设默认值和顺序要注意

index.php/user/index/3/zhangsan

public function index($id=0,$name=''){
  echo $id,$name;
}

2.CI控制器的扩展

在application/core/文件夹下面

添加自己的扩展控制器

class MY_Controller extends CI_Controller{
  public function __construct(){
   parent::__construct
  }
}

配置模型前缀

$config['subclass_prefix']='MY_';//默认值

3.模型的相关操作

文件名全小写,类名首字母大写

建议类名加上 _model后缀

在控制器中加载模型:

在construct中加入:

$this->load->model('User_model');
$this->User_model->get();

为模型起别名

$this->load->model('User_model','user');
$this->user->get();

4.url中的常用函数

(1)帮助我们生成控制器

$this->load->helper('url');
site_url('控制器/方法');

(2)图片路径的使用

$this->load->helper('url');
<img src="<?php echo base_url();?>upload/a.jpg" />

可以在autoload.php中配置自动加载

$autoload['helper']加入url

5. CI中的路由与伪静态

(1) 路由伪静态

$router['show/([\d]+)\.html']='article/show/$1';
article/show/5.html => article/show/5;

(2) 隐藏入口文件

#开启apache的rewrite模块
#在根目录中放入.htaccess文件进行重写
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

6. CI中的分页

//模型中操作
//装载分页类文件
$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();

分页中按钮的定制(注意在初始化之前配置好)

$config['first_link'] = '首页';
...
$config['uri_segment'] =3;//分页数据查询偏移量

在url的哪一段上,对应上面的$offset

默认是3,否则需要修改对应值

7. CI 中session的使用

//加载session库
$this->load->library('session');

(1)获取系统session

//比如获取客户端的ip地址
$this->session->userdata('ip_address');

(2) 添加自定义session

//添加
$this->session->set_userdata('some_name', 'some_value');
//获取
$this->session->userdata('some_name');
//删除
$this->session->unset_userdata('some_name');

(3)闪出数据 (取出一次后失效)

//添加
$this->session->set_flashdata('item', 'value');
//获取
$this->session->flashdata('item');

登录数据中 返回登录前的那一个页面的url可以记录下来,

注意:一次性的数据,读取一次后会自动销毁。

为了确保安全,在config.php生成随机加密的字符串中加入

$config['encryption_key']="fjkdsffjkhjd#kjh";

是否要将cookie加密

$config['sess_encrypt_cookie'] =TRUE;

8. CI中的文件上传

<form action="<?php echo site_url('user/upload');?>" enctype="multipart/form-data">
 <input type="file" name="pic"/>
 <input type="submit" value="submit">
</form>

上传处理:

$config['upload_path']="./upload";
$config['allowed_types']='gif|jpeg|jpg';
$this->load->library('upload',$config);
$this->upload->do_upload('pic');

文件上传的数据

$filedata = $this->upload->data();

9. CI中的验证码

//生成验证码
$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程序设计有所帮助。

PHP 相关文章推荐
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
php批量修改表结构实例
May 24 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
CI框架入门之MVC简单示例
Nov 21 #PHP
php_pdo 预处理语句详解
Nov 21 #PHP
CI框架表单验证实例详解
Nov 21 #PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 #PHP
静态html文件执行php语句的方法(推荐)
Nov 21 #PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 #PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 #PHP
You might like
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
Python PIL图片添加字体的例子
2019/08/22 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
检讨书范文2000字
2015/01/28 职场文书
自我工作评价范文
2015/03/06 职场文书
应聘教师自荐信
2015/03/26 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书