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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
php用数组返回无限分类的列表数据的代码
Aug 08 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
两个php日期控制类实例
Dec 09 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
Laravel如何实现自动加载类
Oct 14 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 PHP
TP5多入口设置实例讲解
Dec 15 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笔记之常用文件操作
2010/10/12 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
javascript XML数据显示为HTML一例
2008/12/23 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
详解Python当中的字符串和编码
2015/04/25 Python
用matplotlib画等高线图详解
2017/12/14 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
python框架django项目部署相关知识详解
2019/11/04 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
python deque模块简单使用代码实例
2020/03/12 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
前台文员岗位职责及工作流程
2013/11/19 职场文书
单位提档介绍信
2014/01/17 职场文书
秘书英文求职信范文
2014/01/31 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
《秋姑娘的信》教学反思
2014/02/28 职场文书
银行求职自荐信
2014/06/30 职场文书
党员个人剖析材料
2014/09/30 职场文书