在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
题目源码:<?php show_source(__FILE__); $flag1="flag1 here"; $flag2="flag2 here"; $a=@$_GET['a']; $b=@$_GET['b']; if($a==0 and $a){ echo $flag1; } if(is_numeric($b)){ exit(); } if($b>1234){ echo $flag2; } ?> 分析:很明显看出该题目考察的是对PHP的弱类型、比较运算符、以及类型转换的理解 1、HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。 2、is_numeric ( mixed $var ) : bool — 检测变量是否为数字或数字字符串 如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE。 3、比较运算符 例子 名称 结果 $a == $b 等于 TRUE,如果类型转换后 $a 等于 $b。 $a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。 4、字符串转换为数值 当一个字符串被当作一个数值来取值,其结果和类型如下: 如果该字符串没有包含 '.','e' 或 'E' 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。 该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成。 <?php $foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) $foo = "10.0 pigs " + 1; // $foo is float (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11) ?> 5、转换为布尔值 要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。 当转换为 boolean 时,以下值被认为是 FALSE:
所有其它值都被认为是 TRUE(包括任何资源 和 NAN)。 Warning: -1 和其它非零值(不论正负)一样,被认为是 TRUE! 综上不难得出:
参考资料:https://www.php.net/manual/zh/language.operators.php |
2022-07-29
2022-08-30
2022-08-17
2022-11-06
2022-08-18
请发表评论