以下是一个简单的 PHP 上传文件的代码示例,包含文件类型验证、大小限制和安全措施:

<?php
// 检查是否有文件上传
if(isset($_FILES['file'])){  
    $file = $_FILES['file'];

    // 文件信息
    $fileName = $file['name'];
    $fileTmpName = $file['tmp_name'];
    $fileSize = $file['size'];
    $fileError = $file['error'];

    // 获取文件扩展名
    $fileExt = pathinfo($fileName, PATHINFO_EXTENSION);

    // 允许上传的文件类型
    $allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');

    // 检查文件类型是否允许上传
    if(in_array($fileExt, $allowedExtensions)){  
        // 检查是否有文件上传错误
        if($fileError === 0){  
            // 检查文件大小是否超过限制
            if($fileSize < 5000000){  
                // 为上传的文件生成一个唯一的文件名
                $newFileName = uniqid('', true) . '.' . $fileExt;

                // 上传文件的目标路径
                $uploadPath = 'uploads/' . $newFileName;

                // 将文件移动到目标路径
                move_uploaded_file($fileTmpName, $uploadPath);

                echo '文件上传成功!';
            }else{  
                echo '文件大小超过限制!';
            }
        }else{  
            echo '文件上传错误!';
        }
    }else{  
        echo '不允许上传该类型的文件!';
    }
}
?>

<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传文件">
</form>

最佳实践:

  • 验证文件类型: 使用 in_array() 函数检查文件扩展名是否在允许的列表中,以防止上传恶意文件。
  • 限制文件大小: 使用 $fileSize 变量检查文件大小是否超过限制,防止过大的文件占用过多服务器资源。
  • 生成唯一文件名: 使用 uniqid() 函数生成唯一的文件名,避免文件名冲突。
  • 设置上传目录: 将上传的文件存储在指定的目录中,并确保该目录具有写入权限。
  • 安全性: 上传文件时,应始终验证用户输入并采取适当的安全措施,以防止恶意攻击。

注意: 上述代码假设你的上传文件目录为 "uploads/",你需要在服务器上创建一个名为 "uploads" 的文件夹,并确保该文件夹具有适当的写入权限。

其他资源:

PHP 上传文件代码示例 - 完整指南和最佳实践

原文地址: https://www.cveoy.top/t/topic/d47Z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录