header跳转到一个文件链接,如果这个文件链接是404,那么修改文件的后缀,再次重试
时间:2023年10月04日
/来源:网络
/编辑:佚名
以下是整理和优化后的代码:
$file_url = $_GET['src'];
$file_extensions = array('png', 'jpeg', 'jpg');
foreach ($file_extensions as $extension) {
$r = pathinfo($file_url, PATHINFO_EXTENSION);
$new_file_url = str_replace($r, $extension, $file_url);
if (@get_headers($new_file_url)[0] === 'HTTP/1.1 200 OK') {
header("Location: $new_file_url");
exit;
}
}
header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found", true, 404);
echo "File not found.";
优化后的代码进行了以下改进:
删掉了不必要的 false != 检查,可以直接使用 @get_headers() 返回的结果。
将文件访问的代码移到循环体内,这样只要找到一个有效的就可以直接跳转访问了。
将没有找到文件的情况移到循环体外输出,这样就不会有多个 “File not found.” 的输出,使代码更简洁。
$file_url = $_GET['src'];
$file_extensions = array('png', 'jpeg', 'jpg');
foreach ($file_extensions as $extension) {
$r = pathinfo($file_url, PATHINFO_EXTENSION);
$new_file_url = str_replace($r, $extension, $file_url);
if (@get_headers($new_file_url)[0] === 'HTTP/1.1 200 OK') {
header("Location: $new_file_url");
exit;
}
}
header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found", true, 404);
echo "File not found.";
优化后的代码进行了以下改进:
删掉了不必要的 false != 检查,可以直接使用 @get_headers() 返回的结果。
将文件访问的代码移到循环体内,这样只要找到一个有效的就可以直接跳转访问了。
将没有找到文件的情况移到循环体外输出,这样就不会有多个 “File not found.” 的输出,使代码更简洁。
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03