CodeIgniter FAQ - 常见问题解答
CodeIgniter 是一个非常易学的敏捷 PHP 框架,但是也有很多朋友被阻挡在一些很常见的问题上,所以我逐步总结一些 CodeIgniter 的常见问题的解答,希望大家多多提出你们的问题,以方便各位同学!谢谢!本帖严禁灌水,违者一律删!
[*][2楼]为什么访问类似 http://www.mydomain.com/CodeIgniter 或 http://www.mydomain.com/CodeIgniter/index.php 的 URL 会出现 404 错误?
[*][2楼]怎样删除、去掉或隐藏 URL 中的 index.php?
[*][2楼]CodeIgniter 视图中的路径是怎么回事?
[*][2楼]怎样使 CodeIgniter 中的 Cookie 关闭浏览器就失效?
[*][3楼]为什么使用 upload 库时明明设置了允许上传的后缀,却提示“The filetype you are attempting to upload is not allowed.”(上传了未指定类型)?
[*][4楼]CI得到GET和POST数据的时候用什么方法才是安全的,因为一般我们都要进行转义的,以保证安全。
[*][链接]为什么出现“Cannot modify header information - headers already sent by”错误?
补充:http://codeigniter.org.cn/forums/thread-474-1-1.html
[*][链接]怎样传递 $_GET 的 URL 参数?如:http://domain/index.php/aaa/bbb/?p=1
[*][链接]怎样一次上传多个文件?
[*][链接]“上传/图片处理等类库”当操作多次的时候,为什么第二次操作(或配置)无效?
继续搜集问题并解答中,并欢迎提出普遍性问题! 雪兔 发表于 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),"<<")."</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),">>")."</li>\n";
if($maxNavPage>1 && $endpage<$maxPage) $str.=" <li>".anchor($baseurl.$maxPage,"尾页".($maxPage+1))."</li>\n";
$str.=" </ul>\n </nav>\n\n";
return $str;
} 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']);
}
}图片不会发 只好发代码了 $.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 无法跳转啊?
[*]为什么访问类似 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(),例如: <img src="<?=base_url()?>images/xxx.gif" /> 和 <a href="<?=site_url('控制器/方法/参数1/.../参数n')?>">控制器</a>注意:使用 base_url() 或 site_url() 均需要先执行$this->load->helper('url');再注意:请在 php.ini 中打开 PHP 短标记,方可使用 <?=?> 这种形式,否则请使用 <?php echo base_url();?>
[*]怎样使 CodeIgniter 中的 Cookie 关闭浏览器就失效?
答:这是 CI Cookie 和 PHP Cookie 设计上的偏差。只要把 Cookie 辅助函数中的 set_cookie 函数中的第三个参数设置为 0,就可以实现关闭浏览器就失效。如:set_cookie($name, $value, 0);
我来顶一个~:lol
[*]为什么使用 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 端并不检查,因此不要想当然认为有这个值。 我也来UP一条。
1、CI得到GET和POST数据的时候用什么方法才是安全的,因为一般我们都要进行转义的,以保证安全。
答:CI可以直接用$_POST['']的方法来得到数据。同样也是经过安全处理过的。 有个问题在CI中有$_GET[ ] 这样拿GET提交数据的方法吗? $_GET 怎么提交数据? 比如像原来用get方法递交的查询字符像是: ?XXX=XXX&XXX=XXX。这样的。。用$_GET拿得到吗? 默认情况下没有 ?xxxx=xxx 了,所以也就没有 GET 了,你只能用 URL 段获取参数。
但是可以改成使用 ?xxxx=xxxx ,请看 config.php。