<?phphighlight_file(__FILE__);classemmm{publicstaticfunctioncheckFile(&$page){$whitelist=["source"=>"source.php","hint"=>"hint.php"];//定义白名单数组,有两个值if(!isset($page)||!is_string($page)){echo"you can't see it";returnfalse;}//这段代码的意思是检查page变量是否没有被设置,并且检查是否不是字符串,满足一个就返回FALSEif(in_array($page,$whitelist)){returntrue;}//如果page变量在白名单数组内,返回TRUE//如果不在,继续执行下面代码$_page=mb_substr($page,0,mb_strpos($page.'?','?'));//将page变量重新赋值为第一个?前的内容,再次检查是否在白名单里面if(in_array($_page,$whitelist)){returntrue;}//如果不含问号:$_page=urldecode($page);//对其进行编码$_page=mb_substr($_page,0,mb_strpos($_page.'?','?'));//在结尾添加?重复上述操作if(in_array($_page,$whitelist)){returntrue;}echo"you can't see it";returnfalse;}}//这里才是核心逻辑,请求一个file参数if(!empty($_REQUEST['file'])//判断是否非空&&is_string($_REQUEST['file'])//是否为字符串&&emmm::checkFile($_REQUEST['file'])//通过两个::可以访问类的方法和属性,这里访问的是方法){include$_REQUEST['file'];//文件包含exit;}else{echo"<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}?>