PHP
深入探讨和分享 PHP 编程语言相关的知识、技术、最佳实践以及行业趋势。这个专栏旨在满足 PHP 开发者和对 PHP 技术感兴趣的读者的需求,提供有关 PHP 生态系统的全面信息
奔跑的蜗牛.
每天进步一点点
展开
-
URLEncode原理(全网详解)
URL是为了 统一的命名网络中的一个资源(URL不是单单为了HTTP协议而定义的,而是网络上的所有的协议都可以使用)原创 2023-04-14 14:27:20 · 9183 阅读 · 0 评论 -
PHP的垃圾回收机制(全网详解)
当一个PHP对象不再被引用时,它就成为垃圾。垃圾回收器会定期扫描内存中的所有对象,将没有引用的对象标记为垃圾,并释放它们占用的内存空间,以便其他对象可以使用这些空间。为了避免这种情况的发生,PHP提供了一种手动解除引用的方法,即将对象赋值为null,这样就可以让对象的引用计数器降为0,从而被垃圾回收器释放。然而,在平常脚本中有循环回收机制运行的情况下,内存的节省将允许更多这种脚本同时运行在你的服务器上。在一个垃圾周期中,通过检查引用计数是否减1,并且检查哪些变量容器的引用次数是零,来发现哪部分是垃圾。原创 2023-04-14 15:30:00 · 1716 阅读 · 0 评论 -
使用PHP做个图片防盗链(全网详解)
主要是该站点的图片采用了防盗链的规则,其实这个规则也比较简单, 和大家一说就知道啦,主要是该站点在得知有请求时,会先判断请求头中的信息,如果请求头中有Referer信息,然后根据自己的规则来判断Referer头信息是否符合要求,Referer 信息是请求该图片的来源地址。相信大家看到这,也就明白了,为什么我的代码不能访问到图片,而是显示一张警告盗链图片,因为我们的Referer头信息和百度贴吧的不同,当我的请求发出去时,该站点查看Referer头信息,一看来源不是本站,就重定向到另外一张图片了。原创 2023-04-14 15:00:00 · 922 阅读 · 0 评论 -
thinkphp6使用EasyWeChat5.x公众号开发(二)
再次补充说明:URL是你利用thinkphp编写的一个接口地址,填写的时候不能带有任何参数,只能是类似于这种格式的接口地址进入到你的URL所在的控制器中进行编码,如下:示例代码:/*在做微信开发之前要验证自己开发者身份,微信开发团队给了一个认证环节即:1)将token、timestamp、nonce三个参数进行字典序排序2)将三个参数字符串拼接成一个字符串进行sha1加密3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信;这三个请求;原创 2023-04-03 20:00:00 · 372 阅读 · 0 评论 -
thinkphp6使用EasyWeChat5.x之公众号开发(一)
EasyWeChat是一个基于微信公众号和小程序的PHP SDK,它提供了简单易用的API接口,方便开发者快速开发和集成微信公众号和小程序的功能。2.封装好的业务逻辑有点麻烦,如果要改动会很不利,对于刚开始使用EasyWeChat的人来说增加了学习成本(要开发者对整体微信开发流程有个大致了解,起码要能看得懂微信文档,但微信文档有多费劲相信看到这篇文章的你心中已有自己的判断了...)由于笔者是宝塔面板安装,所以只遇到了fileinfo扩展没安装(宝塔点击安装即可);接着安装thinkphp6的视图。原创 2023-04-03 19:30:00 · 895 阅读 · 0 评论 -
windows下切换PHP-cli版本
PHP-cli是PHP Command Line Interface的缩写,指的是PHP的命令行界面。PHP-cli支持很多常用的命令行选项和参数,可以使用PHP的各种语言特性和函数库,具有很高的灵活性和扩展性,是PHP开发的重要组成部分。3.接下来加入你需要的PHP版本 作为PHP-cli运行 然后将加入的PHP路径 上移到当前PHP版本的路径的上面。首先 windows+r 输入 cmd 打开cmd命令行 输入php -v 查看当前php-cli的版本。你会看到当前的PHP-cli版本的目录路径。原创 2023-04-03 14:56:02 · 1498 阅读 · 0 评论 -
Facade静态代理
是一种静态代理,可以提供简洁的语法来访问容器中的对象,而无需显式地从容器中解析出对象。它可以将实例化对象封装在静态方法中,然后通过调用静态方法来实现该对象的访问。,来绑定该类到容器中。然后,在调用该类的方法时,可以直接使用静态方法调用,而无需创建该类的实例或者在容器中解析该类。静态代理可以简化代码并提高代码的可读性,同时也可以避免在不同部分重复创建同一个实例的问题,提高系统性能和资源利用率。在使用TP6时,我们可以通过继承。类,并定义一个静态方法。名字建议和代理类相同。原创 2023-03-29 15:30:00 · 57 阅读 · 0 评论 -
自动依赖注入
自动依赖注入是一种设计模式,它允许开发人员通过将对象的依赖关系交给容器管理,从而简化代码的编写和维护。当需要创建一个对象时,容器会自动将它所依赖的其他对象注入到该对象中,而不需要开发人员手动创建和管理这些依赖关系。这样可以降低代码的耦合度,提高代码的可重用性和可维护性。在PHP中,自动依赖注入通常是通过依赖注入容器(如Laravel的容器)来实现的。原创 2023-03-29 14:30:00 · 67 阅读 · 0 评论 -
Yii2安装遇到Loading composer repositories with package information
Yii2安装遇到Loading composer repositories with package information原创 2022-08-03 11:20:50 · 1737 阅读 · 0 评论 -
个性化推荐商品-千人千面
个性化推荐商品-千人千面 利用机器学习算法。原创 2023-03-14 11:24:23 · 290 阅读 · 0 评论 -
会员时间计算
会员时间转换原创 2022-10-18 11:01:31 · 137 阅读 · 0 评论 -
PHP直播源码实现简单弹幕效果的相关代码
PHP直播源码实现简单弹幕效果的相关代码原创 2022-08-01 09:05:32 · 894 阅读 · 0 评论 -
如何实现MYSQL分库分表
如何实现MYSQL分库分表原创 2022-07-07 20:44:53 · 4521 阅读 · 1 评论 -
高并发大流量秒杀方案思路
高并发大流量秒杀方案思路原创 2022-07-06 16:18:18 · 525 阅读 · 0 评论 -
laravel 使用腾讯云 COS5全教程
laravel 使用腾讯云 COS5全教程原创 2022-07-04 21:40:05 · 943 阅读 · 0 评论 -
ThinkPHP+Redis实现简单抽奖
tp+redis实现简单抽奖原创 2022-06-30 22:14:50 · 733 阅读 · 0 评论 -
tp6快速安装使用MongoDB实现增删改查
tp6快速安装使用MongoDB实现增删改查原创 2022-06-29 22:04:11 · 1255 阅读 · 0 评论 -
thinkphp6 多级控制器目录访问解决方法
thinkphp6 多级控制器目录访问解决方法原创 2022-06-23 19:45:16 · 2166 阅读 · 0 评论 -
laravel8实现图片验证码
laravel8实现图片验证码原创 2022-06-21 16:22:45 · 703 阅读 · 0 评论 -
Laravel 使用百度地图实现地理位置转经纬度
Laravel 使用百度地图实现地理位置转经纬度原创 2022-06-13 18:00:00 · 200 阅读 · 0 评论 -
Laravel 8 实现 内容审核
Laravel 8 实现 内容审核原创 2022-06-13 13:48:41 · 150 阅读 · 0 评论 -
Laravel 单点登录
Laravel 单点登录转载 2022-06-11 20:50:15 · 669 阅读 · 2 评论 -
lavarel 8 ES封装及使用
lavarel 8 ES封装及使用原创 2022-06-09 09:48:22 · 142 阅读 · 0 评论 -
laravel 8 通过 任务调度 实现 数据库备份
laravel 8 通过 任务调度 实现 数据库备份原创 2022-06-09 09:37:56 · 159 阅读 · 0 评论 -
php安装CI框架解决
php安装CI框架解决原创 2022-06-05 17:01:38 · 390 阅读 · 1 评论 -
Laravel基于MongoDB(LBS)实现附近的人、店铺、房源
Laravel基于MongoDb(LBS)实现附近的人、店铺、房源原创 2022-06-05 16:07:57 · 267 阅读 · 0 评论 -
Laravel框架中如何使用MongoDB数据库
Laravel框架中如何使用MongoDB数据库原创 2022-06-05 15:51:53 · 1284 阅读 · 0 评论 -
多级联动(三级联动)
多级联动原理选中顶级分类,查询出顶级分类对应的二级分类至下啦菜单,选择出二级类,查询出二级分类对应的三级分类,这个效果就是多级联动原始实现思路1、定义路由2、查询顶级分类(pid=0) 发送至视图3、循环展示4、给顶级分类下拉框绑定内容改变事件(JS:onchange、JQ:change)5、获取到选中的option的value值(本分类的主键id)6、根据ID发送ajax请求7、后端定义新方法8、接收ajax请求的id值,就是要查询的pid的where9、原创 2022-03-11 11:30:02 · 3693 阅读 · 1 评论 -
ThinkPHP6实现七牛云缩略图上传
Composer 安装 SDKcomposer require qiniu/php-sdk安装图像扩展composer require topthink/think-image控制器方法页面: // 引入鉴权类 use Qiniu\Auth; // 引入上传类 use Qiniu\Storage\UploadManager; public function upload(Request $request) { $file =原创 2022-03-06 15:41:27 · 393 阅读 · 0 评论 -
tp6实现父子级树状结构封装方法
if(!function_exists('get_tree_list')){ function get_tree_list($list) { //将每条数据中的id值作为其下标 $tmp=[]; foreach($list as $v){ $v['son']=[]; $tmp[$v['id']]=$v; } //获取分类树 foreach(.原创 2022-03-04 13:44:42 · 397 阅读 · 0 评论 -
用户登录失败后三次 锁定账号5分钟
一、建表 自增id 账户名 密码 登录次数 状态(1为锁定) 时间戳二、思路三、代码登录页面<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录三次</title></head>&...原创 2022-03-03 09:57:46 · 906 阅读 · 0 评论 -
TP6 关于引入Bootstrap4分页样式丢失的问题
第一步先安装拓展composer require big-dream/think-paginator-driver第二步编辑app/provider.php文件,在该文件里重新绑定think\Paginator分页服务,该方法适用于ThinkPHP6,全局生效。return [ 'think\Paginator' => \bigDream\thinkPaginatorDriver\Bootstrap4::class];...原创 2022-03-03 15:45:00 · 228 阅读 · 0 评论 -
tp6 缩略图上传
在MVC开发中,视图层表单中往往会有文件上传(上传图片)这一说,一般我们上传的图片需要先处理成压缩图,因为一般会是将缩略图的图片地址存入数据库,并不是原图(因为我们页面展示图片,是以缩略图的形式展示的,当点击缩略图的时候才会显示原图)所以就要考虑到原图和缩略图分开存储图片上传、处理等等需要引入的拓展或者类在这里就不讲了,直接上代码;(thinnkphp6手册中没有关于图形处理的讲解,如果想要了解可以去thinkPHP5 的手册中去了解)链接地址:图像处理 ·.原创 2022-03-03 15:30:00 · 1003 阅读 · 0 评论 -
tp6解决跨域问题 - 中间件设置
第一种方法在前后端分离项目中,如通过ThinkPHP6开发api,涉及前端调用跨域问题,可通过自带的跨域中间件解决。在 ./app/middleware.php 文件中启用内置中间件即可<?php// 全局中间件定义文件return [ \think\middleware\AllowCrossDomain::class];<?php// 全局中间件定义文件return [ // 全局请求缓存 // \think\middleware\Chec.原创 2022-03-03 14:45:00 · 4167 阅读 · 2 评论 -
tp6腾讯云、七牛云对象存储的工具类以及异步上传
composer安装composer require lorine/oss-utils代码:use Lorine\OssUtils\OssService; $config = [ 'ak' => 'xxxxxx',//SecretId /Access_Key 'sk' => 'xxxxxx',//SecretKe /Secret_Key 'bucket' => 'xxxxx',//桶原创 2022-03-03 14:15:00 · 297 阅读 · 0 评论 -
PHP使用curl请求数据(采集数据)
<?php $url = "http://www.baidu.com/s?wd=***"; $header = array( 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/33.0.1750.146 Safari/537.36'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); cur...原创 2022-03-03 13:45:00 · 311 阅读 · 0 评论 -
tp6关于限制频繁访问api的解决问题
composer下载安装think-throttlecomposer require topthink/think-throttle第一种方法组件以中间件的方式进行工作,因此它的开启与其他中间件一样,例如在全局中间件中使用 app/middleware.php return [ \think\middleware\Throttle::class, ]; 在 config/throttle.php 配置选项// 中间件配置return [原创 2022-03-03 13:30:00 · 597 阅读 · 0 评论 -
PHP加密方式
PHP加密方式分为单项散列加密,对称加密,非对称加密这几类。像常用的MD5、hash、crypt、sha1这种就是单项散列加密,单项散列加密是不可逆的。像URL编码、base64编码这种就是对称加密,是可逆的,就是说加密解密都是用的同一秘钥。除此外就是非对称加密,加密和解密的秘钥不是同一个,如果从安全性而言,加密的信息如果还想着再解密回来,非对称加密无疑是最为安全的方式MD5加密md5加密算法在PHP中是最常见的加密算法,这个算法是不可逆的,通常用于加密用户的密码等信息来保证用户的信息.原创 2022-02-15 17:00:45 · 6016 阅读 · 0 评论 -
git 基本操作——分支合并
创建并切换分支git checkout -b dev添加git add .git commit -m '注释内容'推送到远程 devlop分支git push origin dev切换到主分支git checkout master拉去数据git pull合并devgit merge dev推送至主分支git push origin master...原创 2021-12-17 11:03:53 · 238 阅读 · 1 评论 -
thinkphp6 阿里云上传
use OSS\Core\OssException;use OSS\OssClient; public function insert() { $file = request()->file('image'); $name=$file->getPathname();// print_r($name);die(); //apikey $apikey="BBmaz8XU1rKEHChQSqlsdCvG.原创 2021-12-17 10:54:40 · 393 阅读 · 0 评论