题目描述

小宁听说php是最好的语言,于是她简单学习之后写了几行 php 代码。

Solution

打开场景可以看到如下 PHP 代码:

007-1.png

本题主要考察 PHP 类型转换相关的知识点。查阅资料可知:

  • == 在比较的时候,会先将字符串类型转化成相同,再比较;
  • === 在比较的时候,会先判断两种字符串的类型是否相等,再比较;

观察下列例子:

  1. <?php
  2. var_dump("admin" == 0); // true
  3. var_dump("1admin" == 1); // true
  4. var_dump("admin1" == 1); // false
  5. var_dump("admin1" == 0); // true
  6. var_dump("0e123456" == "0e4456789"); // true
  7. ?>

"admin" == 0 比较的时候,会将admin转化成数值,强制转化,由于admin是字符串,转化的结果是 0 自然和 0 相等;

"1admin" == 1 比较的时候会将1admin转化成数值,结果为 1;

"admin1" == 1 却等于错误,也就是"admin1"被转化成了 0;

"0e123456" == "0e456789"相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0 的无论多少次方都是零,所以相等。


回到题目,我们为了绕过if限制,可以构造特殊的数据类型。a可以是hellob就构造成2022wrold

题目是从GET方法拿到参数的,这意味着我们把参数通过 URL 传递进去。所以我们得到:

007-2.png