php - 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"};
它也会正常执行。
解决方案
推荐阅读
- java - 远程数据库未与 Java 应用程序连接
- ruby - google-oauth2 + devise :: service.list_user_labels user_id - 错误 - Google::Apis::ClientError: 请求的身份验证范围不足
- r - 比较两个对象,然后只返回匹配值
- c++ - C++(Arduino)中.NET的MemoryMarshal的等价物?
- arduino - 4x3 键盘不适用于 RFID RC522 模块
- python - python中具有四列数据的三元绘图
- python - 如何修复 python 套接字 HTTP/1.1 400 BAD REQUEST 错误
- javascript - react-native expo 问题中的网络请求失败
- c# - 为什么 FileContentResult 将文件内容放入响应正文而不是通过文件下载?
- macos - 使用 XAMPP 在 macOS 上创建虚拟主机