ci框架中隐藏index.php入口文件的方法-经典!徐老师亲测经验分享!

网上有很多资料介绍了ci(我当前ci版本[3.1.9])框架下隐藏index.php的方法,但是都不够实用,很多都需要结合修改服务器配置才可以实现!这就太麻烦了!不推荐!

下面我分享的是一个非常经典,有效,安全,可靠的一个方法,直接在ci站点根目录下创建一个.htaccess文件。在文件中输入如下内容:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^(.*)$ index.php?/$1 [L]   

</IfModule>

大功告成!xuduowei 徐多蔚 亲测无误!你在调试中遇到问题,欢迎随时联系我!


关注公众号,了解更多it技术(it问答网

ci快速上手手册-徐多蔚xuduowei整理【原创】

徐多蔚
官方:
https://codeigniter.com/
中国:
http://codeigniter.org.cn/
ci:
url路径1:
index.php/welcome/abc/?id=6
welcome: 控制器名;[默认:welcome]
abc: 方法名;  [默认:index]
id:表示的是传递给控制器的参数,如 ID 或其它各种变量。
index.php/welcome/abc/?id=6
get接值:$this->input->get(); //得到的get传过来的值,格式是数组。
若是post方式:接收值格式:
$this->input->post();
url路径2:
example.com/index.php?c=controller&m=function
index.php?c=welcome&m=abc
注意:ci中方法参数默认是m,若需要修改,也可以更改的。
application/config/config.php 文件中进行设置,只需将将 enable_query_strings 更改为 TRUE 即可。
$config[‘function_trigger’] = ‘m’;//修改方法参数
==================================================
提示:我们可以在对应的application\controllers下方创建文件夹比如:
index
admin
来模拟tp中的“模块”
,ci中如何访问呢?
pathinfo模式:
index.php/文件夹名/控制器名/方法名
CI中url要么用普通模式,要么用pathinfo模式[推荐使用此模式]【仅同时支持一种!】。
视图的渲染:
$this->load->view(‘welcome_message’);
view下:
welcome_message.php [默认后缀是.php]
================================================
ci框架视图赋值变量
$this->load->vars(“xdw”,array(‘a’=>’1’,’b’=>2,’c’=>3));
$this->load->view(‘abc/hi’);
code1:
控制器:
$this->load->vars(“xdw”,array(‘a’=>’1’,’b’=>2,’c’=>3));
$this->load->view(‘abc/hi’);
视图引用:
<?php
 print_r($xdw);
?>
code2:
控制器:
$this->load->view(‘abc/hi’,array(‘xdw’=>array(‘a’=>’1’,’b’=>2,’c’=>3)));
视图引用:
<?php
 print_r($xdw);
?>
视图中如何使用自定义函数,以有利于功能扩展?
1、system\helpers 目录下创建一个common_helper.php 文件
2、控制器中需要载入对应的文件。
$this->load->helper(‘common’);//注意是common不是common_helper【系统自动可以识别】
3、视图中就可以直接引用自定义函数了。
提示:如何设置自动载入?
application\config\autoload.php
搜索helper
$autoload[‘helper’] = array(‘common’);
CI 中视图引入JS、CSS文件的方式===========
echo base_url(); //得到项目的目录。
切记必须先载入helper url文件。
$autoload[‘helper’] = array(‘common’,”url”);
//url 的2种载入方式:
1、$this->load->helper(‘url’);//手动
2、如何设置自动载入?
application\config\autoload.php
搜索helper
$autoload[‘helper’] = array(‘url’);
表单提交路径=============
$this->load->helper(‘url’);//不能少,也可以在autoload.php中配置好。
用site_url(‘控制器/方法名’);//文件夹名/控制器名/方法名
===========================
数据库的增、删、改、查
1、确保配置项正常。
application\config\database.php
2、
$this->load->database();
$rst=$this->db->query(“select * from obj_users”);
$rs=$rst->result_array();//写法上有多种
foreach($rs as $k){
echo $k[‘username’].”<br/>”;
}
提示:$rst->result_array();//把抽象的结果集转换成数组 echo $k[‘username’];
      $rs=$rst->result();   //把抽象结果转换成对象     echo $k->username
配置交换表前缀
$db[‘default’][‘dbprefix’] = ‘obj_’;
$db[‘default’][‘swap_pre’] = ‘my_’;
那么我们在写sql语句时就用my_这个表前缀,ci会自动把my_换位obj_,所以,dbprefix可以随便修改,方便我们修改数据库名。
如:$sql = “SELECT * FROM my_users”;
$rst=$this->db->query($sql);
$rst=$this->db->get(表名);
$this->db->where(“id=1”);
$rst=$this->db->select(“username”)->get(“users”);
删除:
$this->load->database();
$num=$this->db->where(“id=14”)->delete(‘users’); //返回的是布尔值true/false;
修改:
$this->load->database();
$num=$this->db->where(“id=13”)->update(‘users’,array(“username”=>’xdw’));
var_dump($num);//布尔值
增加:
$this->load->database();
$num=$this->db->insert(‘users’,array(“username”=>’xdw666′));
var_dump($num);//布尔值
模型如何载入?
手动:
$this->load->model(“m_welcome”);//m_welcome大小写均可,推荐首字母大写。和模型命名一致。
控制器中载入模型的核心源码:
$this->load->model(“M_welcome”);//手动下载入指定模型不可省略。
$m=new M_welcome();
$rs=$m->abc();
var_dump($rs);
若我们需要载入指定目录中的模型,demo:
$this->load->model(“模型文件夹名称/M_welcome”);
对应的模型的命名建议和控制器名区别开,一般建议在前方加前缀M_
模型文件的写法:
class M_index  extends CI_Model{ //注意:extends CI_Model不能省,否则报错!
自动:
自动载入,在config/autoload.php中配置
$autoload[‘model’] = array(‘m_welcome’);
提示:m_welcome 或者M_welcome均可,推荐首字母大写,这样和模型的命名保持一致。
我们可以在autoload.php中设置自动载入数据库类,这样我们对数据库操作的时候,就可以省略:
$this->load->database();
配置项如下:
$autoload[‘libraries’] = array(‘database’);
///session的使用;
使用前都要导入session类,导入方法。
导入session方式一:全局法:
config/autoload.php中 $autoload[‘libraries’] = array(“session”);
导入session方式二:页面导入:
function __construct(){
parent::__construct();//不可省略
$this->load->library(‘session’);
}
使用格式一:
设置:
$_SESSION[session名]=值
取的:
$_SESSION[session名]
使用格式二:
设置:
$this->session->name=值;
取的:
$this->session->name;
CI框架获取控制器名和方法名
$directory=$this->router->fetch_directory();//目录名
$class = $this->router->fetch_class();//获取控制器名
$method = $this->router->fetch_method();//获取方法名
==================================

提示:ci中若要模拟tp中公共类的继承。

参考格式如下:
@include_once(APPPATH . ‘controllers/admin/Common.php’);
class Welcome extends Common {

其中Common.php代码如下:
class Common extends CI_Controller {

解说:
ci对CI_Controller做了自动包含,但是对其他的没有做自动包含。需要手动include包含类文件。

================================
了解下YII框架。
https://www.yiiframework.com/
https://www.yiichina.com/

关注公众号,了解更多it技术(it问答网