php技巧

PHP字符串前后字符或空格删除方法介绍

2022-11-05
目录 rtrim() ltrim() trim() 总结 首先看一下这三个函数:rtrim() ltrim() trim(): rtrim() 定义以及用法: rtrim() 函数移除字符串右侧的空白字符或其他预定义字符. 语法: rtrim(string,charlist) 参数 描述 string 必需.规定要检查的字符串. charlist 可选.规定从字符串中删除哪些字符.如果省略该参数,则移除下列所有字符:"\0" - NULL "\t" - 制表符 &q

php函数之strtr和str_replace的用法详解以及效率分析 原创

2022-11-03
目录 一. str_repalce()用法 二. strtr()用法 三. 效率对比 四. 总结 PHP中主要用strtr()和str_repalce()这两个函数替换字符串和数组,但你们都知道他们这两个函数的区别和用法吗?有不少文章在说使用strtr函数比str_replace快4倍,那为什么很多时候都在用str_replace,到底应该使用哪个函数呢? 一. str_repalce()用法 str_replace(find,replace,string,count)find:规定要查找的字符

PHP反序列化漏洞实例深入解析

2022-10-08
目录 引文 简介 基础知识 序列化 反序列化 属性 魔术方法 POP链 [MRCTF2020]Ezpop PHP字符串逃逸 结语 引文 上一篇给大家带来了XSS跨站脚本攻击漏洞不知道大家学的咋样了,今天给大家带来另一个漏洞,PHP的反序列化漏洞,这也是我在CTF比赛中遇到过最多的也是比较考察逻辑思维的一种漏洞. 简介 PHP反序列化是一个非常常见的漏洞,利用难度相比于文件上传等漏洞相对较困难,漏洞的形成的根本原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造

PHP开发技巧之PHAR反序列化详解

2022-10-08
目录 引文 前置知识 PHAR PHAR文件结构 PHAR文件生成样例 实战 结语 引文 之前将PHP反序列化的基础知识讲了一遍,不知道大家学习的怎么样了,今天给大家带来PHP反序列化的进阶知识:PHAR反序列化,也是之前本人在CTF比赛中经常遇到的一种php反序列化的进阶使用吧,下面先给大家讲一讲PHAR反序列化的前置知识. 前置知识 PHAR 在软件中,PHAR(PHP归档)文件是一种打包格式,通过将许多PHP代码文件和其他资源(例如图像,样式表等)捆绑到一个归档文件中来实现应用程序和库的分

一文带你搞懂PHP对象注入

2022-09-30
目录 背景 漏洞案例 PHP类和对象 php magic方法 php对象序列化 序列化magic函数 php对象注入 常见的注入点 其他的利用方法 如何利用或者避免这个漏洞 结论 背景 php对象注入是一个非常常见的漏洞,这个类型的漏洞虽然有些难以利用,但仍旧非常危险,为了理解这个漏洞,请读者具备基础的php知识. 漏洞案例 如果你觉得这是个渣渣洞,那么请看一眼这个列表,一些被审计狗挖到过该漏洞的系统,你可以发现都是一些耳熟能详的玩意(就国外来说) WordPress 3.6.1 Magento

PHP数据加密方式梳理介绍

2022-09-24
目录 前言 对称加密DES 对称加密AES 非对称加密RSA 前言 首先我们来了解一下为什么要加密? 在网络通信的过程中攻击者可以伪造请求和返回,从而达到不可告人的目的.如下图所示: 数据加密之后可以防止他人监听窃取信息以及通讯内容被篡改. 了解了加密的作用,我再来说说加密的方式: 对称加密DES DES是1977年美国联邦信息处理标准中采用的一种对称密码.是一种将64比特的明文加密成64比特的密文的对称算法 DES已经被暴力破解了,1999年RSA公司举办的破译DES比赛,耗时仅仅22小时45

PHP接入Apple对access_token/identityToken进行JWT验证流程详解

