用户
 找回密码
 入住 CI 中国社区
搜索
查看: 253704|回复: 107
收起左侧

CodeIgniter FAQ - 常见问题解答

    [复制链接]
发表于 2008-4-11 14:33:57 | 显示全部楼层 |阅读模式
CodeIgniter 是一个非常易学的敏捷 PHP 框架,但是也有很多朋友被阻挡在一些很常见的问题上,所以我逐步总结一些 CodeIgniter 的常见问题的解答,希望大家多多提出你们的问题,以方便各位同学!谢谢!

本帖严禁灌水,违者一律删!


继续搜集问题并解答中,并欢迎提出普遍性问题!
发表于 2017-6-30 11:53:56 | 显示全部楼层
雪兔 发表于 2017-3-7 10:27
你好,请问怎么才能吧CI的分页链接变成按钮,放在我指定的位置呢

可以结合BOOSTRAP的按钮样式自己写个辅助函数。

function page_nav($baseurl="",$total=0,$step=10,$page=0,$navnum=10) {
/*
        本函建立分页导航,返回bootstra样式的HTML字符串
        $baseurl:        如:        article/index/
        $total:        记录总数量
        $step:                每页数量
        $page:                当前页数,第一页为0,第二页为1,第三页为2,...
        $navnum:        定义显示出来的页数列表,即无论多少页,只显示规定的页面数量如:
                                首页 << 11 12 13 14 15 16 17 18 19 20 21 >> 末页775
                                (这是可选参数,不要与step混淆)

*/
        if($total<=0 || $total<=$step) return false;

        if(substr($baseurl,-1)!='/'){$baseurl.='/';}
       
        $maxPage=ceil($total/$step)-1;

        $maxNavPage=ceil($maxPage/$navnum);

        $startpage=floor($page/$navnum)*$navnum;

        $endpage=$startpage+$navnum-1;

        $str="\n\n <nav class=\"text-right\">\n                <ul class=\"pagination\" style=\"margin:0;pading:0;\">\n";

   if($maxNavPage>1        &&        $page>=$navnum)        {$str.="                <li>".anchor($baseurl,"首页")."</li>\n";}
   
        if($page>=$navnum)        $str.="                <li>".anchor($baseurl.($startpage-1),"&lt;&lt;")."</li>\n";

        for($i=$startpage;$i<=$endpage;$i++)        {
                if($i>$maxPage)        break;
                $active=($i==$page)?"class='active'":"";
                $str.="                <li $active>".anchor($baseurl.$i,$i+1)."</li>\n";               
        }

        if($maxNavPage>1 && $endpage<$maxPage)        $str.="                <li>".anchor($baseurl.($endpage+1),"&gt;&gt;")."</li>\n";

        if($maxNavPage>1        &&        $endpage<$maxPage)        $str.="                <li>".anchor($baseurl.$maxPage,"尾页".($maxPage+1))."</li>\n";
   
        $str.="                </ul>\n        </nav>\n\n";
        return $str;
}
发表于 2015-1-13 14:30:42 | 显示全部楼层
        public function get_real_name($search){
                        //装在数据库操作类
                        $DB1=$this->db->database('vm',TRUE);
            $DB2=$this->db->database('manage',TRUE);
            //查询是否有验证信息
            $res=$this->$DB1->select('*')
                ->from('real_name')
                ->where('user_id',$search['user_id'])
                ;
                        if($res){
                                $this->db->select('r.*,u.name AS `user_name`,u.`realname`')
                    ->from('`real_name` AS r')
                    ->join('`user` AS u','r.user_id = u.id','left')
                    ->where('u.id',$search['user_id']);
                        }else{
                                $rs=$this->$DB2->select('realname')
                    ->from('user')
                    ->where('id',$search['user_id']);
                        }
                }  图片不会发 只好发代码了
