ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
开源的在线编辑器有很多,比如FCKEditor,UEditor,Kindeditor等,调用方式也都大同小异下面列举UEditor在线编辑器插件在ThinkPHP里面的应用1、Ueditor下载地址:
public function getapiSignature(){$access_token=S('access_token');//先查询缓存中是否存在if($access_tok
前述两篇文章“使用BootStrap制作用户登录UI”和“使用BootStrapValidator来完成前端输入验证 ”已经将用户登陆的界面和验证进行了实现,现在看看后端要做的事情(基于ThinkPH
由于用惯了ThinkPHP之前的版本,一想到要用Session就直接用$_SESSION来存取,今天看了ThinkPHP5的手册,才发现原来这么用时不安全滴。ThinKPHP5对Session进行了封
今天访问自己的网站的时候(by thinkphp),突然发现身份验证失效了,Session无法跨页,而且登陆的时候总是提示验证码错误(验证码也是通过Session传递的),才意识到可能是Session
我们已经了解了ThinkPHP中的S方法的用法,F方法其实是S方法的一个子集功能,仅用于简单数据缓存,并且只能支持文件形式,不支持缓存有效期,因为采用的是PHP返回方式,所以其效率较S方法较高,因此我们也称之为快速缓存方法。 F方法的特点是: 简单数据缓存; 文件形式保存; 采用PHP返回数据…
M方法用于实例化一个基础模型类,和D方法的区别在于: 1、不需要自定义模型类,减少IO加载,性能较好; 2、实例化后只能调用基础模型类(默认是Model类)中的方法; 3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息; D方法的强大则体现在你封装的自定义模型类有多强,不过随着新…
上一篇中,我们了解了ThinkPHP的基础部分,以及如何创建一个控制器和模板,并知道了M方法的用法,本篇将会讲解下数据的CURD操作,探索下更多的数据操作。 CURDCURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。它代表创建(Create)、更新(Update)、读取(Re…
预定义常量常量 说明 URL_COMMON=0普通模式 URLURL_PATHINFO=1PATHINFO URLURL_REWRITE=2REWRITE URLURL_COMPAT=3兼容模式 URLHAS_ONE=1HAS_ONE 关联定义 BELONGS_TO=2BELONGS_TO 关联定义 HAS_MANY=3HAS_MANY 关联定义 MANY_TO_MANY=4MANY_TO_MANY 关联定义 THINK_VERSION框架版本号 这些预…
本篇我们来全面了解下如何在ThinkPHP开发过程中进行调试工作。 调试模式说到调试,我们可能第一个想到的就是调试模式,没错,ThinkPHP也有专门为开发过程而设置的调试模式,ThinkPHP的调试模式与众不同,会牺牲一定的执行效率,但带来的方便和除错功能非常值得。 我们强烈建议ThinkPHP开发人…
L方法用于启用多语言的情况下,设置和获取当前的语言定义。 调用格式:L('语言变量'[,'语言值']) 设置语言变量 除了使用语言包定义语言变量之外,我们可以用L方法动态设置语言变量,例如:L('LANG_VAR','语言定义');语言定义不区分大小写,所以下面也是等效的:L('lang_var','语言定义');不…
3.0版本的Widget对Action和View的支持力度是不够的,虽然能够实现基本的模板渲染输出。3.1版本的发布带来的多层MVC功能,给我们实现Widget的方式带来了新的思路,且看是如何实现吧。 看过ThinkPHP3.1新特性详解:多层MVC的朋友们一定了解,3.1版本可以支持多层的控制器功能,因此我们可以在控…
今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置。 where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在…
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。 验证规则数据验证可以进行数据类型、业务规则、安全判断等方面的验证操作。 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则。 动态方式:使用模型类的v…
U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为: U('地址','参数','伪静态','是否跳转','显示域名'); 在模板中使用U方法而不是固定写死URL地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码。 在模板中的…
ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来。 1、用于查询在查询操作中field方法是使用最频繁的。$Model->field('id,title,content')->select();这里使用field方法指定了查询的结果集中包含id,title,content三个…
limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多。ThinkPHP的limit方法可以兼容所有的数据库驱动类的。用法限制结果数量例如获取满足要求的10个用户,如下调用即可:$User=M('User'); $User->where('status=1')->fiel…
本篇我们来学习如何在ThinkPHP中使用变量和对变量进行过滤。 在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了。 如果你使用的是3.1.3以上版…
在这个网络安全漫天飞的年代,验证码功能起码能算是一个值得信赖的好卫兵了。本篇我们就来讲下如何在ThinkPHP中使用验证码功能。 获取扩展类库ThinkPHP的扩展中由图像处理类Image以及用于生成随机验证码的字符处理类String共同完成验证码功能,可以在在http://www.thinkphp.cn/extend/225.htm…
在这个网络安全漫天飞的年代,验证码功能起码能算是一个值得信赖的好卫兵了。本篇我们就来讲下如何在ThinkPHP中使用验证码功能。 获取扩展类库ThinkPHP的扩展中由图像处理类Image以及用于生成随机验证码的字符处理类String共同完成验证码功能,可以在在http://www.thinkphp.cn/extend/225.htm…
N方法属于计数器方法,被用于核心的查询、缓存统计的计数和统计。但是其实可以用于应用的其他计数用途,用法比较简单,调用格式: N('计数位置'[,'步进值']) 例如,我们要统计页面中的查询次数,可以用N('read',1);表示每次执行到该位置都会引起计数器加1,到页面结束之前,我们就可以用$coun…
ThinkPHP的模板引擎内置了布局模板功能支持,可以方便的实现模板布局以及布局嵌套功能。 有三种布局模板的支持方式: 第一种方式:全局配置方式这种方式仅需在项目配置文件中添加相关的布局模板配置,就可以简单实现模板布局功能,比较适用于全站使用相同布局的情况,需要配置开启LAYOUT_ON …
默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎。内置模板引擎支持模板文件中采用php原生态代码和模板标签的混合使用。 ThinkPHP官方开发文档说,这种默认的内置模板引擎的性能是高效的,但还不是最佳的。要使模板引擎的性能达到最佳效率,就要使用PHP本身作为模板引擎。 使用PHP…