0%

PHP

PHP

函数集锦

双引号解析为变量,单引号解析为字符

一个数组里面的类型可以不同

urldecode

对字符串进行url解码

urlencode

对字符串进行url加密

phps

该文件即为php的源代码文件

echo:输出

array:创建数组

in_array:检查是否存在某个函数

isset:检查变量是否设置

str_replace(被替换对象;替换内容;处理的数组)

highlight_file(FILE)高亮显示代码

system(及同类型函数)执行系统命令

eval函数是将括号内解析为php代码

*可代替任意长度的字符

?代替一个//通配符

插入'‘或””绕过

PHP_EOL

换行

foreach循环

eval()

获取返回值,代码动态执行,里面可以直接是一个语句,加‘ ; ‘传入字符串后面必须加 分号;

$

表示一个名为str的普通变量,它可以存储字符串、整数、数组、布尔等任何类型的值

$$

表示一个可变变量(也可叫做引用变量),用于存储str的值。

变量覆盖

可变变量:指一个变量的变量名可以动态的设置和使用,利用一个普通的变量通过声明来设置。($this变量也是一个特殊变量,不能被动态引用)使用时注意引用变量的作用域和生存期

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$a = 'b';
$b = 'c';
$c = 'a';
echo $a; //输出 :b
echo $b; //输出 :c
echo $c; //输出 :a
echo $$a; //输出 :c
echo $$$a; //输出 :a
echo $$$$a; //输出 :b
?>

举个栗子

image.png

preg_match

被搜索的结果填充,进行正则表达式匹配。并且只匹配一次

检查为数组时会报错,某些特殊情况可以利用数组绕过

preg_match_all

是用来获取指定数据内容

正则表达式:一串符号总结的规律

intval函数

intval函数当传入的变量也是数组的时候,会返回1

isset

is_numeric

函数用于检测变量是否为数字或者数字字符串。若是则为true,否则为false

布尔类型

值为true 或false

被认为是false的一些

  1. 布尔值 FALSE 自身
  2. 整型值 0 (零)
  3. 浮点型值 0.0 (零) 空 字符串, 以及 字符串 “0”
  4. 不包括任何元素的数组
  5. 不包括任何成员变量的对象(仅PHP 4.0 适用)
  6. 特殊类型 NULL (包括尚未设定的变量)
  7. 从没有任何标记(tags)的XML文档生成的SimpleXML 对象

非法字符

参数$后面跟数字字母下划线,第一个非法字符会被转化为下划线_,之后就不会了,第一个串左括号

intval绕过

获取整数值,base=0自动检测格式决定进制,然后会自动进行进制转换

  1. 数组绕过
  2. 进制绕过 0x或0X开头使用十六进制,0开头使用八进制,否则使用十进制 数值进行进制转换后,需要在前面加上0,或者0x以识别进制
  3. intval()函数如果$base为0则$var中存在字母的话遇到字母就停止读取 但是e这个字母比较特殊,可以在PHP中不是科学计数法。
  4. 如果进制开头的字母或者0被禁止了,可以数字后面加小数点绕过例:num=4476.0
  5. 进制0前面加[+]绕过,或者%2b

extract

从数组将变量导入当前符号表

即键值对的键当作变量名,值当作变量值

image.png

正则表达式

-m多行匹配 换行符%0a

-i忽略大小写

-s单行匹配

[\d]表示可以匹配任意一个数字,相当于【[0-9]】。

[\s]表示可以匹配任意一个空白字符,就比如说:换页符、换行符、回车和制表符等

[\w]表示可以匹配任意一个数字、字母(包括大小写)和下划线。

[.]表示可以匹配除换行符以外任意一个字符。

将【.】替换【.】,这样就可以匹配小数点了。

JSFuck编码

http://www.hiencode.com/jsfuck.html在线界面网址

特征:[] + ! ()

php特性

在8的版本内,可以用[来代替下划线

“+”,”.”,”[“,”空格”

部署中文乱码

php文件里面加上

1
header("Content-type:text/html;charset=utf-8");

来源: https://www.yuque.com/guansuanbangzhuangganjun/oxmbxg/enrsn46kw65yea42
语雀文档ID: 111218188