php技巧

php图片放大合成加入字体操作示例介绍

2022-08-15
目录 前言 一. 获取图片 二. 把二维码图片放大 三. 多个图片合成 四. 添加文字并居中 五. 完整的代码 前言 之前只是生成二维码,现在需要把二维码放在一个背景图并且需要有文字介绍.之前没做过,现在做好了记录一下. 一. 获取图片 $background_path = root_path() . 'public/event/template.jpg'; //背景图片地址 $qrcode_path = root_path() . 'public/event/qrcode/1653635892

JWT登录认证实战模拟过程全纪录

2022-08-10
目录 Token 认证流程 Token 认证优点 JWT 结构 JWT 基本使用 实战:使用 JWT 登录认证 附:为什么使用jwt而不使用session 总结 Token 认证流程 作为目前最流行的跨域认证解决方案,JWT(JSON Web Token) 深受开发者的喜爱,主要流程如下: 客户端发送账号和密码请求登录 服务端收到请求,验证账号密码是否通过 验证成功后,服务端会生成唯一的 token,并将其返回给客户端 客户端接受到 token,将其存储在 cookie 或者 localStro

深入了解PHP的垃圾回收机制

2022-08-09
目录 一.引用计数基础知识 二.生成zval容器 三.增加zval的引用计数 四.减少zval引用计数 五.复合类型的zval容器 六.增加复合类型的引用计数 七.减少复合类型的引用计数 八.特殊情况 九.清理变量容器的问题 十.回收周期 十一.回收算法分析 十二.性能考虑 十三.垃圾回收机制的结论 一.引用计数基础知识 每个php变量存在一个叫 zval 的变量容器中. 一个 zval 变量容器,除了包含变量的类型和值,还包括两个字节的额外信息. 第一个是 is_ref,是个bool值,用来标

PHP常用的文件操作函数总结

2022-08-04
目录 1 :basename() 2 :copy() 3 :dirname() 4 :disk_free_space() 5 :disk_total_space() 6 :file_exists() 7 :file_get_contents() 8 :file_put_contents() 9 :filesize() 10 :filetype() 11 :glob() 12 :is_dir() 13 :is_writable() 14 :mkdir() 15 :move_uploaded_fil

PhpStrom使用Xdebug技巧图文教程

2022-08-03
目录 一.PHP7安装Xdebug扩展 二.PhpStrom配置Xdebug 三.PhpStrom中的Xdebug工具 四.一个请求的Xdebug过程 一.PHP7安装Xdebug扩展 1.下载xdebug #wget https://xdebug.org/files/xdebug-2.7.2.tgz (使用windows可以去官网下载:https://xdebug.org/download) 2.解压xdebug #tar xvf xdebug-2.7.2.tgz 3.准备PHP扩展库的编译环

利用PHP实现词法分析器与自定义语言

2022-07-30
目录 一.分析需求 二.实现需求 三.如何使用 四.使用场景 之前项目有一个需求,业务人员使用中文编写一些自定义公式,然后需要我们后台执行将结果返回到界面上,于是就基于有限状态机写了这个词法分析器,比较简单,希望能够抛砖引玉. 一.分析需求 输入中文公式,返回结果,比如: 现有薪资=10000;个税起点=3000;当前年份=2021;如果(当前年份=2022){    个税起点=5000;}返回 (现有薪资-个税起点) * 0.2; 二.实现需求 最初的想法是使用字符串替换的方式,将中文关键字替

Larave框架通过sanctum进行API鉴权详解

2022-07-28
目录 目标 步骤 安装启动 安装扩展包 修改配置文件 数据库迁移 模拟数据 添加访问路由 测试获取token postman测试 测试其他接口 知识点补充1 知识点补充2 代码仓库 目标 1.使用laravel框架进行用户的登录,注册,认证 2.前后端分离的情况下,用户请求接口,使用API token进行认证 步骤 安装启动 composer create-project laravel/laravel example-appcd example-app   php artisan serve

php万字码出完美守护进程详解

2022-07-26
目录 前事提要 基本概念 基本特点 创建守护进程要求 前事提要 上期我们详细学习了会话的概念以及用法,会话,进程组,终端的理解对本篇讲述的守护进程极其重要,如还不理解相关概念建议翻看我往期关于会话,进程组,终端文章. 基本概念 守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程.通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.并且不跟任何的控制终端关联,如果想让某个进程不因为用户或中断或其他变化而影响,那

php浅析反序列化结构

2022-07-25
目录 简介 反序列化中常见的魔术方法 反序列化绕过小Trick 绕过_wakeup(CVE-2016-7124) 绕过部分正则 利用引用 16进制绕过字符的过滤 简介 序列化的目的是方便数据的传输和存储,在PHP中,序列化和反序列化一般用做缓存,比如session缓存,cookie等. 反序列化中常见的魔术方法 __wakeup() //执行unserialize()时,先会调用这个函数 __sleep() //执行serialize()时,先会调用这个函数 __destruct() //对象被

php超详细讲解命名管道

