- 浏览: 7935713 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
扩展helper,在要扩展的helper前加上MY_,比如要扩展form helper,则命名为
MY_form_helper.php,放在system/application/helpers/目录下即可
2扩展CI的库的话,依然是加MY_前缀的规则,比如
<?php
class MY_Session extends CI_Session
{
function MY_Session()
{
parent::CI_Session();
}
}
?>
3 如果要改CI的core libraries的话,可以这样
<?php
class CI_Session
{
}
?>
使用的时候,跟之前一样的
$this->load->library('session');
4 benchmark的libraies的
benchmark这个是很好用的,可以计算两个方法执行的时间,使用方法为:
$this->benchmark->mark('start');
// something happens here
$this->benchmark->mark('end');
echo $this->benchmark->elapsed_time('start', 'end');
当然也可以任意组合,比如三个的情况:
$this->benchmark->mark('tea');
// something happens here
$this->benchmark->mark('coffee');
// something else happens here
$this->benchmark->mark('biscuits');
echo $this->benchmark->elapsed_time('tea', 'coffee');
echo $this->benchmark->elapsed_time('coffee', 'biscuits');
echo $this->benchmark->elapsed_time('tea', 'biscuits');
5 使用profile class
profile是会输出benchmark的结果的
$this->output->enable_profiler(TRUE)
禁止:
$this->output->enable_profiler(FALSE);
<?php echo $this->benchmark->elapsed_time(); ?>
上面当elapsed_time不带参数时,表示显示所有的总时间
6 上传文件
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
File:<br />
<input name="file" type="file" /><br />
<input type="submit" name="submit" value="Upload" />
<?php echo form_close(); ?>
处理器接收文件部分:
class Upload extends Controller
{
function Upload()
{
parent::Controller();
$this->load->helper(array('form', 'url', 'file'));
}
function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload()
{
$config['upload_path'] = APPPATH . 'uploads/';
$config['allowed_types'] = 'jpeg|jpg|gif|png';
$config['max_size'] = '10240000';
$this->load->library('upload', $config);
$field_name = "file";
if ( ! $this->upload->do_upload($field_name))
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
我们最后用一个upload_success去输出上传的信息:
<?php foreach($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
7 常见的表单验证步骤,注意要用到form_validation了,
function index()
{
$this->load->library(array('email', 'form_validation'));
$this->load->helper(array('email', 'form'));
$this->form_validation->
set_rules('name', 'Name', 'required|xss_clean');
...................
if($this->form_validation->run() == FALSE)
{
$this->load->view('email'); // load the contact form
}
else
{
$name = $this->input->post('name');
......
}
8 在校验表单时,可以使用callback的验证,比如在校验时,使用自定义的函数,如
$this->form_validation->
set_rules('email', 'Email Address',
'required|valid_email|callback_add_user|xss_clean');
这里用callback_XXXX来定义自己要校验的函数,这里是add_user,即可编写:
function add_user($email) { }
9 Database中的方法链
PHP5中,可以这样了:
$this->db->select('name, email')->from('users')->
where('id', 5)->limit(10, 20);
$query = $this->db->get();
这实际上效果是:
SELECT name, email FROM `users` WHERE `id` = 5 LIMIT 10, 20
10 使用database forge类进行操作数据库类
$this->load->dbforge();
创建数据库
if ($this->dbforge->create_database('my_db'))
{
echo 'Database created!';
}
删除数据库
if ($this->dbforge->drop_database('my_db'))
{
echo 'Database deleted!';
}
11 扩展CI
CI提供了不少扩展点:
pre_system:
当系统执行前,会执行这个扩展点;
pre_controller:
在controller执行前,会执行这个扩展点;
post_controller_constructor:
当controller已经被实例化后执行,但在所有方法执行前执行;
post_controller:
当controller执行后执行;
post_system:
当所有页面发送到浏览器后,执行;
设置hooks:
设置为:$config['enable_hooks'] = TRUE;
比如要设置一个网站维护时用的特别扩展点,可以先在config/hooks.php 中如下设置:
$hook['pre_controller'] = array(
'class' => 'Maintenance',
'function' => 'decide',
'filename' => 'maintenance.php',
'filepath' => 'hooks',
'params' => 'FALSE'
);
然后在application/hooks文件夹下建立如下文件:
<?php
class Maintenance
{
function decide($maintenance)
{
if($maintenance == TRUE)
{
show_error('The system is offline for maintenance.');
}
}
}
?>
12 数组helper
$this->load->helper('array');
$items = array(
'England' => 'London',
'Wales' => 'Cardiff',
'Scotland' => 'Edinburgh',
'Northen Ireland' => 'Belfast');
// returns 'Edinburgh'
echo element('scotland', $items);
element方法是在数组中根据KEY去找value,如果找不到则返回false;
MY_form_helper.php,放在system/application/helpers/目录下即可
2扩展CI的库的话,依然是加MY_前缀的规则,比如
<?php
class MY_Session extends CI_Session
{
function MY_Session()
{
parent::CI_Session();
}
}
?>
3 如果要改CI的core libraries的话,可以这样
<?php
class CI_Session
{
}
?>
使用的时候,跟之前一样的
$this->load->library('session');
4 benchmark的libraies的
benchmark这个是很好用的,可以计算两个方法执行的时间,使用方法为:
$this->benchmark->mark('start');
// something happens here
$this->benchmark->mark('end');
echo $this->benchmark->elapsed_time('start', 'end');
当然也可以任意组合,比如三个的情况:
$this->benchmark->mark('tea');
// something happens here
$this->benchmark->mark('coffee');
// something else happens here
$this->benchmark->mark('biscuits');
echo $this->benchmark->elapsed_time('tea', 'coffee');
echo $this->benchmark->elapsed_time('coffee', 'biscuits');
echo $this->benchmark->elapsed_time('tea', 'biscuits');
5 使用profile class
profile是会输出benchmark的结果的
$this->output->enable_profiler(TRUE)
禁止:
$this->output->enable_profiler(FALSE);
<?php echo $this->benchmark->elapsed_time(); ?>
上面当elapsed_time不带参数时,表示显示所有的总时间
6 上传文件
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
File:<br />
<input name="file" type="file" /><br />
<input type="submit" name="submit" value="Upload" />
<?php echo form_close(); ?>
处理器接收文件部分:
class Upload extends Controller
{
function Upload()
{
parent::Controller();
$this->load->helper(array('form', 'url', 'file'));
}
function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload()
{
$config['upload_path'] = APPPATH . 'uploads/';
$config['allowed_types'] = 'jpeg|jpg|gif|png';
$config['max_size'] = '10240000';
$this->load->library('upload', $config);
$field_name = "file";
if ( ! $this->upload->do_upload($field_name))
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
我们最后用一个upload_success去输出上传的信息:
<?php foreach($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
7 常见的表单验证步骤,注意要用到form_validation了,
function index()
{
$this->load->library(array('email', 'form_validation'));
$this->load->helper(array('email', 'form'));
$this->form_validation->
set_rules('name', 'Name', 'required|xss_clean');
...................
if($this->form_validation->run() == FALSE)
{
$this->load->view('email'); // load the contact form
}
else
{
$name = $this->input->post('name');
......
}
8 在校验表单时,可以使用callback的验证,比如在校验时,使用自定义的函数,如
$this->form_validation->
set_rules('email', 'Email Address',
'required|valid_email|callback_add_user|xss_clean');
这里用callback_XXXX来定义自己要校验的函数,这里是add_user,即可编写:
function add_user($email) { }
9 Database中的方法链
PHP5中,可以这样了:
$this->db->select('name, email')->from('users')->
where('id', 5)->limit(10, 20);
$query = $this->db->get();
这实际上效果是:
SELECT name, email FROM `users` WHERE `id` = 5 LIMIT 10, 20
10 使用database forge类进行操作数据库类
$this->load->dbforge();
创建数据库
if ($this->dbforge->create_database('my_db'))
{
echo 'Database created!';
}
删除数据库
if ($this->dbforge->drop_database('my_db'))
{
echo 'Database deleted!';
}
11 扩展CI
CI提供了不少扩展点:
pre_system:
当系统执行前,会执行这个扩展点;
pre_controller:
在controller执行前,会执行这个扩展点;
post_controller_constructor:
当controller已经被实例化后执行,但在所有方法执行前执行;
post_controller:
当controller执行后执行;
post_system:
当所有页面发送到浏览器后,执行;
设置hooks:
设置为:$config['enable_hooks'] = TRUE;
比如要设置一个网站维护时用的特别扩展点,可以先在config/hooks.php 中如下设置:
$hook['pre_controller'] = array(
'class' => 'Maintenance',
'function' => 'decide',
'filename' => 'maintenance.php',
'filepath' => 'hooks',
'params' => 'FALSE'
);
然后在application/hooks文件夹下建立如下文件:
<?php
class Maintenance
{
function decide($maintenance)
{
if($maintenance == TRUE)
{
show_error('The system is offline for maintenance.');
}
}
}
?>
12 数组helper
$this->load->helper('array');
$items = array(
'England' => 'London',
'Wales' => 'Cardiff',
'Scotland' => 'Edinburgh',
'Northen Ireland' => 'Belfast');
// returns 'Edinburgh'
echo element('scotland', $items);
element方法是在数组中根据KEY去找value,如果找不到则返回false;
发表评论
-
11个php日常用的小tips 代码片段
2014-01-21 20:34 1930http://www.phpzag.com/11-useful ... -
php中的DirectoryIterator和RecursiveDirectoryIterator
2013-07-27 22:50 3512php中,可以用用DirectoryIterator获取指定目 ... -
uccenter中找回创始人密码
2013-03-11 19:12 1917偶然忘记了uccenter中的创始人密码,一查看,其实找回 ... -
php中通过register_shutdown_function记录fatal error
2013-02-09 23:56 2965今天发现php中,如果要记录fatal error的时候, ... -
php中检查是否ajax请求
2013-01-19 09:53 1468$ajax = false; if(!empty ... -
php中检查某个网页地址是否有效能被打开的最简单方法
2012-10-22 16:18 2090php中检查某个网页地址是否有效能被打开的最简单方法,其实可以 ... -
小结几个php操作office的类库
2012-07-20 19:16 19371 phpexcel 最强大完整的类库了,地址在: ht ... -
介绍几个PHP的开源不错的图片类库
2012-07-14 13:11 2880介绍几个PHP的开源不错的图片类库 1 pchart ... -
php中__sleep和__wakeup
2012-06-22 09:39 4520在php中,__sleep和___wakeup是两个分别自 ... -
PHP 5.4正式版重要新特性
2012-05-25 08:34 1673原文发表在:http://tech.it168.com/a20 ... -
用php实现备份数据库ZIP及导出
2012-04-17 08:59 1842经常在有的PHP开源系统中,看到有备份数据库并导出的方法 ... -
PHP Codeigniter 中的_remap方法简介
2012-04-05 21:06 4585在Codeigniter 中,其实有个容易忽略掉的不错的控 ... -
PHP 5.4中的traits初探
2012-04-01 19:57 5051PHP 5.4中的traits,是新引入的特性,中文还真不知道 ... -
php中的pdo和mysqli的对比选择
2012-03-10 22:25 7152在PHP中,如何选择PDO和mysqli呢?本文做个简单的 ... -
php 5.4中新增加对session状态判断的功能
2012-02-20 12:28 3967在以前的php 版本中,要判断session是否有效,只能 ... -
php curl的几段小应用
2012-02-07 10:10 1823php 的CURL是不错的功能,下面收藏几段不错的片段 1 ... -
php 5.3中的一个type hinting的用法
2012-01-20 11:50 2316今天偶然看php 5.3中的一个特性,叫type hintin ... -
cakephp的分页排序
2012-01-04 10:38 4228cakephp中的分页还是很简单的,下面例子复习下 1 数据 ... -
mongodb+php学习1
2012-01-03 11:51 52301 mongodb启动时,设置启动项 C:\>mon ... -
php中挺好用的strtotime方法
2011-12-20 11:32 1960在PHP中,经常要对日期进行计算,比如要计算一个月前的日期 ...
相关推荐
CodeIgniter的用户可以轻松地访问官方发布的新版本,包括3.1.2版本在内的其他旧版本(如3.1.1、3.1.0、3.0.6、3.0.5、3.0.4等),并且可以阅读用户指南开始部分,学习如何构造动态的PHP应用。 CodeIgniter的许可...
总的来说,“基于CodeIgniter3的问答系统”提供了一个良好的平台,让开发者能够快速搭建并自定义一个问答社区,同时也为学习PHP和Web开发的初学者提供了实践机会。通过深入研究和实践,开发者不仅可以掌握...
10. **文档齐全**:CodeIgniter的官方文档详尽且易于理解,对于初学者和有经验的开发者都是很好的学习资源。 在实际开发中,CodeIgniter 3.x 可用于构建各种类型的应用,如博客系统、电子商务平台、内容管理系统等...
- **全面的文档**:CodeIgniter拥有详尽的官方文档,为开发者提供了清晰的学习路径。 - **丰富的库和辅助函数**:框架内包含了大量预定义的库(如数据库、电子邮件、会话管理等)和辅助函数,帮助开发者实现常见的...
而且,CodeIgniter不需要学习新的模板语言,用户可以根据需求选择是否使用模板解析器。 安装CodeIgniter分为四步: 1. 解压缩安装包到网站根目录; 2. 将CodeIgniter文件夹及里面的文件上传到服务器,index.php文件...
这个“图片站”项目就是利用CodeIgniter的架构和技术实现的,目的是为了学习和交流。让我们深入了解一下CodeIgniter和PHP在创建这样一个站点时涉及的关键知识点。 1. MVC架构:CodeIgniter的核心是Model-View-...
CodeIgniter是一个流行的PHP框架,以其轻...通过这个"codeigniter的简单示例",你可以逐步学习如何在实践中运用以上知识点,构建自己的CodeIgniter应用。理解并熟练掌握这些基础,将有助于你在PHP开发中更高效地工作。
10. **user_guide**:CodeIgniter的用户指南,通常包含详细的框架文档,有助于开发者理解和学习如何使用CodeIgniter的各种功能。 通过这些文件,我们可以推断这个项目是用CodeIgniter搭建的,结合了jQuery 1.4的...
3. **CodeIgniter-中文教程.pdf**: 这本PDF教程可能是面向初学者的全面指南,它从基础开始介绍如何使用CodeIgniter构建Web应用。内容可能包括安装和设置开发环境,创建第一个“Hello, World!”程序,以及逐步讲解...
这个中文手册是学习和参考CodeIgniter 2.0的重要资源,无论你是初学者还是经验丰富的开发者,都能从中获取有价值的信息。通过深入学习和实践,你可以充分利用CodeIgniter的优势,快速构建出高效、稳定的PHP应用。
无论是初学者还是有经验的开发者,都能从中受益匪浅,学习如何利用CodeIgniter1.7框架快速构建高质量的Web应用程序。对于那些对敏捷开发、MVC架构或者PHP语言感兴趣的人来说,这本书绝对值得一读。
3. 数据库操作:CodeIgniter提供了简单的数据库抽象层,支持多种数据库系统。其Active Record类提供了CRUD(创建、读取、更新、删除)操作,使数据库交互更为便捷。 4. 错误处理与日志:CodeIgniter提供了错误报告...
在此之后,Codeigniter历经多次更新,从1.x系列发展到2.0时代,2014年6月5日发布了2.2.0版本,而教程中提到的3.0.0版本是在2015年3月30日发布的,这是当时比较新的稳定版本。 在学习Codeigniter的过程中,我们还...
总的来说,这个例子为初学者提供了一个学习Codeigniter用户认证的基础平台。通过研究和修改这个示例,开发者可以更好地理解如何在实际项目中实现安全的用户登录和验证功能,同时掌握Codeigniter框架的使用。
3. **安全与防止XSS攻击**:CodeIgniter提供了输入验证和输出清理功能,以防止跨站脚本(XSS)攻击和其他安全威胁。此外,它还包含了安全的会话管理,确保用户数据的安全。 4. **URL友好的路由**:CodeIgniter允许...
这个“codeigniter中文手册教程”是你个人制作并基于官网资料改编的,旨在为开发者提供更便捷的学习途径。在解压文件后,只需通过浏览器打开`index.html`,你就可以开始学习CodeIgniter的相关知识。 CodeIgniter的...
总的来说,"CodeIgniter 1.72 中文帮助文档"是开发者学习和优化CodeIgniter应用的关键资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过深入阅读和实践,你可以充分利用CodeIgniter的优势,构建出...
资源中的三个文件分别提供了不同角度的CodeIgniter学习资料。 1. **CodeIgniter中文参考手册.pdf**:这份文档详细地介绍了CodeIgniter的各种组件和功能,包括控制器、模型、视图、数据库操作、表单验证、安全和会话...