首页 > Web开发 > 详细

刚从一道题发现的一些东西,PHP笔记,关于extract和null 空字符串

时间:2019-05-13 22:33:26      阅读:163      评论:0      收藏:0      [点我收藏+]

队友发给我的一道extract变量的最基础的题目,他发现了一些问题,当传入shiyan=&flag=0时出flag,当传入shiyan=0&flag=0时不出flag,传入shiyan=&flag=时,出flag

<?php
$flag=‘xxx‘;
extract($_GET);
if(isset($shiyan))
{
$content=trim(file_get_contents($flag));
if($shiyan==$content)
{
echo‘flag{xxx}‘;
}
else
{
echo‘Oh.no‘;
}
}
?>

首先extract不光是覆盖原有变量,也是直接把数组中的键值做为变量名,数组键值作为变量数值。

技术分享图片

在解释下$_GET[ ]过程

$a=$_GET[‘a‘]

?a=yunying

相等于创建了一个get数组,传入了一个键值为a,字符串为yunying

技术分享图片

 

如果传入的是a[0]=1,键值a变成了一个数组,然后数组a中的键值为0,键值的值为1

技术分享图片

 

技术分享图片

而且不管flag经过extract覆盖为多少,content都为空字符串,因为file_get_contents无法读取变量。

并且当get传入的形式是?shiyan=  时,形式与content一样

技术分享图片

都是空字符串,所以相等。我在这里试了下后,发现null与空字符串时弱相等,并且与0也弱相等

 

总结如下,空字符串与null与0弱相等,并且extract是直接会赋值会直接再数组中操作,如果原来有这个变量,便会覆盖

刚从一道题发现的一些东西,PHP笔记,关于extract和null 空字符串

原文:https://www.cnblogs.com/BOHB-yunying/p/10859219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!