在PHP中有两种比较的符号 == 与 ===,一种是松散的,一种是严格的。
== 在进行比较的时候,会先将字符串类型转化成相同,然后再比较。
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,然后再比较。
官方文档的链接为:http://php.net/manual/zh/types.comparisons.php
如下列的比较都为true。
<?php
var_dump(1=="1");
var_dump(123=='123asd');
var_dump("1"==true);
var_dump("0"==false);
var_dump(-1 == true);
var_dump(true=="php");
var_dump(0==NULL);
var_dump(0=="php");
var_dump(0=="");
var_dump(NULL==false);
var_dump(""==false);
var_dump(array()==false);
var_dump(array()==NULL); ?>
实例如md5绕过,利用MD5无法对数组进行处理导致左右等式都为NULL,或利用MD5处理后为0e开头的,在比较是0e会被当作科学计数法,0的n次方都等于0从而绕过。
放张官方的图片

网友评论