PHP弱类型和强类型
php是一种弱类型语言,对数据的类型要求并不严格,可以让数据类型互相转换
php其中的两种比较符号:
==:先将字符串类型转化成相同,再比较(松散比较 只比较值,不比较数据类型)
===:先判断两种字符串的类型是否相等,再比较
(若字符型值开头为数字,转为数字;若开头不为数字,为 null 弱比较与 0 相等。)
''abc123''==123 => false
''abc123''==0 => true
"123abc"==123 => truephp中强类型比较:是指使用全等运算符(===)进行比较时,进行严格的类型和值比较。
只有当两个操作数的类型和值完全相等时,才会返回true,否则返回false
原文链接:https://blog.csdn.net/lc3016/article/details/134706796
对于php强比较和弱比较:md5(),sha1()函数无法处理数组,如果传入的为数组,会返回NULL,两个数组经过加密后得到的都是NULL,也就是相等的。
数组绕过
intval() 转换数组类型时,不关心数组中的内容,只判断数组中有没有元素,有为1无为0
e.g三种数组写法:
$a[]=1;
$a=array(1,2);
$a=[1,2];但在传参时一般使用第一种形式,经过测试发现,传参默认都是字符串类型
根据intval的字符串转换规则,如果字符串第一个字符不是数字就会直接返回0,所以后面两种形式都是返回0,只有第一种可以正确返回数字1。
原文链接:https://blog.csdn.net/krafcc/article/details/134173212
栗子
include “flag.php”: include 语句包含并运行指定文件(其中包含flag.php)
$_GET: get传参了一个my_parameter
isset: 检测变量是否设置,并且不是 NULL(空)
preg_match : 执行一个正则表达式(匹配含0-9的任意数)
die() 函数输出(error!),并退出当前脚本
eval() 函数把字符串按照 PHP 代码来计算。
intval() 函数获取变量的「整数值」常用于强制类型转换。
#正常get传参
#使用数组绕过 /?my_parameter[]=1