发表于 2017-6-7 14:33:02 | 显示全部楼层
$.ajax({

            url:'/admin/login/loginIn',
            type:'post',
            dataType:'json',
            data:data,
            success:function(data){
                if(data.msg == 'success'){
                    window.location.href="/admin/admin"
                }else{
                    swal('',data.msg,'error');
                }
            }      

为什么登录成功有返回信息 window.location.href 无法跳转啊?
 楼主| 发表于 2008-4-11 14:40:16 | 显示全部楼层
  • 为什么访问类似 http://www.mydomain.com/CodeIgniter 或 http://www.mydomain.com/CodeIgniter/index.php 的 URL 会出现 404 错误?
    答:大多数情况是因为你使用的是 IIS 造成的。如果没设置 default_controller 的值,或者默认控制器在子目录下,也可能会出现此错误。解决方案:打开 config/config.php 文件,找到 $config['uri_protocol'],把其值从 AUTO 修改为指定的值,例如 PATH_INFO,也就是不要使用 AUTO,一般来说都用 PATH_INFO。最近也发现有部分 Apache 服务器也出现 404 错误,解决方案同上。(注:此处的 404 错误为 CI 报的错,而不是服务器报告的,请一定要区分开)
  • 怎样删除、去掉或隐藏 URL 中的 index.php?
    答:http://codeigniter.org.cn/forums/thread-4-1-2.html
  • CodeIgniter 视图中的路径是怎么回事?
    答:视图中的所有路径全部和 index.php 同级,也就是和 index.php 属于一个目录下,也就是网站根目录,因为 index.php 后面看似是路径的东西其实那只是一种 URL 参数而已,并不是真正的路径。我建议在视图中使用 URL 辅助函数(URL Helper),CSS、图片等外部资源使用 base_url(),访问控制器方法使用 site_url(),例如:
    HTML复制代码
    <img src="<?=base_url()?>images/xxx.gif" />
    复制代码
    HTML复制代码
    <a href="<?=site_url('控制器/方法/参数1/.../参数n')?>">控制器</a>
    复制代码
    注意:使用 base_url() 或 site_url() 均需要先执行
    PHP复制代码
    $this->load->helper('url');
    复制代码
    再注意:请在 php.ini 中打开 PHP 短标记,方可使用 <?=?> 这种形式,否则请使用 <?php echo base_url();?>
  • 怎样使 CodeIgniter 中的 Cookie 关闭浏览器就失效?
    答:这是 CI Cookie 和 PHP Cookie 设计上的偏差。只要把 Cookie 辅助函数中的 set_cookie 函数中的第三个参数设置为 0,就可以实现关闭浏览器就失效。如:
    PHP复制代码
    set_cookie($name, $value, 0);
    复制代码

点评

PHP 短标记无需打开也能使用 <?=?> 具体请看ci开发 开发规范  发表于 2011-9-25 10:23
发表于 2008-4-11 14:54:46 | 显示全部楼层
我来顶一个~

  • 为什么使用 upload 库时明明设置了允许上传的后缀,却提示“上传了未指定类型”?
    答:
    可能的原因是为 CI 默认的 application/config/mimes.php 的 mimes 数组未包含你指定的类型。比如.wmv就找不到对应的mime[可以通过 php 的 $_FILES[‘type’] 察看] 。CI是通过你设定的允许上传的后缀[.jpg, .png等等]在前面提到的 mimes 数组中找相应的 mime[比如 jpg 对应的 mime 是 image/jpeg ],如果未能通过后缀名找到相应的mime,即使你设定了该后缀也没有用[这就是为什么 CI 的 mimes 数组中会出现一个后缀对应两个或者多个 mime ] 则返回上传了未指定的类型。
    关于 $FILES['userfile']['type'] php 官方给出的说法是:
    $_FILES['userfile']['type']
    文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。
发表于 2008-4-11 15:03:46 | 显示全部楼层
我也来UP一条。

1、CI得到GET和POST数据的时候用什么方法才是安全的,因为一般我们都要进行转义的,以保证安全。

答:  CI可以直接用$_POST['']的方法来得到数据。同样也是经过安全处理过的。
发表于 2008-4-23 14:12:58 | 显示全部楼层
有个问题在CI中有$_GET[ ] 这样拿GET提交数据的方法吗?
 楼主| 发表于 2008-4-23 14:25:25 | 显示全部楼层
$_GET 怎么提交数据?
发表于 2008-4-23 14:38:48 | 显示全部楼层
比如像原来用get方法递交的查询字符像是: ?XXX=XXX&XXX=XXX。这样的。。用$_GET拿得到吗?
 楼主| 发表于 2008-4-23 15:29:10 | 显示全部楼层
默认情况下没有 ?xxxx=xxx 了,所以也就没有 GET 了,你只能用 URL 段获取参数。
但是可以改成使用 ?xxxx=xxxx ,请看 config.php。
发表于 2008-7-20 13:17:50 | 显示全部楼层

急急,请求援助!

各位大鸟,小弟初次使用该框架,遇到一个问题,当我使用$this->db->insert()方法时候,插入中文字后出现乱码问号 ???,好像字符集不对,请问怎样才能用该方法时不能出现问号呢?多谢各位的帮忙,小弟我感激不尽~~~~我设置的页面字符为gb2312 数据库集为gb2312
发表于 2008-7-27 14:46:56 | 显示全部楼层

CodeIgniter框架必须要有IIS吗?

CodeIgniter框架必须要有IIS吗? 有apache http server不可以吗?

本版积分规则