Thinkphp
循序0010
这个作者很懒,什么都没留下…
展开
-
linux,lnmp5环境安装tp5
git clone https://github.com/top-think/think tp5cd tp5 && checkout mastergit clone https://github.com/top-think/framework thinkphpcd thinkphp && checkout master此时正常情况下可访问。若访问不了,先...原创 2020-01-10 14:49:08 · 400 阅读 · 0 评论 -
setInc 和 setDec 用于统计字段,数据数字类型 更新操作
统计字段(通常指的是数字类型)的更新,ThinkPHP中有 setInc和setDec方法。$User = M("User"); // 实例化User对象$User->where('id=5')->setInc('score',3); // 用户的积分加3$User->where('id=5')->setInc('score'); // 用户的积分加1$User->where('id=5转载 2015-08-20 09:49:44 · 3932 阅读 · 0 评论 -
Thinkphp 几个调试配置,常量设置项
Thinkphp 几个调试配置,常量设置define('APP_DEBUG',True);'SHOW_PAGE_TRACE' =>true 设为true显示跟踪信息'MODULE_ALLOW_LIST' => array('Admin','Home'), // 允许访问的模块列表'DEFAULT_MODULE' => 'Home', // 默认原创 2015-09-15 23:18:33 · 477 阅读 · 0 评论 -
Thinkphp 加载类库import()方法
//实例一<?php class CommonAction extends Action{ public function _initialize(){ import('ORG.Util.Auth');//加载类库 $auth=new Auth(); if(!$auth->check(MODULE_NAME.'-'.ACTION_NAME,se原创 2015-10-05 22:11:11 · 1464 阅读 · 0 评论 -
Thinkphp 控制器内初始化方法_initialize 及前置后置方法
定义了该初始化方法后,无论执行该控制器的其他方法,都会首先执行一次_initialize()方法。namespace Home\Controller;use Think\Controller;class IndexController extends Controller{ // 初始化方法 public function _initialize(){原创 2015-10-07 16:12:48 · 9094 阅读 · 0 评论 -
区别Think/Controller redirect 和函数redirect()
ThinkPHP还可以实现直接重定向操作,Think\Controller类提供了redirect方法实现页面的重定向功能。重定向到操作:redirect('重定向操作地址(一般为[控制器/操作])','参数(字符串或者数组)','重定向等待时间(秒)','重定向提示信息')$New = M('New'); //实例化New对象$result = $New->add($data);原创 2015-10-07 16:44:09 · 1391 阅读 · 0 评论 -
Thinkphp 函数G 获取运行脚本内存和运行时间
G方法的作用包括标记位置和区间统计两个功能,下面来看下具体用法:运行时间统计:G('begin'); // ...其他代码段G('end'); // ...也许这里还有其他代码 // 进行统计区间echo G('begin','end').'s';G('begin','end') //表示统计begin位置到end位置的执行时间(单位是秒),begin必须是一个已经标记过的位置,转载 2015-10-07 17:07:39 · 4793 阅读 · 0 评论 -
Thinkphp 动态查询 getBy 与 getFieldBy
核心模型的动态查询方法包括下面几种:方法名说明举例getBy根据字段的值查询数据例如,getByName,getByEmailgetFieldBy根据字段查询并返回某个字段的值例如,getFieldByName一、getBy动态查询该查询方式针对数据表的字段进行查询。例如,User对象拥有id,name,e原创 2015-10-06 16:32:22 · 1570 阅读 · 0 评论 -
Thinkphp 模块设置 及应用目录修改
模块设置:在Thinkphp框架中如果要添加一个后台Admin 模块,则需在入口文件define('APP_PATH','./Application/');// 绑定入口文件到Admin模块访问define('BIND_MODULE','Admin');require './ThinkPHP/ThinkPHP.php';通过常量BIND_MODULE来定义即可。BIND_MO原创 2015-10-06 14:09:22 · 6329 阅读 · 0 评论 -
获取某个字段值getField 和 设置某个字段值setField
若只需要查询某个字段的值,还可以使用getField方法,例如:$Form = M("Form"); // 获取标题 $title = $Form->where('id=3')->getField('title');//表示获取id值为3的数据的title字段值。其实getField方法有很多用法,但是获取某个字段的值是getField方法最常规的用法。 若只需要修改某个字段的值,就可原创 2015-10-06 15:17:50 · 7018 阅读 · 0 评论 -
TP 页面跳转success 和 error
TP 系统的\Think\Controller类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交。$User = M('User'); //实例化User对象$result = $User->add($data); if($result){ //设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']转载 2015-09-04 13:50:22 · 24748 阅读 · 2 评论 -
Thinkphp 之 A方法 和 R方法 实例化控制器
A方法用于在内部实例化控制器,调用格式:A('[项目://][分组/]模块','控制器层名称')$User = A('User');//表示实例化当前项目的UserAction控制器R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充。R方法的调用格式:R('[项目://][分组/]模块/操作','参数','控制器层名称') class UserAction exten原创 2015-10-07 17:01:45 · 3833 阅读 · 0 评论 -
Thinkphp 提供ajax方法 ajaxReturn 方法
Thinkphp系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、JSONP、XML和EVAL四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。默认配置采用JSON格式返回数据。可通过配置DEFAULT_AJAX_RETURN进行设置,也可在调用时,第二个参数指定。注:JSON是一种数据交换格式,而JSON原创 2015-10-08 15:44:31 · 2812 阅读 · 0 评论 -
取得数据库某个表的最大id 可以用以下方法
方法1:如果是使用Thinkphp 框架的话,用一下代码即可:$max_id = $model ->max('id');方法2:如果是纯粹的数据库操作,使用以下sql语句:2-1 : select MAX('id') from table;2-2 : select id from table order by id desc limit 1;原创 2015-09-20 19:19:56 · 4279 阅读 · 0 评论 -
Tp中的多层控制器和多级控制器使用
多层控制器的目录结构是这样的:├─Controller 访问控制器│ ├─UserController.class.php │ ├─BlogController.class.php│ ...├─Event 事件控制器│ ├─UserEvent.class.php │ ├─BlogEvent.class.php│ ...给App应用添加多层控制器,不需添加任何参数原创 2017-03-17 17:54:46 · 2748 阅读 · 0 评论 -
汇总一下tp5 知识点
原生sql执行Db::query('select * from think_user where id=?',[8]);Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);多个数据库连接:Db::connect($config)->query('select * from th...转载 2019-04-02 15:48:05 · 584 阅读 · 0 评论 -
ThinkPHP 中 获取最后一次执行sql语句 和变量调试
ThinkPHP中获取最后一次执行sql语句的 方法有两种:其一是 调用模型 获取 如,$sql = $model ->getLastSql();Thinkphp中Model类,有getLastSql这个函数,甚至还有,getLastInsID,getDbError,getError,getPk,getDbFields等函数。这些函数都是我们经常可能会用到的model层的函数。其二原创 2015-09-04 11:36:19 · 14299 阅读 · 0 评论 -
Thinkphp 模型与表名定义
数据表定义在ThinkPHP的模型里面,有几个关于数据表名称的属性定义:属性说明tablePrefix定义模型对应数据表的前缀,如果未定义则获取配置文件中的DB_PREFIX参数tableName不包含表前缀的数据表名称,一般情况下默认和模型名称相同,只有当你的表名和当前的模型类的名称不同的时候才需要定转载 2015-09-04 09:42:50 · 10000 阅读 · 0 评论 -
TP 框架中 获取变量 I()方法
ThinkPHP 中 I() 是获取变量值,可以通过这个方法,对变量进行验证,从而保证了数据的可靠性。I('变量类型.变量名/修饰符',['默认值'],['过滤方法'],['额外数据源'])变量类型是指请求方式或者输入类型,包括:变量类型含义get获取GET参数post获取POST参数转载 2015-09-03 22:44:13 · 23973 阅读 · 0 评论 -
模型实例化M和D的区别
M()实例化方法 -----new Model() 等效。D()实例化方法 -----new 自定义模型类 ,等效。如没有参数,则实例化Model基础类。具体区别:D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。D方法可以自动检测模型类,如果存原创 2015-07-27 14:21:26 · 1959 阅读 · 0 评论 -
TP中cache方法使用
cache可以用于select、find和getField方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。例如,我们对find方法使用cache方法如下:$Model = M('User');$Model->where('id=5')->cache(true)->find转载 2015-07-27 21:59:07 · 13722 阅读 · 2 评论 -
TP中的快捷查询
快捷查询方式是一种多字段查询的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如:一、不同字段相同的查询条件$User = M("User"); // 实例化User对象$map['name|title'] = 'thinkphp';// 把查询条件传入查询方法$User->where($map)->se转载 2015-07-28 21:04:19 · 589 阅读 · 0 评论 -
TP开启令牌验证
开启令牌验证保证数据表单提交数据只能提交一次,有效防止表单的重复提交等安全防护。这就保证了提交数据的唯一性。在Tp中,其原理是系统会自动在带有表单的模板文件里面自动生成以TOKEN_NAME为名称的隐藏域,其值则是TOKEN_TYPE方式生成的哈希字符串,用于实现表单的自动令牌验证。这样表单每次提交就要被验证是否带有这个值。从而保证了数据提交的唯一性。要启用表单令牌功能,需要配置行为绑定,在应转载 2015-08-08 09:07:52 · 5033 阅读 · 0 评论 -
TP框架中,对数据的过滤函数
首先,了解一下php函数,strip_tags() 剥去字符串中的 HTML、XML 以及 PHP 的标签。例子 1剥去字符串中的 HTML 标签,但允许使用 标签:<?phpecho strip_tags("Hello world!","");?>结果:Hello world!而在TP框架中,有这样的两个函数,field,和filter 分布原创 2015-07-28 20:39:32 · 8433 阅读 · 3 评论 -
TP框架中隐藏的预处理函数,前置钩子
在tp框架中,隐藏着这样一个函数,叫前置钩子。在比较低版本的手册上,很少提及这种类型的函数。但在其源码中,可以找到这样的函数,位置是在ThinkPHP\Library\Think目录Model.class.php 类 ,其中的一个修改或是添加函数add ,找到其最后的代码可以看到如下的代码设计:同样,其他的方法中,也有类似的函数,比如,前置钩子(_be原创 2015-07-29 14:56:30 · 3843 阅读 · 0 评论 -
TP中用D方法创建了模型后,为何调用不了creat,add等方法??!
在TP框架中,若出现creat ,add等方法,应从两方面考虑:第一,是否有引入正确的命名空间;第二,实例化的表名是否正确。拓展:来自:http://www.ithao123.cn/content-3014378.htmlD()与M()方法中,表名的设置注意:使用 D()方法比直接使用模型类更加的智能,如果在HomeModelUserModel 找不到该模型原创 2015-07-29 10:23:05 · 4453 阅读 · 0 评论 -
TP框架上传图片时报错“非法上传"处理
TP框架上传图片时报错“非法上传"处理,主要注意以下两点:1.$_FILES中有多个上传域问题,所以针对不同的上传域,区别命名;2.如同个上传域中有一些没有上传图片,则要重新收集好上传的信息(收集成非空的一维数组);具体代码如下;第一种情况:if($this->_hasImg()) { // 只上传表单中name叫做jqimg的图片 $info =原创 2015-08-10 22:36:48 · 8768 阅读 · 0 评论 -
TP中可通过字段映射隐藏数据表的字段名
在ThinkPhP中,我们可以通过TP提供的一个关键字$_map来达到隐藏我们数据库中表的字段名的效果。假设我们的User表里面有username和email字段,我们需要映射成另外的字段,定义方式如下:例子如下:namespace Home\Model;use Think\Model;Class UserModel extends Model{ protected $_m转载 2015-07-30 06:59:19 · 3300 阅读 · 0 评论 -
TP框架中的自动验证功能$_validate
Thinkphp 中$_validate 关键字是在模型中定义的自动验证数据的功能。验证的规则可以是进行数据类型、业务规则、安全判断等方面的验证操作。数据验证有两种方式:静态方式:在模型类里面通过$_validate属性定义验证规则。 动态方式:使用模型类的validate方法动态创建自动验证规则。 无论是什么方式,验证规则的定义是统一的规则,定义格式为:array(原创 2015-07-30 16:25:36 · 31238 阅读 · 3 评论 -
基于角色的权限控制 - RBAC
实现步骤:一 、数据库字段设计:大体可分为三个数据表(权限表,角色表 和 管理员表),在角色表中有权限id列表字段,这个字段可再细分(也就是说可以和管理员表的id字段组成另一个表)。权限表字段包括:id,权限名称,模块名称,控制器名称,方法名称,父级id,level字段(为了实现树状结构),全路径字段(和id连接,实现相同父级的id排序一起)。角色表字段包括:id,角色名称 和 角原创 2015-08-02 08:44:58 · 5582 阅读 · 1 评论 -
TP上传文件图片总结
注意上传文件表单的设置:下面是一个带有附件上传的表单提交:enctype="multipart/form-data" method="post" >实现案例:ThinkPHP文件上传操作使用Think\Upload类,假设前面的表单提交到当前控制器的upload方法,我们来看下upload方法的实现代码:public function upload(){ $uploa原创 2015-08-03 09:05:51 · 8401 阅读 · 0 评论 -
字符串转成整数方法
$a = '234';1) 强制类型转换: (整型)字符串变量名;eg : $a= (int)$a;2) intval(字符串变量);eg : $a= intval($a);3) 直接转换:settype(字符串变量,整型);eg : settype($a , 'int');原创 2015-08-15 23:36:48 · 1197 阅读 · 0 评论 -
商品分类实现无限级
商品分类实现无限级分类。第一步必须获取到所有的分类数组(从数据库中查找获得);第二步建立索引这数组下的所有父级ID。在TP中代码如下:public function category($data ,$parent_id=0,$level=0){ static $arrt = ' '; foreach($data as $k=>$v) { if($v['parent原创 2015-08-03 09:00:51 · 1863 阅读 · 0 评论 -
TP实现首页静态方法
在Thinkphp 中 ,默认的规则 : 某个控制器:方法名 的方式 来实现页面静态化。在配置文件中加入以下代码:'HTML_CACHE_ON' => true, // 开启静态缓存 'HTML_CACHE_TIME' => 60, // 全局静态缓存有效期(秒) 'HTML_FILE_SUFFIX' => '.html', // 设置静态缓存文件后缀 'HTML_CACH原创 2015-08-16 10:49:41 · 1733 阅读 · 0 评论 -
利用ajax获取商品价格
// 根据当前登录用户计算商品的会员价格 public function ajaxGetMemberPrice($goods_id) { // 如果登录了就计算 if(session('?mid'))//判断session中有无mid,是tp自带的一种验证方法 { $rate = session('rate') / 100; $level_id = session('l原创 2015-08-17 08:56:30 · 1163 阅读 · 0 评论 -
TP中写操作数据的收集方法
TP框架中,向数据库写的操作有多种,但要注意一点就是,调用这些方法,都是模型对象!第一种操作:create()$Model = D('User');$Model->create(); // 这里略过具体的自动生成和验证判断$Model->add();第二种操作直接对数据对象赋值,例如:$Model = M('User');$Model->name = '流转载 2015-07-27 14:49:00 · 497 阅读 · 0 评论