2022-07-25
目录 进程间为什么要通信 进程如何实现通信 常见进程通信方式 管道概念 命名管道实现 posix_mkfifo函数 无血缘进程间通信 进程间为什么要通信 进程间通信的目的: 数据传输:一个 进程需要将它的数据 发送给另一个进程. 通知事件:一个进程需要向另一个或一组进程 发送消息,通知它(它们)发生了 某种事件(如进程终止时要通知父进程). 资源共享:多个进程之间 共享同样的资源 .为了做到这一点,需要内核提供互斥和同步机制. 进程控制:有些进程 希望完全控制另一个进程的执行 (如 Debug

PHP连接MySql数据库方法简化版

2022-07-25
写这个PHP连接数据库静态工具类之前,是由于当时学习C#的asp.net.老师编写了一个连接数据库的静态工具类,发现使用此类,每次只需要写sql语句,而不再需要进行连接创建,关闭等等.方便其他操作,节约时间. 转眼一年半,如今php课程需要写一个小项目,于是第一件事就是编写一个连接数据库的静态工具类,php和asp.net的语法极其的相似. 在使用此类之前,可以普及两点知识: PHP中使用静态的调用,不同于其他编程语言,它的静态调用为: 类名::$静态属性 类名::静态方法() 而Java.C#

PHP网络安全之命令执行漏洞及防御

2022-07-25
目录 命令执行漏洞的原理 命令执行漏洞产生原因 命令执行漏洞的危害 命令执行的防御手段 DVWA介绍 命令执行漏洞的原理 程序应用有时需要调用一些执行系统命令的函数,如php中的system,exec,shell exec,passthru,popen,proc popen等,当用户可以控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令注入攻击 两个条件 (1)用户可以控制函数输入 (2)存在可以执行代码的危险函数 命令执行漏洞产生原因 1.开发人员编写源码时,未针对代码中

php Illegal string offset 'name'问题及解决

2022-07-19
目录 php Illegal string offset 'name' 解决办法 thinkphp:Illegal string offset in 'xxxx' 解决办法很简单 php Illegal string offset 'name' 上面代码可以输出值,但是 报错Warning: Illegal string offset 'name' in 原因是$person数组里面有空数组,空数组里没有name这个字段. 解决办法 是在 foreach 下面加个判断 if(is_array($

PHP Laravel框架异步执行的实现详解

2022-07-18
目录 Laravel 异步执行任务 大致操作 代码粘贴 其他操作 Laravel 异步执行任务 不影响当前程序继续执行 描述:用户操作时 要执行计算量大且不影响主操作的任务时,可采用异步方式执行. 队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间 大致操作 生成要执行的文件 php artisan make:job UploadTask .env 中的 QUEUE_CONNECTION=sync 变为 QUEUE_CONNECTION=redis Uplo

详解PHP渗透测试文件包含漏洞与利用

2022-07-17
目录 什么是文件包含漏洞 文件包含漏洞的分类 本地文件包含 漏洞&利用 利用条件(以PHP为例) 直接访问文件 利用协议读取源代码 截断%00 长度截断 PHP的伪协议 file:// php:// data:// phar:// 远程文件包含 漏洞利用 远程包含webshell 代码审计 修复建议 什么是文件包含漏洞 文件包含,在网站开发人员开发网站时,会将经常重复的代码写道一个单独的文件中,在别的文件中可以使用文件包含的函数来引用单独的文件.目前很多语言都支持文件包含,例如php(inchu

深入了解PHP中生成器yield的使用

2022-07-17
目录 1. 什么是 "yield" 2.yield 解决的问题 3."yield" & "return" 的区别 4. 什么是 "yield" 选项 5. 生成器 如果是做Python或者其他语言的小伙伴,对于生成器应该不陌生.但很多PHP开发者或许都不知道生成器这个功能,可能是因为生成器是PHP 5.5.0才引入的功能,也可以是生成器作用不是很明显.但是,生成器功能的确非常有用. 1. 什么是 "yield

PHP内存溢出的解决方法详解

2022-07-16
目录 1.处理数组时出现内存溢出 2.使用sql查询数据,查出来很多,导致内存溢出 3.假定日志中存放的记录数为500000条,那么解决方案如下 4.上传excel文件时,出现内存溢出的情况 什么是内存溢出 内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存. 引起内存溢出的原因有很多种,常见的有以下几种: 1 内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 2 集合类中有对对象的引用,使用完后未清空: 3 代码中存在死循环

PHP利用ueditor实现上传图片添加水印

2022-07-03
博客在上传图片的时候,我希望能打上我博客链接的水印,掘金,csdn都是这么干的,这事我得学习. 平时的图片上传还好说,在文章编辑的时候,使用ueditor上传图片加水印需要修改ueditor部分PHP的源码,我这里大概记录一下. 首先打开php文件夹下的Uploader.class.php 找到private function upFile(),这是上传文件的主处理方法, 找到122行: $this->stateInfo = $this->stateMap[0]; 在这个下面加入:$this-

PHP实现网络请求的方法总结

2022-06-27
一.分析php发送网网络请求的方法 对于php发送网络请求,我们最常用的请求就是curl,有时我们也会用到file_get_contents函数发送网络请求,但file_get_contents只能完成一些间单的网络请求,稍复杂的就无法完成,例如文件上传,cookies,验证,表单提交等,用php的curl可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及

PHP实现图片加水印功能

2022-06-19
这里分享下php给图片加水印的几个自定义函数 给图片加水印首先需要开启GD库. 用到的php函数是imagecopymerge () 和 imagecopy () imagecopymerge 函数可以支持两个图像叠加时,设置叠加的透明度 imagecopy 函数则不支持叠加透明. 基本概念就啰嗦到这,下边是几个函数的讲解 在图像上打上LOGO水印. logo透明的png图像,logo.png , 使用imagecopymerge函数,可以实现打上透明度为30%的水印图标 (可是当我的图片是jp