php网页实现删除图片
删除图片的基本步骤
在PHP网页中实现删除图片功能,通常涉及以下步骤:
-
获取图片路径
通过表单提交、URL参数或数据库记录获取待删除图片的路径或文件名。
$imagePath = $_POST['image_path']; // 或 $_GET['image_path'] -
验证路径合法性
检查路径是否有效,避免删除非目标文件(如通过路径遍历攻击)。
$baseDir = '/var/www/uploads/'; // 限定目录范围 $fullPath = realpath($baseDir . $imagePath); if (strpos($fullPath, $baseDir) !== 0 || !file_exists($fullPath)) { die('无效的图片路径'); } -
删除文件
使用unlink()函数删除服务器上的图片文件。if (unlink($fullPath)) { echo '图片删除成功'; } else { echo '删除失败,请检查权限'; } -
更新数据库(可选)
若图片路径存储在数据库中,需同步删除记录。$pdo->prepare("DELETE FROM images WHERE path = ?")->execute([$imagePath]);
安全注意事项
- 权限检查:确保PHP进程对目标目录有写权限。
- 用户授权:删除前验证用户是否有操作权限(如Session验证)。
- 日志记录:记录删除操作以便追踪。
完整示例代码
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
die('请登录');
}
$imagePath = $_POST['image_path'];
$baseDir = '/var/www/uploads/';
$fullPath = realpath($baseDir . $imagePath);
if (strpos($fullPath, $baseDir) === 0 && file_exists($fullPath)) {
if (unlink($fullPath)) {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$pdo->prepare("DELETE FROM images WHERE path = ?")->execute([$imagePath]);
echo '图片及记录已删除';
}
} else {
echo '操作失败:路径无效';
}
?>






