php技巧

php安全攻防世界unserialize函数反序列化示例详解

2021-10-14
目录 步骤 总结 步骤 首先打开题目,发现给了一段源码: 分析源码,发现类里面有三个魔术方法: __construct():构造函数,对类的变量进行初始化,创建时自动调用,用得到的参数覆盖$file __destruct():销毁时调用,会显示文件的代码,这里要显示fl4g.php __wakeup():在进行反序列化之前会调用,会把$file重置成index.php 正则表达式的含义:o或c开头,冒号,一个或多个数字,不区分大小写 ok,分析完毕:我们要将序列化后的字符串进行base64加密之

web php include攻防世界php安全示例详解

2021-10-13
步骤 打开所给的实验环境,发现给出代码,分析代码可知是文件包含漏洞: 其中含有两个参数: hello参数中的内容会被输出到页面 page参数中的内容则会被进行文件包含,但是会对php://进行过滤 两个函数: strstr(string,search[,before_search]):strstr() 函数搜索字符串(search)在另一字符串(string)中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE.区分大小写,stristr()函数不区分大小写. string:必需.规

php安全攻防利用文件上传漏洞与绕过技巧详解

2021-10-11
目录 前言 文件上传漏洞的一些场景 场景一:前端js代码白名单判断.jpg|.png|.gif后缀 场景二:后端PHP代码检查Content-type字段 场景三:代码黑名单判断.asp|.aspx|.php|.jsp后缀 场景四:代码扩大黑名单判断 绕过方式--htaccsess: 绕过方式--大小写绕过: 场景五:一些复合判断 空格.点绕过(windows) ::$DATA绕过(windows) 双写绕过 %00截断 %0a绕过 图片马绕过 二次渲染绕过 条件竞争 /.绕过 前言 文件上传漏

php如何处理setcookie失效的问题

