ThinkPHP
code301
后端工程师,目前工作中使用的语言为PHP,Golang,C#
敬畏每一行代码
展开
-
ThinkPHP5之Ajax分页
Ajax分页在项目开发中是一项必备的技能。当我们的数据库数据量比较大的时候使用Ajax分页可以很好的缓解数据库的查询压力。那么Ajax分页如何实现呢?原生SQL分页我们知道需要有偏移量,每页显示的数据条数就可以简单实现。其实Ajax分页原理也一样,当我们在前台点击页码时传递页码在后台,后台进行数据处理即可。本例tp3.2与tp5都适用,话不多说,直接贴代码前端Ajax: {原创 2017-09-30 11:42:28 · 3550 阅读 · 0 评论 -
tp5源码分析之查询构造
1 查询构造器查询构造器,用来在数据库查询中构造SQL语句$builder->__construct()创建构造器,初始化构造器使用的数据库连接对象public function __construct(Connection $connection) { $this->connection = $connection; }$builder->se...转载 2018-02-23 17:39:35 · 1652 阅读 · 0 评论 -
tp5源码分析之模型
1 数据模型数据模型(Model) 主要实现对单个数据表的操作,包括数据表整体操作数据表字段操作数据表的数据操作1-1 数据模型的创建Model->__construct()数据模型的构造函数,创建数据模型对象public function __construct($data = []) { if (is_object($data)) { $t...转载 2018-02-23 17:40:38 · 1985 阅读 · 0 评论 -
tp5源码分析之视图
1 视图对象视图(View),作为(MVC)的一员,代表对输出数据的Web界面组织操作对象。视图可以用来存储模板变量最终调用模板引擎 将(模板变量) 与 (模板文件)解析为输出的Web界面View::instance()单例模式,创建全局唯一的视图对象public static function instance($engine = [], $replace = []) { ...转载 2018-02-23 17:41:33 · 936 阅读 · 0 评论 -
tp5源码分析之模板引擎
1 模板引擎模板引擎,负责将模板变量填充到模板文件中,默认模板引擎实现在\view\Think.php文件中tp5还支持php文件的模板,其接口与Think模板引擎一致。具体见\view\Php.php文件。$think->__construct()模板引擎构造函数,创建模板引擎对象public function __construct($config = []) { ...转载 2018-02-23 17:42:28 · 5407 阅读 · 0 评论 -
tp5源码分析之模板标签库
1 标签库标签库,可以用来自定义模板文件中的标签解析方式在tp5中自定义了内置标签库(Cx.php)$taglib->__construct()标签库构造函数,创建标签库对象public function __construct($template) { $this->tpl = $template; }2 标签库的标签解析2-1 标签库的标签解析标签...转载 2018-02-23 17:43:12 · 2008 阅读 · 0 评论 -
文件MIME类型大全
扩展名:abs MIME类型:audio/x-mpeg 扩展名:ai MIME类型:application/postscript 扩展名:aif MIME类型:audio/x-aiff 扩展名:aifc MIME类型:audio/x-aiff 扩展名:aiff MIME类型:audio/x-aiff 扩展名:aim MIME类型:application/x-aim 扩展名:art MIME类型:i...原创 2018-02-24 17:22:31 · 1439 阅读 · 0 评论 -
thinkPHPsession跨域问题
ThinkPHP的session跨域问题很多开发者都遇到过!其实不管是ThinkPHP还是php本身,在解决session跨域问题的时候都需要设置session.cookie_domain。在ThinkPHP里,需要修改配置文件conf/config.php在第一行加上: ini_set('session.cookie_domain', ".domain.com");//跨域访问Sessi...转载 2018-04-08 12:03:39 · 478 阅读 · 0 评论 -
tp3.2 C方法详解
TP3.2:C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的。ThinkPHP的配置文件采用PHP数组格式定义。由于采用了函数重载设计,所以用法较多,我们来一一说明下。设置参数C('DB_NAME','thinkphp');表示设置DB_NAME配置参数的值为thinkphp,由于配...原创 2018-04-08 15:36:12 · 10212 阅读 · 0 评论 -
thinkphp框架里用linux的crontab写php的定时脚本
在php内curl tp框架的路径就可以了,然后把这个php设crontab 例如:tp的访问地址是http://www.tp.com/index.php?m=admin&c=controller&a=action 写个php,例如tpcrontab.php 内容如下:<?php $url = 'http://www.tp.com/index.php?m=admin...原创 2018-04-09 09:23:19 · 1813 阅读 · 0 评论 -
PHP单例模式和工厂模式用法实例详解
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。单例模式当需要保证某个对象只能有一个实例的时候,单例模式非常有用。它把创建对象的控制权委托到一个单一的点上,转载 2018-03-29 09:54:41 · 1199 阅读 · 0 评论 -
TP5单例模式操作Model
一 丶创建数据库和数据库配置 1. 数据库设计如下SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for users-- ----------------------------DROP TABLE IF EXISTS `users`;CREATE TABLE `users` ( ...原创 2018-05-02 18:38:07 · 2913 阅读 · 1 评论 -
windows下php7.X安装redis扩展以及redis测试使用全过程(phpstudy,wamp,xampp)
一,php中redis扩展安装配置 1, 首先第一点,也是最重要一点是,你要知道你的php版本信息,这会决定你的扩展文件版本。特别需要记住一点的是,redis选择x64或者x86,是以php版本的Architecture是x64或者x86决定的,跟windows操作系统无关的。本例为phpstudy集成环境,使用phpinfo()函数将php版本信息打印出来的结果如下: 在这里,可以清楚的...原创 2018-04-26 17:18:25 · 789 阅读 · 0 评论 -
TP5.0 Redis 单例模式
看到好多面试都问设计模式,我就简单的了解了一下,顺便把之前封装好的Reis做了一次修改.单例模式(SingletonPattern单件模式或单元素模式)单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有以下3个特点:1 . 它必须有一个构造函数,而且构造函数必须为私有2.必须有一个保存实例的静态成员变量3.拥有一个访问这个实例的公共的静态...原创 2018-04-26 17:52:51 · 698 阅读 · 1 评论 -
详解ThinkPHP5 instance的实现
本文主要介绍了ThinkPHP5 instance 的简单实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。希望对大家有所帮助。最近学习 ThinkPHP5,第一次看到 TestClass::instance() 就能创建 TestClass 实例的方法。感到很好奇,翻阅 ThinkPHP 的源代码,大体理解了 它的 设计思想,非常的先进。老规矩,直接上代码:123456789101112...原创 2018-05-11 11:08:20 · 2506 阅读 · 0 评论 -
详解TP3函数之M方法和R方法
本文给大家介绍ThinkPHP3函数详解之M方法和R方法,M方法用于实例化一个基础模型类,而R方法用于调用某个控制器的操作方法。首先给大家介绍ThinkPHP函数详解:M方法M方法用于实例化一个基础模型类,和D方法的区别在于:1、不需要自定义模型类,减少IO加载,性能较好;2、实例化后只能调用基础模型类(默认是Model类)中的方法;3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息;D方...原创 2018-05-11 11:11:08 · 4199 阅读 · 0 评论 -
PHP合并两张(多张)图片
后台框架为ThinkPHP。需求分析,微信分享时需要设置图片尺寸为:400x400,但是系统抓取过来的图片大小为300x400。一 丶遇到的问题第一反应想到的是采用tp框架自带的Image类来进行实现$image = new \Think\Image(); $image->open('./1.jpg');// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg...原创 2018-05-07 17:35:21 · 3947 阅读 · 0 评论 -
PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
抢购、秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等。抢购、秒杀实现很简单,但是有些问题需要解决,主要针对两个问题:一、高并发对数据库产生的压力二、竞争状态下如何解决库存的正确减少("超卖"问题)第一个问题,对于PHP来说很简单,用缓存技术就可以缓解数据库压力,比如memcache,redis等缓存技术。第二个问题就比较复杂点:常规写法:查询出对应商...转载 2018-05-21 14:58:43 · 1001 阅读 · 0 评论 -
tp5源码分析之数据库查询
1 查询对象查询对象(Query)实现基本的查询操作与模型不同的是,查询对象是在数据库的整体上进行操作,所以需要指定数据库表模型针对的数据库中的某个数据表的操作。2 查询操作2-1 增删改查$query->insert()public function insert(array $data, $replace = false, $getLastInsID = false, $sequence...转载 2018-02-23 17:38:21 · 4548 阅读 · 1 评论 -
tp5源码分析之自动加载
1 自动加载自动加载,在php中主要包括命名空间到目录的定位,类名到文件的定位。tp5的自动加载实现在Loader.php中。1 启动自动加载Loader::register()启动自动加载public static function register($autoload = '') { // 注册系统自动加载 spl_autoload_register($...转载 2018-02-23 17:34:07 · 1417 阅读 · 0 评论 -
thinkphp源码讲解——配置管理C函数
这一篇文章,我们主要对thinkphp中的C函数进行一下分析拆解,C函数我个人感觉真的是个非常方便的函数,而且非常的实用,我们看看源码和我自己添加的注释吧:function C($name=null, $value=null) { static $_config = array();//定义一个静态变量,主要作用是存储所有的配置项便于存取 // 无参数时获取所有 if (empty($n转载 2017-09-30 16:34:15 · 565 阅读 · 0 评论 -
thinkphp源码讲解——Model.class.php
M()函数,在thinkphp中主要的作用是实例化模型。源码:function M($name='', $tablePrefix='',$connection='') { static $_model = array();//定义一个静态变量数组, if(strpos($name,':')) {//检测是否存在':',来判断是否指定基础模型 list($class,$name) = ex转载 2017-09-30 16:04:12 · 1344 阅读 · 0 评论 -
ThinkPHP框架安全实现分析
ThinkPHP框架安全实现分析ThinkPHP框架是国内比较流行的PHP框架之一,虽然跟国外的那些个框架没法比,但优点在于,恩,中文手册很全面。最近研究SQL注入,之前用TP框架的时候因为底层提供了安全功能,在开发过程中没怎么考虑安全问题。一、不得不说的I函数TP系统提供了I函数用于输入变量的过滤。整个函数主体的意义就是获取各种格式的数据,比如I('get.')、I('pos转载 2017-10-10 16:45:53 · 518 阅读 · 0 评论 -
webuploader使用详解
近日项目中用到了百度的图片上传插件。有很多人第一次估计不知道应该如何使用,下面详细介绍如何将webuploader引入到项目中:单次支持最大上传300张图片,不得不说功能强大。官网下载地址:http://fex.baidu.com/webuploader/下载下来解压后你会看到如下文件直接将这个文件夹丢在项目中public/admin/webuploader下官网说了我原创 2017-10-10 16:52:27 · 21846 阅读 · 14 评论 -
TP5与TP3.X对比
首先声明本章节并非是指导升级旧的项目到5.0,而是为了使用3.X版本的开发者更快的熟悉并上手这个全新的版本。同时也强烈建议开发者抛弃之前旧的思维模式,因为5.0是一个全新的颠覆重构版本。需要摒弃的3.X旧思想变量接收TP5提供了更为便捷的变量接收方式 “input”URL的变动首先对3.X的不严谨给开发者们带来的不正确的引导表示歉意,在5.0版本正式废除类似原创 2017-10-10 17:47:49 · 337 阅读 · 0 评论 -
比RBAC更好的权限认证方式(Auth类认证)
Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 。 RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显示这个按钮, 如果没有权限就不会显示这个按钮; 再比如我想按积分进行权限认证, 积分在0-100时能干什么, 在101-200时能干什么。 这些权限认转载 2017-11-01 14:52:08 · 1090 阅读 · 0 评论 -
ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录状态)。首先,持久登陆使用 cookie 实现,但是 cookie 中不能保存用户密码这样重要的信息,即使加密过。解决方案是在用户登录表中新建3个字段identifier:第二身份标识,token:永久登录标识,转载 2017-12-11 16:38:13 · 910 阅读 · 0 评论 -
ThinkPHP3.2 Ajax分页
TP官方出过一款内容管理系统,onthink.翻代码发现里面的分页写的真心不错,分享出来大家参考. ---感谢麦当苗儿// +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +----原创 2017-12-15 11:18:41 · 631 阅读 · 0 评论 -
Ajax实现图片上传并预览
效果见尾部。最近在使用ThinkPHP5开发项目中客户有一个需求是在图片上传时附带预览功能。虽然现在有很多的插件能实现,但是还是觉得自己写比较好。我们知道,图片上传需要一个input:file表单当我们点击表单的时候提示选择需要上传的图片。但是此需求我们分析一下,可以在点击图片的时候使用JS实现预览功能,并且楼主也是这样做的。代码如下: function getFileUrl(source原创 2017-09-30 10:40:34 · 107863 阅读 · 11 评论 -
ThinkPHP5 清除runtime缓存文件
代码如下/** * 清除模版缓存 不删除cache目录 */public function clear_sys_cache() {Cache::clear();$this->success( '清除成功', 'index/index' );}/** * 清除模版缓存 不删除 temp目录 */public function clear_temp_ahce() {array原创 2017-12-14 17:48:39 · 9169 阅读 · 8 评论 -
thinkphp下阿里大于短信验证
本方法基于Thinkphp,用到了jquery.validate,当然具体项目中也可以不用,下面我就按步骤来写下来。1.准备1.登陆http://www.alidayu.com,进入网址用淘宝号登陆即可2.进入管理中心3.配置(1)配置短信签名(2)配置短信模板建好后,需要的东西就是转载 2018-01-11 09:42:49 · 462 阅读 · 0 评论 -
ThinkPHP实现阿里云的发送验证码功能
首先就是前面那一套, 1、申请Access Key 2、短信模板及其签名然后我们就可以去官网上下载sdk了 本篇博文我们只讨论我们如何发送验证码下载了Sdk后可以看到有两个sdk , 我们先把api_sdk放到项目的根目录 像这样 在我们需要调用的控制器内的代码如下namespace Home\Controller;use Think\Con转载 2018-01-11 09:30:56 · 655 阅读 · 0 评论 -
thinkphp 下载图片文件打开显示文件过大或损坏的解决方案
方案如下:设置header头public function download($path){ if(is_file($path) && file_exesites($path,$url)){ $length = filesize($path); $type = mime_content_type($path);原创 2018-01-31 17:06:40 · 1689 阅读 · 0 评论 -
tp报错 General error: 1366 Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'name' at row
查找原因发现为页面字符集与数据库字符集不一致导致只需将页面字符集与数据库字符集统一即可原创 2018-02-05 15:02:30 · 2575 阅读 · 0 评论 -
tp5源码分析之网络请求
1 网络请求网络请求对客户端而言,指服务器发起的请求操作。对服务器端而言,指客户端发起的请求信息。服务器端主要用来对客户端发起的网络请求进行处理。2 请求信息2-1 Url相关Request->url()获取当前完整的url(包含QUERY_STRING) public function url($url = null)转载 2018-02-23 17:31:08 · 1606 阅读 · 0 评论 -
ThinkPHP5.0.x框架SQL注入
漏洞简述尽管ThinkPHP 5.0.x框架采用了参数化查询方式,来操作数据库,但是在 insert 和 update 方法中,传入的参数可控,且无严格过滤,最终导致本次SQL注入漏洞发生。ThinkPHP基础知识在进行漏洞分析之前,我们需要了解一下ThinkPHP基础知识,这里仅介绍对本次漏洞分析有帮助的部分。ThinkPHP5.0的 目录结构thinkphp 应用部署目录├─applicati...转载 2018-06-05 13:46:03 · 14107 阅读 · 0 评论