2022-09-24
目录 解析 JWT 头 获取 Apple 公钥 解析$keys(公钥) 获取目标 Key 解码获取 OpenID 多说两句 需用到 Composer 库:firebase/php-jwt,直接安装即可 composer require firebase/php-jwt 解析 JWT 头 简单示例下 UniApp 中通过 uni.login() 方法获取 JWT let type = 'apple' uni.getProvider({ service: 'oauth', success: func

PHP四种统计在线人数方式详细介绍

2022-09-20
目录 1 用表统计方式 2 使用 redis 有序集合实现在线人数统计 3 使用 hyperloglog 做统计 4 使用 bitmap 统计 1 用表统计方式 用数据表统计在线人数,这种方式只能用在并发量不大的情况下. 首先我们先新建表:user_login 编辑 user_login 表 模拟用户登录,不存在用户就存入表,存在的则更新登录信息 // 客户端唯一的识别码 $client_id = session()->getId(); //用户是否已存在 $user = DB::table('

PHP array_combine() 函数内置函数

2022-09-19
前言: array_combine() 是 PHP 中的一个内置函数,用于组合两个数组并通过使用一个数组作为键和另一个数组作为值来创建一个新数组.也就是说,一个数组的所有元素将成为新数组的键,而第二个数组的所有元素将成为这个新数组的值. 例子: 输入: $array1 = ("Ram", "Akash", "Rishav"); $array2 = ('24', '30', '45'); 输出: Array ( [Ram] => 24 [Ak

php使用strtotime技巧示例解惑

2022-09-17
引言 经常会有人被 strtotime 结合 - 1 month, +1 month, next month 的时候搞得很困惑,然后就会觉得这个函数有点不那么靠谱,动不动就出问题.用的时候就会很慌… 这不,刚刚就有人在微博上又问我: date("Y-m-d",strtotime("-1 month")) 今天是 2018-07-31 执行代码,怎么输出是 2018-07-01? 好的吧,虽然这个问题看起来很迷惑,但从内部逻辑上来说呢,其实是” 对” 的,你先别着急哈

Thinkphp事件机制两种实现方式详解

2022-09-17
目录 一.通过监听 二.通过订阅 1.创建订阅类 2.配置监听 3.触发监听 4.处理监听逻辑 4.1 自动绑定 4.2 手动绑定 总结 事件机制的实现有两种途径:通过监听.通过订阅 一.通过监听 1.创建监听类:在命令行模式下进入框架根目录执行 php think make:listener <自定义的类名> 例如: php think make:listener UserListener 执行之后将在<框架根目录>\app\listener\下生成UserListener这个类

PHP的序列化和反序列化详情

2022-09-06
目录 一.PHP 为什么要反序列化? 二.PHP如何反序列化? 三.PHP反序列化漏洞 1.常用 的魔术方法 2.漏洞产生条件 3.题目 一.PHP 为什么要反序列化? PHP程序执行结束以后会将文件中的变量和内容释放掉, 如果一个程序想要的调用之前程序的变量,但是之前的程序已经执行完毕,所有的变量和内容都被释放,那该如何操作呢?这时候就可以通过序列化和反序列化保存程序中的对象,给其他程序使用. php序列化可以将对象转换成字符串,但只序列化属性,不序列化方法. 二.PHP如何反序列化? ​PH

详解PHP反序列化漏洞示例与原理

2022-08-30
目录 预备知识 PHP序列化与反序列化 序列化字符串格式 PHP魔术方法 示例 反序列化漏洞 构造函数&析构函数 CVE-2016-7124 预备知识 PHP序列化与反序列化 序列化:将一个复杂的数据类型(如对象.数组.变量等)转换为字符串表示,以便于在网络中传输和在数据库中存储.在PHP语言中使用serialize()函数实现. 反序列化:将一个序列化的字符串重新转换为一个具体的数据类型.在PHP语言中使用unserialize()函数实现. PHP对象中只有数据会被序列化,方法不会被序列化.

php生成并下载word文件到本地实现方法详解

2022-08-28
目录 安装phpword包 准备一个word模板(docx格式) 前端调用代码 PHP处理代码 one more thing 安装phpword包 通过composer安装phpword包.因为是使用thinkphp架构,安装挺方便的. 直接下载phpword压缩包有问题. composer require phpoffice/phpword 准备一个word模板(docx格式) 准备好word模板后,只需要用变量替换需要替换的值,如下图所示,将房东名替换成${name}. 前端调用代码 系统前

php进程通信之信号量浅析介绍

2022-08-27
目录 常见进程通信方式 一些理论基础 system V 信号量 信号量类型 php模拟多进程操作公共资源 使用php封装system v 信号量集函数 常见进程通信方式 一些理论基础 临界资源:每次仅允许一个进程访问的资源. 临界区:每个进程中访问临界资源的那段代码叫临界区 所谓临界区(也称为临界段)就是访问和操作共享数据的代码段. 进程互斥:两个或以上的进程不能同时进入关于同一组共享变量的临界区域,即一个进程正在访问临界资源,另一个进程要想访问必须等待. 进程同步:主要研究如何确定数个进程之间

如何利用PHP 快速解决跨域问题

2022-08-24
目录 跨域介绍 跨域介绍 跨域解决方案 跨域介绍 浏览器拥有同源策略限制确保安全,同源策略会阻止一个域的Javascript脚本和另外一个域的内容进行交互. 当一个请求url的协议.域名(包括多级域名).端口三者之间任意一个与当前页面url不同即为跨域. 跨域介绍 1)无法读取非同源网页的 Cookie.LocalStorage 和 IndexedDB 2)无法接触非同源网页的 DOM 节点 3)无法向非同源地址发送 AJAX 请求 跨域解决方案 1)JSONP(只支持GET请求) Javasc

php链路追踪框架skywalking介绍

2022-08-23
目录 Skywalking介绍 Skywalking功能介绍 Skywalking介绍 Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java..Net.NodeJs等探针,数据存储支持Mysql.Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,

PHP获取系统毫秒数时间方法

2022-08-22
目录 前言 一.获取当前时间戳 二.获取当前时间 三.获取当前毫秒数 前言 php中获取时间方法是date(),在php中获取时间戳方法有time().strtotime(): date() :date(format, timestamp),format为格式.timestamp为时间戳(可选).time():返回当前时间的 Unix 时间戳,没有参数.strtotime(time, now) :将英文文本格式的时间字符串解析为 Unix 时间戳.time 为必填,规定要解析的时间字符串:now

PHP配合微信小程序实现获取手机号码详解

2022-08-18
今天刚好做项目的时候用到这块功能,黄啊码就直接上手了,奈何网上的教程各式各样,就是没有个直接可以抄的,啊码最烦说话说一半,今天就直接弄个给大家抄的. 当前通过获取session_key与encryptedData与iv进行解密获取手机号的方法已经不行了,只能通过点击按钮来实现获取微信用户的手机号 1:需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到动态令牌code,然后把

php-fpm优化总结经验分享

2022-08-17
目录 Nginx 与 php-fpm 运行流程 Nginx 与 php-fpm 通信机制 php-fpm 进程管理 php-fpm 优化 php.ini 优化 php-fpm.conf 优化 如何避免程序 hang 死 Nginx 与 php-fpm 运行流程 Nginx 查看 nginx.conf 配置文件 加载 nginx 的 fast-cgi 模块 php-fpm 监听 127.0.0.1:9000 php-fpm 接收到请求,启用 worker 进程处理请求 php-fpm 处理完请求,