thinkphp

ThinkPHP中实现gzip压缩

ThinkPHP中似乎没有对gzip的配置选项。不过实现起来还是挺简单的。以下是对 ThinkPHP 2.1 的修改方法。 首先要确定空间是否支持Zlib, 然后找ThinkPHP的控制输出函数output()。 控制输出的文件在 ThinkPHP/Lib/Think/Core 文件夹下,文件名 View.class.php。

ThinkPHP示例之 字段映射

要使用模型的自动创建create方法的话,ThinkPHP的表单名称就是数据表的字段名称,如果担心这样不够安全,可以定义字段映射,来隐藏实际的数据表字段名称。 下面的例子就运用了字段映射定义。请注意看表单名称和字段的对应关系。 标题: 邮箱: 内容: 验证码: 输入对应的数字 示例源码 控制器IndexAction类 模型 FormModel 类

ThinkPHP的html:list标签简要用法及注意事项

<html:list id="checkList" name="user" style="list" checkbox="true" action="true" datasource="list" show="id:编号|8%,title:标题:edit,content:内容,create_time|toDate='Y-m-d H#i#s':添加时间,status|getStatus:状态" actionlist="forbid|resume:禁用|恢复,edit:编辑" /> ThinkPHP的html标签库中的list标签功能强大,但没有文档.只好看源码了. 大概如下: datasource和show必须要, datasource是数据源名称, 也就是assign所指向的变量, show是最复杂的, 等会再讲 pk是主键名, 默认为id;style是css样式的class, 因为整个list标签会被编译成table, 比如这里为mylist, 那么样式表中的table.mylist样式就会用在这; checkbox是否显示复选框; action是否显示操作列 s...

ThinkPHP与RBAC(基于角色的权限管理)

访问控制可以简单表述为:判断谁(Who)对什么(What/Which)进行怎样(How)的操作是否为真。对于一个系统来说,有必要建立一个良好的访问控制系统,对访问权限进行合理的分配,用于保证系统的安全性、可靠性。 传统的访问控制技术主要有:自主访问控制(DAC)、强制访问控制(MAC)和基于角色的权限访问控制(Role Based Access Control,简称RBAC)。 DAC和MAC访问控制技术均是直接对用户本身进行权限的管理,细度太小。当用户数量庞大并且用户之间关系复杂时,主体和客体关系的匹配及权限的管理就变得复杂起来。并且权限的变更将导致权限分配列表的变更,此时可能会遭遇到很大的困难,甚至于要修改系统的源代码。 而RBAC访问控制技术很好地解决了这一问题。在RBAC中,用户的权限不是在用户本身上进行管理的,用户的权限是由用户所处的角色所决定的。在权限管理中,通过角色这一桥梁将用户与权限联系起来。用户和角色、角色与权限是一个多对多的关系。 与RBAC访问控制相关的概念有: 用户(User):一个具有唯一标识符的用户,与权限相分离,只能通过所属的R...

为ThinkPHP添加web services

给ThinkPHP应用程序添加web services,首先需要启动soap模块,这里仅需要修改php.int文件即可,extension=php_soap.dll 接着编写服务类。这里单独建立一个Webserver文件夹,把所有的web服务类都放置在里面。这样做的好处不言而喻,一方面为了组织的方便,另一方面可以实现团队协作开发,相互之间不会有过多影响。如下图所示: 在Webserver文件夹下面,我们可以编写各种业务逻辑代码,这里仅是演示之用,所以非常简单。当然了,你还可以在里面实现更为复杂的逻辑。 现在,我们就可以实现web服务端了。在IndexAction.class.php文件里面编写一段web服务端代码,启动web服务。 接着,我们在web客户端编写一小段代码,就可以获取提供的web服务了。 现在你在浏览器上就可以查看到 PrintHello 输出的内容了。

Thinkphp Left Join/Right Join 实例

第一个表为Comment表,第二个表为Reply表, MYSQL上测试语句为:select a.*,b.* from comment a left join reply b on a.id=b.cid //Left Join $Blog->table('comment a')->join('reply b on a.id=b.cid')->field('a.*,b.*')->order('id desc')->limit('8')->findall(); //Right Join $Blog->table('comment a')->join(array('right','reply b on a.id=b.cid'))->field('a.*,b.*')->order('id desc')->limit('8')->findall();

Thinkphp htaccess rewrite的问题

我的网站Thinkphp配置URL_MODE为2, 传到服务器就出现这样的错误,无论进什么页面都会跳转到首页. htaccess文件的配置如下: 后来发现问题出现在Apache的版本上,好像不同版本对rewrite的解析不一样。 修改htaccess如下后,工作正常:

ThinPHP中Join实用举例

这里使用了两个表,第一个表为Post表,第二个表为Category表。 MYSQL语句为: ThinkPHP中Join的写法: 如果你在ThinkPHP中设置了表的前缀,那么在写Join的时候,表名也要加上前缀。

ThinkPHP 2.0 多语言使用Bug

项目中使用到了thinkphp2.0的多语言功能,发现一些bug 语言配置如下: 在Lang目录下创建en-us,zh-cn,zh-tw目录 ThinkPHP使用$_SERVER['HTTP_ACCEPT_LANGUAGE']来自动检测浏览器支持语言, 然后保存到cookie中,并读取相应的语言包。 这里有两个问题: 1. 浏览器的返回值的大小写不同, 如Firefox:en-us, 谷歌chrome:en-US 返回值是小写的时候没有问题,大写的时候(chrome)就会产生找不到语言包的情况。 2. 浏览器的支持语言不存在的时候,也会产生找不到语言包的情况。 比如说有的浏览器返回值是 en-gb 解决办法如下, 打开/ThinkPHP/Lib/Think/Core/App.class.php文件,查看checkLanguage()函数,找到: 替换以上代码为: 修改完成后,一定记得清除/Runtime/~runtime.php文件,然后清除浏览器的cookie,刷新页面,一切就都正常了。...

Thinkphp中表关联HAS_ONE和BELONGS_TO的区别

HAS_ONE(或HAS_MANY):外键在子关联对象中 例子: 父关联对象表: product_id product_name 子关联对象表: image_id image_name product_id 外键是:product_id BELONGS_TO:外键在你父联对象中 父关联对象表: product_id class_id product_name 子关联对象表: class_id class_name 外键是:class_id