在本文中,我们将给您介绍关于php–CodeIgniter2.0–验证数组的详细内容,并且为您解答php验证类的相关问题,此外,我们还将为您提供关于2个Codeigniter文件批量上传控制器写法例子
在本文中,我们将给您介绍关于php – CodeIgniter 2.0 – 验证数组的详细内容,并且为您解答php 验证类的相关问题,此外,我们还将为您提供关于2个Codeigniter文件批量上传控制器写法例子,codeigniter写法_PHP教程、CI(CodeIgniter)模型用法实例分析,cicodeigniter_PHP教程、CI(Codeigniter)的Setting增强配置类实例,cicodeigniter_PHP教程、CI(CodeIgniter)简单统计访问人数实现方法 原创,cicodeigniter_PHP教程的知识。
本文目录一览:- php – CodeIgniter 2.0 – 验证数组(php 验证类)
- 2个Codeigniter文件批量上传控制器写法例子,codeigniter写法_PHP教程
- CI(CodeIgniter)模型用法实例分析,cicodeigniter_PHP教程
- CI(Codeigniter)的Setting增强配置类实例,cicodeigniter_PHP教程
- CI(CodeIgniter)简单统计访问人数实现方法 原创,cicodeigniter_PHP教程
php – CodeIgniter 2.0 – 验证数组(php 验证类)
我在将一段表单验证代码转换为CI 2.0时遇到了一些问题.我正在尝试验证一系列复选框,但由于某些原因,验证无法运行回调或无法验证.
如何验证一系列复选框,以便至少检查一个复选框,并且值必须是选项之一(选项数组的键)?
编辑:
这是一个更好的解释,它失败了我的位置.让我们说我有这些领域:
<input type="checkBox" value="1" name="purpose[]" />
<input type="checkBox" value="2" name="purpose[]" />
我为目的[]设置了两个规则 – 一个是必需的规则,另一个是自定义回调,它检查值是否存在于可能值的数组中.
如果我将字段的名称编辑为:
<input type="checkBox" value="1" name="purpose[abc]" />
甚至将值更改为“”,验证通过.它忽略了所需的规则和我的自定义回调.
有人知道如何处理这个问题吗?
解决方法:
必须将数组传递给set_rules调用后缀为开/关方括号,如下所示:
$this->form_validation->set_rules('checkBoxes[]', 'My CheckBoxes', 'required');
CI用户指南中有更多详细信息 – https://www.codeigniter.com/user_guide/libraries/form_validation.html#using-arrays-as-field-names
要将复选框值的检查作为多个值之一进行处理,您需要创建自定义回调函数 – https://www.codeigniter.com/user_guide/libraries/form_validation.html#callbacks-your-own-validation-methods
2个Codeigniter文件批量上传控制器写法例子,codeigniter写法_PHP教程
2个Codeigniter文件批量上传控制器写法例子,codeigniter写法
例子一:
/** * 多文件上传 * * @author Dream <dream@shanjing-inc.com> */ public function multiple_uploads() { //载入所需类库 $this->load->library(''upload''); //配置上传参数 $upload_config = array( ''upload_path'' => '''', ''allowed_types'' => ''jpg|png|gif'', ''max_size'' => ''500'', ''max_width'' => ''1024'', ''max_height'' => ''768'', ); $this->upload->initialize($upload_config); //循环处理上传文件 foreach ($_FILES as $key => $value) { if (!empty($key[''name''])) { if ($this->upload->do_upload($key)) { //上传成功 print_r($this->upload->data()); } else { //上传失败 echo $this->upload->display_errors(); } } } }
例子二:
function upload() { $config[''upload_path''] = ''./uploads/''; /*这里的uploads是相对于index.php的,也就是入口文件,这个千万不要弄错哦! 否则就会报错"The upload path does not appear to be valid."; */ $config[''allowed_types''] = ''gif|jpg|png''; /*我试着去上传其它类型的文件,这里一定要注意顺序! A problem was encountered while attempting to move the uploaded file to the final destination. 这个错误一般是上传文件的文件名不能是中文名,这个很郁闷!还未解决,大家可以用其它方法,重新改一下文件名就可以解决了! $config[''allowed_types''] = ''zip|gz|png|gif|jpg'';(正确) $config[''allowed_types''] = ''png|gif|jpg|zip|gz'';(错误) */ $config[''max_size''] = ''1024''; $config[''max_width''] = ''1024''; $config[''max_height''] = ''768''; $config[''file_name''] = time(); //文件名不使用原始名 $this->load->library(''upload'', $config); if(!$this->upload->do_upload()) { echo $this->upload->display_errors(); }else{ $data[''upload_data'']=$this->upload->data(); //文件的一些信息 $img=$data[''upload_data''][''file_name'']; //取得文件名 echo $img."<br>"; foreach($data[''upload_data''] as $item => $value){ echo $item.":".$value."<br>"; } } }
对于CodeIgniter访问的问题?
本地地址/CodeIgniter/index.php?/
本地地址/CodeIgniter/index.php?/welcome
本地地址/CodeIgniter/index.php?/welcome/
本地地址/CodeIgniter/index.php?/welcome/index
本地地址/CodeIgniter/index.php?/welcome/index/
试试加上?
codeigniter文件上传后得到的绝对路径
因为使用上传类你可以设置上传目录
所以这个时候其实你是知道直接目录的,那对应的存入数据库只要存储文件名称就可以了
如果目录是变动的(例如按年月日变动),因为也是你事先知道的,也可以组织好对应的相对路径存储到数据库
如果写在对应的配置文件中,即可当变量使用了
CI(CodeIgniter)模型用法实例分析,cicodeigniter_PHP教程
ci(codeigniter)模型用法实例分析,cicodeigniter
本文实例分析了ci(codeigniter)模型用法。分享给大家供大家参考,具体如下:
MVC中的业务逻辑放在控制器中或者模型里都是不合适的,所以这里对业务逻辑进行了分离,多出一层用来处理业务逻辑,模型就只当作数据访问层,这样子模型将会变得比较轻。CI中并未通过实体对象来传参,参数的传入和返回都由开发者控制,比较灵活。很多情况下都会以数组的方式传入或者返回。
模型的使用也比较简单,这里只提一下使用前想到的几个问题吧。
1、既然已经有了数据访问层了,那我们就应当避免在控制器或者某些类中直接通过SQL查询数据库,所有的数据库访问操作都应当经过模型获取,大多数情况下一个表名对应着一个模型类。
2、模型应当很方便的连接多个数据库,在database配置文件中有谈到多个库的配置问题,根据group_name的不同可以很方便的连接不同的库。如果有主从,还可以考虑到主从的切换使用问题。
立即学习“PHP免费学习笔记(深入)”;
3、模型是否还要按模块区分?在控制器中存在公用控制器分发的做法,在模型中这种思维可能不太好,但可以通过继承不同的公用模型类来实现,这些类再继承CI的MY_Model。在某些业务下根据模块来继承可能比较有用,大部分情况可以直接继承MY_Model,MY_Model主要实现数据库的初始化连接以及一些公用方法。
4、数据库提供的操作方式都是比较基础的,需要我们根据自身的需求去组装,但在我们日常操作中很多操作是类似的,如,根据主键获取信息,根据ID获取信息,根据属性获取信息等,可以对这些基础的操作在进行一次封装,更方便使用。因为如果要使用AR的方式来操作数据库,需要记住很多的方法,如我们根据用户名查询:
$query = $this->db->from(''user'')->where(array(''username'' => ''BobbyPeng''))->get(); return $query->row_array();
如果封装后,则只需要记住一个方法即可,如:
public function findByAttributes($where = array()) { $query = $this->db->from($this->tableName())->where($where)->get(); return $query->row_array(); }
这样子在每个模型中添加一个tableName的方法返回表名后,再通过模型就可以很方便的使用该方法了。
5、上面的方法属于一个公用方法,我们会写在MY_Model中,但这种类似的方法会很多,我们可否将该类型的方法独立于一个文件中?因为这种方法大部分情况下是不会改的,而放在MY_Model中则表示对它的修改开放了,可能会影响到这些方法。如果说该类叫ActiveRecord类,那可以让MY_Model继承ActiveRecord类,而ActiveRecord类继承CI_Model,参考代码见后面。
很多时候类库提供给我们的方法都是比较细的,我们可以封装一下,减少使用难度。关于模型中公用方法的封装一直还在考虑中,下面给出的只是一个针对单表的简单的操作,复杂的操作就得在特定的模型中实现,还有一些公用操作或者说非AR的操作方式可以统一下,看以后是否有机会再来考虑下这个问题。
公用AR封装类,可进行常用的操作,需要赋予db属性为数据库连接对象,并在模型中设置几个方法,如主键、表名
<?php if ( ! defined(''BASEPATH'')) exit(''No direct script access allowed''); class ActiveRecord extends CI_Model { /** * 保存数据 * * @param array $data 需要插入的表数据 * @return boolean 插入成功返回ID,插入失败返回false */ public function save($data) { if($this->db->set($data)->insert($this->tableName())) { return $this->db->insert_id(); } return FALSE; } /** * Replace数据 * @param array $data */ public function replace($data) { return $this->db->replace($this->tableName(), $data); } /** * 根据主键更新记录 * * @param string $pk 主键值 * @param array $attributes 更新字段 * @param array $where 附加where条件 * @return boolean true更新成功 false更新失败 */ public function updateByPk($pk, $attributes, $where = array()) { $where[$this->primaryKey()] = $pk; return $this->updateAll($attributes, $where); } /** * 更新表记录 * * @param array $attributes * @param array $where * @return bollean true更新成功 false更新失败 */ public function updateAll($attributes, $where = array()) { return $this->db->where($where)->update($this->tableName(), $attributes); } /** * 根据主键删除数据 * * @param string $pk 主键值 * @param array $where 附加删除条件 * @return boolean true删除成功 false删除失败 */ public function deleteByPk($pk, $where = array()) { $where[$this->primaryKey()] = $pk; return $this->deleteAll($where); } /** * 删除记录 * * @param array $where 删除条件 * @param int $limit 删除行数 * @return boolean true删除成功 false删除失败 */ public function deleteAll($where = array(), $limit = NULL) { return $this->db->delete($this->tableName(), $where, $limit); } /** * 根据主键检索 * * @param string $pk * @param array $where 附加查询条件 * @return array 返回一维数组,未找到记录则返回空数组 */ public function findByPk($pk, $where = array()) { $where[$this->primaryKey()] = $pk; $query = $this->db->from($this->tableName())->where($where)->get(); return $query->row_array(); } /** * 根据属性获取一行记录 * @param array $where * @return array 返回一维数组,未找到记录则返回空数组 */ public function findByAttributes($where = array()) { $query = $this->db->from($this->tableName())->where($where)->limit(1)->get(); return $query->row_array(); } /** * 查询记录 * * @param array $where 查询条件,可使用模糊查询,如array(''name LIKE'' => "pp%") array(''stat >'' => ''1'') * @param int $limit 返回记录条数 * @param int $offset 偏移量 * @param string|array $sort 排序, 当为数组的时候 如:array(''id DESC'', ''report_date ASC'')可以通过第二个参数来控制是否escape * @return array 未找到记录返回空数组 */ public function findAll($where = array(), $limit = 0, $offset = 0, $sort = NULL) { $this->db->from($this->tableName())->where($where); if($sort !== NULL) { if(is_array($sort)){ foreach($sort as $value){ $this->db->order_by($value, '''', false); } } else { $this->db->order_by($sort); } } if($limit > 0) { $this->db->limit($limit, $offset); } $query = $this->db->get(); return $query->result_array(); } /** * 统计满足条件的总数 * * @param array $where 统计条件 * @return int 返回记录条数 */ public function count($where = array()) { return $this->db->from($this->tableName())->where($where)->count_all_results(); } /** * 根据SQL查询, 参数通过$param绑定 * @param string $sql 查询语句,如SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ? * @param array $param array(3, ''live'', ''Rick'') * @return array 未找到记录返回空数组,找到记录返回二维数组 */ public function query($sql, $param = array()) { $query = $this->db->query($sql, $param); return $query->result_array(); } } /* End of file ActiveRecord.php */ /* Location: ./application/core/database/ActiveRecord.php */
MY_Model可以继承该类,这样子模型中可以直接调用上面的方法。
<?php if ( ! defined(''BASEPATH'')) exit(''No direct script access allowed''); require_once APPPATH.''core/database/ActiveRecord.php''; class MY_Model extends ActiveRecord { public function __construct($group_name = '''') { $this->initDb($group_name); parent::__construct(); } protected function initDb($group_name = '''') { $db_conn_name = $this->getDbName($group_name); $CI = & get_instance(); if(isset($CI->{$db_conn_name}) && is_object($CI->{$db_conn_name})) { $this->db = $CI->{$db_conn_name}; } else { $CI->{$db_conn_name} = $this->db = $this->load->database($group_name, TRUE); } } private function getDbName($group_name = '''') { if($group_name == '''') { $db_conn_name = ''db''; } else { $db_conn_name = ''db_''.$group_name; } return $db_conn_name; } } /* End of file MY_Model.php */ /* Location: ./application/core/MY_Model.php */
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》和《CI(CodeIgniter)框架进阶教程》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
- CodeIgniter自定义控制器MY_Controller用法分析
- Codeigniter控制器controller继承问题实例分析
- 2个Codeigniter文件批量上传控制器写法例子
- CodeIgniter钩子用法实例详解
- CodeIgniter配置之database.php用法实例分析
- CodeIgniter多语言实现方法详解
- CodeIgniter视图使用注意事项
- CodeIgniter读写分离实现方法详解
- CI(CodeIgniter)简单统计访问人数实现方法
- CodeIgniter控制器之业务逻辑实例分析
CI(Codeigniter)的Setting增强配置类实例,cicodeigniter_PHP教程
ci(codeigniter)的setting增强配置类实例,cicodeigniter
本文实例讲述了codeigniter的setting增强配置类。分享给大家供大家参考,具体如下:
该增强配置类适用配置项要求比较灵活的项目。可实现预加载配置、组配置、单项调取、增、删、改配置,无需在改动config文档。
使用:
在需要的地方
复制代码 代码如下:$this->load->library(''setting'');
对于预加载项可以使用复制代码 代码如下:$this->config->item();进行获取
对于临时调取项可以使用复制代码 代码如下:$this->setting->item();进行获取
首先,创建数据表
CREATE TABLE `system_settings` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `key` varchar(64) NOT NULL DEFAULT '''', `value` mediumtext NOT NULL, `group` varchar(55) NOT NULL DEFAULT ''site'', `autoload` enum(''no'',''yes'') NOT NULL DEFAULT ''yes'', PRIMARY KEY (`id`,`key`), KEY `name` (`key`), KEY `autoload` (`autoload`) ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
然后,在application/libraries目录下创建setting.php,内容如下
立即学习“PHP免费学习笔记(深入)”;
<?php if (!defined(''BASEPATH'')) exit(''No direct script access allowed''); class Setting { private $_ci; private $settings_autoloaded; private $settings = array(); private $settings_group = array(); private $settings_db; public function __construct() { $this->_ci = &get_instance(); $this->settings_db = $this->_ci->config->item(''settings_table''); $this->autoload(); } // ------------------------------------------------------------------------ // 华丽的分割线 正式开始 // ------------------------------------------------------------------------ /** * 从数据库获取所有自动加载的设置 */ public function autoload() { //如果存在则直接返回 if (!empty($this->settings)) { return $this->settings; } //如果系统不存在数据表则返回false if (!$this->_ci->db->table_exists($this->settings_db)) { return FALSE; } //查询标记为自动加载的项 $this->_ci->db->select(''key,value'')->from($this->settings_db)->where(''autoload'', ''yes''); $query = $this->_ci->db->get(); if ($query->num_rows() == 0) { return FALSE; } //循环写入系统配置 foreach ($query->result() as $k => $row) { $this->settings[$row->key] = $row->value; $this->_ci->config->set_item($row->key, $row->value); } //标记会话,避免重复读库 //$this->_ci->session->set_userdata(''settings_autoloaded'', TRUE); return $this->settings; } // ------------------------------------------------------------------------ /** * 获取单个设定 * * * <?php $this->settings->get(''config_item''); ?> * */ public function item($key) { if (!$key) { return FALSE; } //首先检查是否系统已经自动加载 if (isset($this->settings[$key])) { return $this->settings[$key]; } //查询数据库 $this->_ci->db->select(''value'')->from($this->settings_db)->where(''key'', $key); $query = $this->_ci->db->get(); if ($query->num_rows() > 0) { $row = $query->row(); $this->settings[$key] = $row->value; return $row->value; } // 查询不到结果则查找系统config,返回值或者false return $this->_ci->config->item($key); } // ------------------------------------------------------------------------ /** * 获取组配置 */ public function group($group = '''') { if (!$group) { return FALSE; } $this->_ci->db->select(''key,value'')->from($this->settings_db)->where(''group'', $group); $query = $this->_ci->db->get(); if ($query->num_rows() == 0) { return FALSE; } foreach ($query->result() as $k => $row) { $this->settings[$row->key] = $row->value; $arr[$row->key] = $row->value; } return $arr; } // ------------------------------------------------------------------------ /** * 更改设置 */ public function edit($key, $value) { $this->_ci->db->where(''key'', $key); $this->_ci->db->update($this->settings_db, array(''value'' => $value)); if ($this->_ci->db->affected_rows() == 0) { return FALSE; } return TRUE; } // ------------------------------------------------------------------------ /** * 新增设置 */ public function insert($key, $value = '''', $group = ''addon'', $autoload = ''no'') { // 检查是否已经被添加的设置 $this->_ci->db->select(''value'')->from($this->settings_db)->where(''key'', $key); $query = $this->_ci->db->get(); if ($query->num_rows() > 0) { return $this->edit($key, $value); } $data = array(''key'' => $key, ''value'' => $value, ''group'' => $group, ''autoload'' => $autoload, ); $this->_ci->db->insert($this->settings_db, $data); if ($this->_ci->db->affected_rows() == 0) { return FALSE; } return TRUE; } // ------------------------------------------------------------------------ /** * 删除设置 */ public function delete($key) { $this->_ci->db->delete($this->settings_db, array(''key'' => $key)); if ($this->_ci->db->affected_rows() == 0) { return FALSE; } return TRUE; } // ------------------------------------------------------------------------ /** * 删除设置组及成员配置 */ public function delete_group($group) { $this->_ci->db->delete($this->settings_db, array(''group'' => $group)); if ($this->_ci->db->affected_rows() == 0) { return FALSE; } return TRUE; } } /* End of file Setting.php */ /* Location: ./application/libraries/Setting.php */
最后,打开application/config/config.php,新增
/** * 系统配置表名 */ $config[''settings_table''] = "system_settings";
希望本文所述对大家基于Codeigniter框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
- CodeIgniter中使用Smarty3基本配置
- Nginx下配置codeigniter框架方法
- nginx支持codeigniter的pathinfo模式url重写配置写法示例
- 新浪SAE云平台下使用codeigniter的数据库配置
- 使用配置类定义Codeigniter全局变量
- CI(CodeIgniter)框架配置
- CodeIgniter基本配置详细介绍
- 解析CodeIgniter自定义配置文件
CI(CodeIgniter)简单统计访问人数实现方法 原创,cicodeigniter_PHP教程
ci(codeigniter)简单统计访问人数实现方法 原创,cicodeigniter
本文实例讲述了ci(codeigniter)简单统计访问人数实现方法。分享给大家供大家参考,具体如下:
废话不说,先上代码:
控制器文件:
/application/controllers/hello.php 如下:
<?php if ( ! defined(''BASEPATH'')) exit(''No direct script access allowed''); class Hello extends CI_Controller { public function index() { echo "Hello CodeIgniter!"; } public function showval($name){ //访问路径:http://localhost/ci/index.php/hello/showval/Tom $this->name=$name; @$num=file_get_contents(''./num.txt'');//加上@屏蔽警告提示(第一次运行没有TXT文件会有警告提示) $num=$num?$num:0; $num++; $arr=array(''v_name''=>$name,''v_num''=>$num); $re=fopen(''./num.txt'',''w''); fwrite($re,$num); fclose($re); $this->load->view(''test_views'',$arr); } }
视图文件:
立即学习“PHP免费学习笔记(深入)”;
/application/views/test_views.php 如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>访问统计</title> </head> <body> <?php echo $v_name;?>是第 <?php echo $v_num;?> 位访问者 </body> </html>
运行结果如下图所示:
更多关于CodeIgniter框架相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
- 2个Codeigniter文件批量上传控制器写法例子
- php实现仿写CodeIgniter的购物车类
- codeigniter实现get分页的方法
- Codeigniter的dom类用法实例
- CodeIgniter使用smtp服务发送html邮件的方法
- Nginx下配置codeigniter框架方法
- Codeigniter检测表单post数据的方法
- Codeigniter校验ip地址的方法
- Codeigniter控制器controller继承问题实例分析
关于php – CodeIgniter 2.0 – 验证数组和php 验证类的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于2个Codeigniter文件批量上传控制器写法例子,codeigniter写法_PHP教程、CI(CodeIgniter)模型用法实例分析,cicodeigniter_PHP教程、CI(Codeigniter)的Setting增强配置类实例,cicodeigniter_PHP教程、CI(CodeIgniter)简单统计访问人数实现方法 原创,cicodeigniter_PHP教程的相关信息,请在本站寻找。
本文标签: