正在查看: Codeigniter 分类下的文章(第 1 页 / 共 11 篇)

CI文件上传不成功可能的原因

CI文件上传总是出现很其他问题,但大部分都是php配置问题,CI本身的问题不大,所以CI总是背锅。php.ini的配置:

1. 启用上传

file_uploads = On

2. 设置上传文件大小限制

upload_max_filesize = 50M

»阅读全文

使用CodeIgniter的Session类库问题集锦

本文是为收集CI Session类库使用的问题集锦,方便自己,帮助他人。欢迎提出问题,共同探讨,寻找解决方案。

优雅地使用CodeIgniter 3之Session类库(3)

本文主要讲CI2和CI3关于Session类库的区别。我们知道CI2的Session类使用了cookie来传递session数据。使用cookie保存会话的好处在于可以节省服务器资源,但坏处也是显而易见的:不能存储太多数据,同时由于暴露了一些重要元数据(ip地址、user agent、session id、user data、上次活动时间),也不够安全(虽然可以加密和自动更新)。当然它也可以使用数据库来保存session数据,但配置有一定的复杂度。

CI3的Session的类库则完全重新,也不再把元数据信息以cookie的方式发送到客户端,它采用了原生的Session来保存会话数据。同时也不再是简单地通过配置使用数据库来存储Session数据,而是通过drivers驱动的模式自由切换到不同的Session Driver。CI默认使用的driver为files,所以使用$this->load->library('session')加载Session类时,自动使用files的驱动。

»阅读全文

优雅地使用CodeIgniter 3之Session类库(2)

CI3的Session的重大改变就是默认使用了原生的Session,这符合Session类库本来的意思,似乎更加合理一些。总体来说,虽然设计理念不同,但为了保证向后兼容性,类库的使用方法与CI2.0的差别不是很大。一般的使用过程是这样的:

»阅读全文

优雅地使用CodeIgniter 3之Session类库(1)

相信无数人在使用CI2的Session类库时,遇到各种的坑,各种抱怨,各种不解。在CI中国论坛能搜到大量关于Session类库的提问,说明要想用好session类库还是得下一番功夫。本文将先从CI2入手,讲述CI下Session类库的设计理念和在CI3下的Session类库做了哪些重大改进。首先在这里简单说明一下Session和cookie的区别。

Session和cookie的区别

1.在某些语境中,cookie是session的一种实现方式,Ci的类库设计似乎就这么认为的。设想用户登录后使用Session保存数据的一种情景。用户输入密码和口令发送到服务器后,php就会在服务器端生成一个php sessionid和一个具体的数据包放到一个文件中,并存放到指定的文件夹下(如果session.save_handler=files),然后会把sessionId作为一个cookie放到响应中返回给客户端(前提是用户浏览器开启了cookie,否则会加入到url地址的查询字符串中)。用户再次访问服务器上的其他页面时,会把这个phpsessionid的cookie携带上作为请求的一部分发送给服务器,服务器就能根据session id到保存session的文件夹下找到特定的文件,读取其中的数据。

»阅读全文

codeigniter在nginx下的url规则导致404错误

很早期写的一个CI页面,CI的版本还在1.7几,当然代码写的也有点乱。在apache下部署没什么问题,后来部署到阿里云的服务器上,就出现了404错误。阿里云环境是: ngnix + php + mysql + CentOS。

对于/index.php/abc这种url,Apache和lighttpd会按”index.php?abc”来解释,而nginx会认为是请求名字是“index.php”的目录下的abc文件的内容。所以CI在nginx下不配置rewrite是无法运行的,而在Apache和lighttpd则正常。

»阅读全文

在CodeIgniter中使用微信开发类库

在CI中国论坛里,Hex老大很早就写了一个微信开发的类库,原文地址:http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=16665

这个类库很简洁,符合CI开发模式,不过功能过于简单,所以要使用一些高级的微信开发接口,推荐使用这个比较收欢迎的微信开发类库: https://github.com/dodgepudding/wechat-php-sdk

不过这个类库不是CI的,需要封装一下,下面讲讲我的封装,封装的有点过度,你可以按照自己的意愿稍加改造。

1.首先git clone https://github.com/dodgepudding/wechat-php-sdk.git 源代码wechat.php,放到CI的library文件夹下;

»阅读全文

CI的captcha替代类库

CI的captcha使用起来不是特别好用,可以用这个替代类库:

»阅读全文

CI的CSRF防范原理及注意事项

首先我们谈谈什么是CSRF,它就是Cross-Site Request Forgery跨站请求伪造的简称。很多开发者甚至不够重视这个问题,认为这不是安全漏洞,而不过是恶意访问而已,它的攻击原理我在这里简单地描述一下:

有一天你打开你简单优雅逼格十足的谷歌浏览器,首先打开了一个tab页,登录并访问了你的微博首页。我们这里假设weibo.cn有这样一个网址: http://www.weibo.cn?follow_uid=123 ,意思是关注id为123的一个用户。这是一个正常的地址,访问也没有问题。
紧接着你的QQ群里发来了一个让你感到好奇的链接,http://www.comeonbaby.com, 你禁不住诱惑打开了这个链接,并在浏览器里的另一个tab页里显示出来。紧接着,你打开你的微博tab页,发现无故关注了一个新的用户。咦,这是为何?

»阅读全文

在CI中加入辨识微信客户端的user agent

在CI中,可以载入user_agent类库,使用此类库判断客户端的浏览器版本、手机型号或者是操作系统等。具体可用如:

$this->load->library('user_agent');
$this->agent->is_mobile();

如果你正在使用CI开发微信接口API,可能需要判断是否是来自微信客户端的请求。

<?php
echo $_SERVER["HTTP_USER_AGENT"];
?>

在iPhone下,返回

»阅读全文