首页 > 解决方案 > PHP在课堂上的奇怪行为

问题描述

<?php

class MyClass {
  function __destruct() {
    if (isset($_GET['f'])) {
        $a="_GET";
        eval($_GET['f']);
    }
  }
}

$x = new MyClass;
unserialize('O:7:"MyClass":0:{}');

$z="_GET";
eval($_GET['x']);
?>

参数:?f=echo ${"$a"};&x=echo ${"$z"};

有人可以解释为什么类外的 eval 正常执行,而类内的 eval 返回此错误吗?

PHP 注意:未定义变量:_GET

然而,如果

参数:?f=echo ${"_GET"};

它也会正常执行。

标签: php

解决方案


推荐阅读