warmup
2024-10-08 11:43:22
先简单了解下源码中的2个函数:
<?php
echo mb_strpos("朋友比生命还重要?或许是吧" . '?',"?");
echo "\n";
echo mb_substr("朋友比生命还重要?或许是吧",0,mb_strpos("朋友比生命还重要?或许是吧" . '?',"?"));
运行结果(先用在线,hhh):
8
朋友比生命还重要
附上源码:
<?php
highlight_file(__FILE__); //对_FILE_文件进行语法高亮显示
class emmm
{
public static function checkFile(&$page) //&$page是引用传参page(即file)
{
//白名单数组
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
//isset()判断是否声明了$page变量,is_string()判断$page是否为字符串
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
//如果$page变量在白名单数组中,则返回真
if (in_array($page, $whitelist)) {
return true;
}
//将?之前的字符串赋值给$_page
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?') //?在$page . '?'出现的第一个位置
);
//如果$_page变量在白名单数组中,则返回真
if (in_array($_page, $whitelist)) {
return true;
}
//对$page变量url解码
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
//如果$_page变量在白名单中,则返回真
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file']) //要求$_REQUEST['file']非空
&& is_string($_REQUEST['file']) //是字符串
&& emmm::checkFile($_REQUEST['file']) //$_REQUEST['file']能通过类checkFile()函数的校验
) {//同时满足3个条件,则包含$_REQUEST['file']文件
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
参考链接:https://www.jianshu.com/p/36eaa95068ca
最新文章
- 掌握 Cinder 的设计思想 - 每天5分钟玩转 OpenStack(46)
- strong &; weak
- 2008server安装Intel I217V网卡驱动
- 【转载】使用barman备份PostgreSQL
- 【转】LINUX下一款不错的网站压力测试工具webbench
- EasyUI - 一般处理程序 返回 Json值
- jQuery中的attr()和prop()使用
- 将docker镜像上传到docker hub
- 使用JAVA数组实现顺序表
- iOS NSArray 的count方法返回的是无符号整形!
- 分享下自己写的一个微信小程序请求远程数据加载到页面的代码
- C#批量插入数据到Sqlserver中的四种方式 - 转
- BZOJ1901Zju2112 Dynamic Rankings——树状数组套主席树
- 当面试官问你GET和POST区别的时候,请这么回答.......
- ZYNQ. LwIP.PHY.KSZ9031RNX
- Android通用框架设计与完整电商APP开发系列文章
- PHP实现多进程并行操作,可做守护进程(转,备用)
- ASP.NET Web Pages:简介
- oracle dblink结合同义词的用法 PLS-00352:无法访问另一数据库
- Solr开发文档(转)