题目描述
小宁听说php是最好的语言,于是她简单学习之后写了几行 php 代码。
Solution
打开场景可以看到如下 PHP 代码:
本题主要考察 PHP 类型转换相关的知识点。查阅资料可知:
==
在比较的时候,会先将字符串类型转化成相同,再比较;===
在比较的时候,会先判断两种字符串的类型是否相等,再比较;
观察下列例子:
<?php
var_dump("admin" == 0); // true
var_dump("1admin" == 1); // true
var_dump("admin1" == 1); // false
var_dump("admin1" == 0); // true
var_dump("0e123456" == "0e4456789"); // true
?>
"admin" == 0
比较的时候,会将admin
转化成数值,强制转化,由于admin
是字符串,转化的结果是 0 自然和 0 相等;
"1admin" == 1
比较的时候会将1admin
转化成数值,结果为 1;
而"admin1" == 1
却等于错误,也就是"admin1"
被转化成了 0;
"0e123456" == "0e456789"
相互比较的时候,会将0e
这类字符串识别为科学技术法的数字,0 的无论多少次方都是零,所以相等。
回到题目,我们为了绕过if
限制,可以构造特殊的数据类型。a
可以是hello
,b
就构造成2022wrold
。
题目是从GET
方法拿到参数的,这意味着我们把参数通过 URL 传递进去。所以我们得到: