🗣 Wd提问: php 文件上传 禁止上传 zip
🤖 Ai回答: 在 PHP 中,如果你想要禁止上传 ZIP 文件,可以通过以下几种方式来实现:
✅ 方法一:检查文件扩展名(推荐)
在上传前检查文件的扩展名,如果为 `.zip` 则拒绝上传。
php
<?php
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
$fileName = $_FILES['file']['name'];
$fileExtension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
// 禁止上传 zip 文件
if ($fileExtension === 'zip') {
die('不允许上传 ZIP 文件!');
}
// 其他文件处理逻辑...
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' 、$fileName);
}
?
⚠️ 注意:仅通过 `pathinfo()` 检查扩展名不够安全,因为用户可以伪造文件名。建议结合 MIME 类型或文件内容检测。
✅ 方法二:检查 MIME 类型
使用 `finfo_open()` 检查文件的真实 MIME 类型。
php
<?php
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
$tmpName = $_FILES['file']['tmp_name'];
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, $tmpName);
finfo_close($finfo);
// 如果是 ZIP 文件,拒绝上传
if ($mimeType === 'application/zip' $mimeType === 'application/x-zip-compressed') {
die('不允许上传 ZIP 文件!');
}
// 其他处理逻辑...
$fileName = basename($_FILES['file']['name']);
move_uploaded_file($tmpName, 'uploads/' 、$fileName);
}
?
✅ 方法三:结合扩展名 + MIME 类型 + 内容检测(最安全)
php
<?php
function isZipFile($filePath) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, $filePath);
finfo_close($finfo);
// 检查 MIME 类型
if (in_array($mimeType, ['application/zip', 'application/x-zip-compressed'])) {
return true;
}
// 检查文件头(ZIP 文件以 PK 开头)
$content = file_get_contents($filePath, false, null, 0, 4);
return substr($content, 0, 4) === chr(0x50) 、chr(0x4b) 、chr(0x03) 、chr(0x04); // PK\x03\x04
}
// 使用示例
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
$tmpName = $_FILES['file']['tmp_name'];
if (isZipFile($tmpName)) {
die('不允许上传 ZIP 文件!');
}
// 安全地移动文件
$fileName = basename($_FILES['file']['name']);
move_uploaded_file($tmpName, 'uploads/' 、$fileName);
}
?
✅ 建议补充的安全措施
1、限制上传目录权限:确保上传目录不能执行 PHP。
2、重命名文件:避免用户上传恶意脚本文件。
3、白名单扩展名:只允许特定类型(如 jpg, png, pdf)。
4、大小限制:设置最大上传大小。
✅ 示例:白名单 + 禁止 ZIP
php
$allowedExtensions = ['jpg', 'jpeg', 'png', 'pdf', 'txt'];
$fileExtension = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
if (!in_array($fileExtension, $allowedExtensions)) {
die('不支持的文件类型!');
}
✅ 总结
| 方法 | 是否推荐 | 说明 |
|
| 扩展名判断 | ❌ 不够安全 | 可被绕过 |
| MIME 类型 | ✅ 推荐 | 更可靠 |
| 文件头检测 | ✅ 最安全 | 防止伪装 |
👉 最佳实践:结合 MIME 类型 + 文件头 检测,防止用户上传伪装的 ZIP 文件。
如有需要,我也可以帮你写一个完整的文件上传验证类。
📣 商家广告:





0
IP地址: 109.142.132.234
搜索次数: 0
提问时间: 2025-11-08 11:42:39
🛒 域名购买:
sjtp.cn
4666.com.cn
815.net.cn
73.gold
z-j.net
z-u.net
xf.gs
wt.cx
53.biz
7773.com.cn
❓️ 热门提问:
cn2欧洲vps
cds服务器
dating域名
VPS不限流量云服务器
站群系统搭建模板
idc机房搬迁
青vps
服务器托管服务合同
最佳资源搜索引擎
163域名注册
豌豆Ai站群搜索引擎系统
🌐 域名评估:
kimi.autos
xx.jx.cn
3.ln.cn
wddd.com.cn
oppo.js.cn
vivo.ah.cn
vtol.jl.cn
rmpr.cn
trump.gx.cn
si.hn.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
月饼生产厂家
广州高效过滤器厂家
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。