2021-09-23
1.浏览器开启cookie. 2.删除在setcookie()之前的任何HTTP头部输出. 3.使用php的setcookie()来创建cookie即可. 使用php的setcookie()来创建cookie和php中开启session的 session_start()一样,在setcookie()之前不能有任何HTTP头部输出.我去检查代码,发现如下代码 var_dump($qOpenId); setcookie('qOpenId',$openid,time() + 30 * 24 * 360

php类自动加载失败的处理方案及实例代码

2021-09-21
1.打开相应的PHP代码文件. 2.添加"$class = str_replace("\\","/",$class);"代码即可. 文件在本地win系统下测试无异常,代码如下: function stu_autoload($class){ if(file_exists($class.".php")){ require ( $class.".php"); }else{ die("unable to

PHP中=>和->以及::符号的用法

2021-09-21
没关系,下面我们做一下详细的解释,如果你有C++,Perl基础,你会发现这些家伙和他们里面的一些符号功能是差不多的. '- >'符号 插入式解引用操作符"(infix dereference operator).换句话说,它是调用由引用传递参数的子程序的方法(当然,还有其它的作用).正如我们上面所提到的,在调用PHP的函数的时候,大部分参数都是通过引用传递的.PHP中的'->'功能就和它们在Perl或C++中一样.下面是一个简单的解引用的例子: echo $x->def();

深入浅出理解PHP原理之变量赋值

2021-09-20
PHP的变量赋值 这个标题估计很多人会不屑一顾,变量赋值?excuse me?我们学开发的第一课就会了好不好.但是,就是这样基础的东西,反而会让很多人蒙圈,比如,值和引用的关系.今天,我们就来具体讲讲. 首先,定义变量和赋值这个不用多说了吧 $a = 1; $b = '2'; $c = [4, 5, 6]; $d = new stdClass(); 四个变量,分别定义了整型.字符串.数组的对象.这也是我们天天要打交道的四种类型. 然后,变量给变量赋值. $a1 = $a; $b1 = $b; $

php遇到错误Call to undefined function ImageCreate()解决方法

2021-09-15
目录 常规Ubuntu与windows 编译make安装方法 phpize方法 centos安装GD库 在使用php处理一些图像时,有时会出现诸如这样的错误:Call to undefined function imagecreate() 这是由于没有安装或是没有开启php的gd库导致的问题. 常规Ubuntu与windows 解决方案: 一.在linux系统(这里用的是Ubuntu系统)下 首先在终端输入下列命令: sudo apt-get install php5-gd 这样就已经安装完ph

php复制文件后改名的实例代码

2021-09-15
1.сoру函数来实现复制文件后修改文件名,该函数可以将一个文件复制(拷贝)到指定目录中. 2.语法"copy($file, $newfile)":如果执行成功则返回TRUE,如果执行失败则返回FALSE. 实例 <?php header("Content-type:text/html;charset=utf-8"); $file = 'test.txt'; $newfile = 'newtest.txt'; if(copy($file, $newfile))

php array_walk array_map array_filter区别案例详解

2021-09-09
php 开发经常遇到数组处理,会涉及到题目中这几个函数.这个函数功能类似,很多时候容易混淆. array_walk: array_walk - 使用用户自定义函数对数组中的每个元素做回调处理 1. 用户自定义的函数处理每一个元素 2. 直接修改原数组,不会创建新的数组 3. 可以传递额外的参数 Example #1 : <?php $fruits = array("d" => "lemon", "a" => "oran

php array_map与array_walk比较案例详解

2021-09-09
array_map(): 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致. 3.提示:您可以向函数输入一个或者多个数组. 若相函数输入2个数组,其函数接受参数也应该有两个,map给函数传值时,是每次从两个数组中分别取一个传给函 数.即多个数组之间是同步提交的,不是提交完一个数组再提交下一个 提交几个

PHP扩展之kafka安装应用案例详解

2021-09-07
话说用了就要有点产出,要不然过段时间又忘了,所以在这里就记录一下试用Kafka的安装过程和php扩展的试用. 实话说,如果用于队列的话,跟PHP比较配的,还是Redis.用的顺手,呵呵,只是Redis不能有多个consumer.但Kafka官方对PHP不支持,PHP扩展是爱好者或使用者写的.下面就开始讲Kafka的安装吧.我以CentOS6.4为例,64位. 一. 首先确认下jdk有没有安装 使用命令 [root@localhost ~]# java -version java version

php判断数组元素不为空格实例代码

2021-09-07
1.使用foreach ($arr as $value){}语句遍历数组. 2.使用if($value!=" ")语句判断数组元素是否为空格. 3.如果数组元素全部不为空,则输出数组元素不为空格. 实例 <?php header("Content-type:text/html;charset=utf-8"); $arr = array(10,"php中文网",20," ","php教程"); $i=0

PHP8新特性之JIT案例讲解

2021-09-06
PHP8 alpha1已经在昨天发布,相信关于JIT是大家最关心的,它到底怎么用,有什么要注意的,以及性能提升到底咋样? 首先,我们来看一张图: 左图是 PHP 8之前的Opcache流程示意图, 右图是 PHP 8中的Opcache示意图, 可以看出几个关键点: PHP8的JIT是在Opcache之中提供的 目前PHP8只支持x86架构的CPU JIT是在原来Opcache优化的优化基础之上进行优化的,不是替代 事实上JIT共用了很多原来Opcache做优化的基础数据结构,比如data flo

PHP autoload机制案例详解

2021-09-06
PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义在同一个类文件中--相信这个文件一定会非常大.但是__autoload()方法出来了,以后就不必为此大伤脑筋了,这个类会在你实例化对象之前自动加载制定的文件. 1. autoload 机制概述 在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用

PHP创建简单RPC服务案例详解

2021-09-04
RPC 定义 RPC(Remote Procedure Call)即远程过程调用,指被调用方法的具体实现不在程序运行本地,而是在别的某个地方.主要应用于不同的系统之间的远程通信和相互调用. 如 A 调用 B 提供的 remoteAdd 方法: 首先A与B之间建立一个TCP连接: 然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去: B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并

PHP保姆级API制作教程,不会剁手

2021-09-03
方法一:直接返回图片 第一步:首先你得把图片的链接一行一行的排版放到txt文档,如下: 第二步:使用如下php代码如下所示 <?php //存有美图链接的文件名img.txt $filename = "img.txt"; if (!file_exists($filename)) { die('文件不存在'); } //从文本获取链接 $pics = []; $fs = fopen($filename, "r"); while (!feof($fs)) { $l

php curl发起get与post网络请求案例详解

2021-09-02
curl介绍 curl是一个开源的网络链接库,支持http, https, ftp, gopher, telnet, dict, file, and ldap 协议.之前均益介绍了python版本的pycurl https://www.jb51.net/article/221508.htm ,现在介绍怎么使用php版本的URL. curl get请求 function curl_get($url){ $header = array( 'Accept: application/json', );

关于PHP5和PHP7中数组实现方式的比较总结

2021-09-01
目录 ⒈ 数据结构 ⒉ 添加/修改元素 ⒊ 删除元素 ⒋ 数组遍历 ⒌ hash 碰撞 ⒍ 扩容 ⒎ PHP 7 中的 packed hashtable 总结 从 PHP 5 到 PHP 7 ,PHP 通过对 hashtable 数据结构和实现方式的修改,使得数组在内存占用和性能上有了很大的提升. ⒈ 数据结构 // PHP 5 中 hashtable 的数据结构定义 typedef struct bucket { ulong h; /*对于索引数组,存储 key 的原始值:对于关联数组,存储

php提取数字拼接数组的具体操作

2021-08-30
1.array_filter() 函数可以用回调函数来过滤数组中的元素,将数组元素传递给回调函数进行处理. 2.如果回调函数返回true,则把输入数组中的当前键值返回给结果数组. (数组键名保持不变) 实例 <?php $array = array("php", 11, '', 12, "我们",13,"green",2021,"mysql","14",15); function filter_num