thinkphp5.1、thinkphp6】的更多相关文章

下载原装:https://packagist.org/packages/topthink/think composer create-project topthink/think tp 6.0.*-dev 文档地址 5.1取消了所有的系统常量 5.1新特性 容器.门面.中间件 控制器支持模型的依赖注入 //需要use user的命名空间public function demo(User $user){ $user->db()->find(uid:); } aplication 目录变为app…
我们都知道ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架. ThinkPHP6主要更新了什么呢? 1. 支持PHP最新的强类型 2. PSR开发规范得了更广泛的应用 3. 对Swoole支持得到了优化与提升 4. 支持更多的IDE编辑器友好提示 5. 对原生的语法进行大量的精简 初学者要一步一步来 初学者千万不要想一步到位学会ThinkPHP5.1和6.0 因为针对这些版本没有适合初学的教程 初学者适合学习ThinkPHP5.0入门实例教程 学会了5.0再转5.1和…
首先是同步上传,最为基础的上传的方式,点击表单提交之后跳转那种.如下前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上传文件</title> </head> <body> <form action="upload" enctype="m…
Thinkphp5图片上传正常,音频和视频上传失败的原因及解决 一.总结 一句话总结:php中默认限制了上传文件的大小为2M,查找错误的时候百度,且根据错误提示来查找错误. 我的实际问题是: 我的表单中有多个input:file且name字段都是n_content 这种情况会发生覆盖现象,总是以最后一个为准 1.上传时错误代码是4表示什么? UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功 UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 u…
nginx+php7环境,opcache已经开启,每测试一个框架都重启服务器并且预热访问三次,压测工具ab.exe. laravel,thinkphp,yii都已关闭debug,该做的优化命令都搞了,它们输出的view都是相同的,不要怀疑哥的水平. 下面上图: 一.原生php 二.thinkphp5 三.yii2 四.laravel5.1 ps:勿喷. 点击下载自动压测脚本 下载后把后缀 .sh 去掉,此脚本用php编写而成,所以必须要php.exe解析. 个人公众号谢谢各位老铁支持 本人qq群…
往届回顾-2018:PHPCon 2018链接: https://pan.baidu.com/s/17nfrfqk9K4vwKPAsjBVW7A——提取码:rjbr 随着PHP7的诞生,兼顾了高性能和开发效率,鸟哥的演讲和对PHP内核的理解,自然是我们最关注的议题.Swoole也是近年来,使用PHP进行高性能Server后台开发的利器.随着PHP7和Swoole的广泛使用,给整个Web界带来强烈的技术红利.在国内包括BAT等各大互联网公司的推动下,经过不断海量考验,围绕PHP7的社区化,会更加稳…
此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本.这些漏洞挖掘出来的时候已经在cnvd被提交过了.但是网上并没有漏洞文章.避免风险这里只分享思路. 通过fofa搜一下,大概两百多个独立IP 还不错,这个后台一般是个弱口令 admin admin 登录后可以查看到,具体thinkphp版本,这个对版本要求比较高,6.05以后好像就修复了.因为太明显了所以厚码,见谅. 这后台可以getshell原因是因为此处模板管理可以添加一个html页面,这里…
由于用惯了tp3.2,改用tp5有些还是感觉别扭的 直接上问题:项目中需要用到引入公共导航.头部.底部.右边部分等等 首先要弄清楚thinkphp5的配置项是哪个文件,众所周知:config.php,如下图所示 只需要在配置项里配置里如下内容即可 ‘template‘ => [ // 模板引擎类型 支持 php think 支持扩展 ‘type‘ => ‘Think‘, // 模板路径 ‘view_path‘ => ‘‘, // 模板后缀 ‘view_suffix‘ => ‘htm…
本文讲述如何在thinkphp5中完成登录并保存session.然后根据不同的用户权限跳转相应页面功能的实现.我也在学习thinkphp源码的路上,记录一下并与大家分享.完成该步骤主要有以下三个步骤完成. 一.密码校验 这里view层提交过来的用户名和密码是不加密的,数据中的密码是经过md5加密的,所以首先对密码进行加密,然后跟数据库中的记录比对,如果一致则认为成功. 二.session保存 如果校验成功则将用户信息保存在session中. 三.根据不同权限跳转 有时候我们对于不同的用户展示的页…
记录下thinkphp5自定义底层基类.内部类函数使用笔记 大部分笔记来自tp手册. 底层常用代码的封装 在控制器中基类的起着至关重要的作用,整个项目的代码安全,复杂程度,易读性都要看你项目的基类架构的. 比如api中都需要某一个功能函数,我们就可以写在基类里. 贴上一个基类返回错误码的例子: <?php namespace app\member\controller; class Base extends \app\base\controller\Base { static public fu…
tp5访问入口文件的时候是,访问public目录下的index.php,那么她真正访问的url到底是什么?如何去访问其他页面,实际上她默认使用的PATH_INFO模式进行访问. PATHINFO模式 想想在我使用tp3.2的时候,也是利用的path_info去访问,再往前刚接触的php的时候,我们写的php脚本访问的时候就是按照文件位置去访问的对应url,例如http://localhost/test/a/b/c.php,确实这种就是普通的路由访问,直接按照url去找你对应文件夹下的php然后执…
ThinkPHP5有关联模型的操作,但有部分初学者对数据表中常见的几种表与表的关系还存在着问题,所以使用不好关联查询. 这里将hasOne.hasMany.belongsTo进行一个详细举例说明. 首先,这3个的大致中文意思: hasOne:有一个,加上主谓语应该是 ,A 有一个 B hasMany:有很多,A 有很多 B belongsTo:属于, A 属于 B 这里我们准备3张表来理解他们的关系: user_group 用户分组表:id.title user 用户表:id.user_grou…
最近初步接触redis,结合thinkphp5与redis,写了一个用户注册的基础例子,用于学习. 这个例子是结合了兄弟连的redis视频,最后两节的内容写的:https://study.163.com/course/courseMain.htm?courseId=265010 这个例子实现了以下功能: (1)用户注册(2)用户登陆(3)redis+thinkphp5的数据的增加,修改,删除(4)redis翻页功能(5)用户的关注列表+粉丝列表 案例需要搭建的环境需求:(1)thinkphp5(…
环境 linux  memcached1.5.9 (memcached安装在虚拟机192.168.70.164) wampserver集成环境 thinkphp5 php7 步骤一:linux安装memcached 1.Linux系统安装memcached,首先要先安装libevent库. 2.源码安装 wget http://memcached.org/latest 下载最新版本 tar -zxvf memcached-.x.x.tar.gz 解压源码 cd memcached-.x.x 进入…
背景: 现在写接口服务应用有一个很通用的需求,想通过日志.或者监控的形式监测的接口的运行情况,比如耗时.请求参数.响应结果.和前端联调接口时或者排查线上问题时日志必不可少,特别是现场日志. 应用运行时抛出异常时如何处理记录对应的日志. 统一处理及在一个地方一起处理异常及日志 以前开发喜欢在控制器方法内捕获异常及记录相关的异常日志…
首先下载SDK包可以在 官网下载,或者在项目根目录使用composer . composer require baidubce/bce-sdk-php 压缩包里面有五个文件,实际运用到只有两个,然后放在extend文件目录下 在需要使用的控制器进行引入 //如果是用composer 引入的直接use就可以了 :use BaiduBce\Services\Bos\BosClient; //如果使用的压缩包:include_once './extend/BaiduBce.phar';//下面是文件结…
1.is_dir():检查指定的文件是否是目录 2.scandir():返回指定目录中的文件和目录数组 3.unlink():删除文件,如果删除的文件不存在会报错,加@抑制报错 public function del(){ if(request()->isAjax()){ $file = iconv('UTF-8','GB2312',urldecode(input('file'))) if(is_dir($file)){ $arr = scandir($file);//列出$file目录中的文件…
显示文件用到的函数有 1.urlencode($str):编码URL字符串,便于将字符串编码并将其用于URL的请求部分 2.urldecode($str):解码已经编码的URL字符串,返回解码后的字符串 3.iconv('GB2312','UTF-8',$str):将字符串$str,编码由GB2312转变为utf-8:解决中文乱码 4.file_exists($path):检查文件或目录是否存在,$path规定要检查的路径 5.stripos($str,$find,$start):查找$find…
在php.ini文件中  打开  php_openssl扩展,去掉前面的;extension=php_openssl.dll 在phpstudy的WWW目录打开cmd,输入composer create-project topthink/think tp 6.0.*-dev  按回车键开始安装. 如图  出现success安装成功 注意事项,如果已经安装了tp5的同学,需要把tp的文件夹名字改成tp5,因为新创建的tp6文件名为tp,避免冲突 在新安装的tp6目录下执行cmd命令 php thi…
cookie跨域: //config/cookie.php return [ //... //仅7.3.0及以上适用 'samesite' => 'None', //是否加密cookie值,false为不加密 'aeskey' => '1234' ]; //thinkphp/library/think/Cookie.php <?php // +---------------------------------------------------------------------- //…
sudo apt-get update 安裝Nginx https://www.vultr.com/docs/setup-nginx-rtmp-on-ubuntu-14-04 安裝完成後,Nginx的安装在/usr/local/nginx底下 安裝PHP sudo apt-get install php5-fpm 修改PHP設定檔/etc/php5/fpm/php.ini,找到cgi.fix_pathinfo=1,將其值改為0: cgi.fix_pathinfo= 如此PHP的只會處理確切位置的…
public function download($currdir = null){ $file = urldecode($currdir); $file = iconv('UTF-8', "GB2312", $file); if (!file_exists($file)) { $this->error("文件不存在"); } //basenamecn 是common文件自定义的方法 $filename = basenamecn(iconv('GB2312',…
public function edit(){ $file = iconv('UTF-8','GB2312',urldecode(input('file'))); if(empty($file)|| !file_exists($file)){ $this->error('操作异常'); } $arr = ['.PHP', '.CSS', '.JS', '.XML', '.HTML', '.HTACCESS','.TXT','.JSON']; $exc = strtoupper(substr($f…
public function renames(){ if(request()->isAjax()){ $file = iconv('UTF-8','GB2312',urldecode(input('file'))); $filename = input('filename'); $newfile = iconv('UTF-8','GB2312',dirname($file).DS.$filename); if(file_exists($newfile)){//判断名称是否已经存在 return…
------------------------------------------------------------------------------------------------------------------------- ;…
在日常的开发测试中我们经常会遇到本地开发和测试或者线上配置参数不同的场景,必要你要是使用一个三方的支付,它的本地测试和线上的key值或者账号存在不同.最基本的做法是本地用测试参数,提交到测试的时候再改参数.这种做法比较繁琐. 此时我们完全可以使用下面降到的方法,根据项目运行环境来自动加载参数.活不多说请看下文讲解: 先看目录结构 project 应用部署目录├─application 应用目录(可设置)│ ├─common 公共模块目录(可更改)│ ├─index 模块目录(可更改)│ │ ├─…
空模块 'exception_handle' => function(Exception $e){ // 参数验证错误 if ($e instanceof \think\exception\ValidateException) { return json($e->getError(), 422); } // 请求异常 if ($e instanceof \think\exception\HttpException && request()->isAjax()) { ret…
我们要先认识的是请求对象Request类 <?php//要用Request类 第一步就要引入他,才能在当前控制器上使用//知识点:use 与 namespace前面不可有空格等其他操作.namespace app\admin\controller;use think\Request;class Index{ // 在index方法引入Request public function index(Request $request){ // parma 表示接收所有传过来的参数 不管是post请求还是…
路由: 其实TP5就是一个集多家框架所长而成的,感觉失去了自己的特色!路由这块呢类似于laravel框架!废话不说直接上码! 路由配置,类似laravel,就在route.php文件里配置路由(文件所在路径:gogogo/route.php:gogogo是我的模块名) return [//简单的路由配置 //推荐商品接口路由 'product/getRecommendProduct' => 'gogogo/product/getRecommendProduct' , //这是一个简单路由配置!我…
使用sprintf函数处理,虽然原理没搞懂,但是问题解决了 复现: test表中有两列,值分别是-0.33和10,数据类型是float SELECT SUM(`val`) AS tp_sum FROM `test` 在MySQL中计算结果为9.67 $this->sum('val') 在TP框架下使用sum方法计算得:9.669999986886978 很显然,这是不对的,我一开始使用array_sum()函数发现不行,后面又foreache float也不行,最终查到需要sprintf函数优化…