2020-6-12 myluzh
PHP
0x01 ==和===的问题
==是比较运算,它不会去检查条件式的表达式的类型。
===是恒等,它会检查查表达式的值与类型是否相等。
NULL,0,”0”,array()使用==和false比较时,都是会返回true的,而使用===却不会。
1.比较操作
一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的啦!所以,0 ==’abc’是成立的。当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。
2.Hash比较
"0e132456789"=="0e7124511451155" //true
"0e123456abc"=="0e1dddada" //false
"0e1abc"=="0" //true
在进行比较运算时,如果遇到了0e\d+这种字符串,就会将这种字符串解析为科学计数法。所以上面例子中2个数的值都是0因而就相等了。如果不满足0e\d+这种...
阅读全文>>
标签: php 弱类型 漏洞
评论(0)
(1140)