NTM Solutions

Bài đăng nổi bật

🐘 PHP Cơ Bản 8.2 — CẤP ĐỘ TRỨNG🥚

Tự học PHP từ ZERO đến làm web động #laptrinhphpcoban 📘 PHẦN 1 — NHẬP MÔN PHP Bài 00 — Giới thiệu khóa học & cài đặt môi trường PHP là ...

Thứ Sáu, 19 tháng 6, 2026

📝Bài 19 — Upload File Bằng PHP📄

#laptrinhphpcoban

x0


🎯 Mục tiêu bài học

Sau bài này bạn sẽ biết:

✅ Upload file từ máy người dùng lên server
✅ Sử dụng biến $_FILES
✅ Kiểm tra phần mở rộng (extension) của file
✅ Đổi tên file khi upload
✅ Upload ảnh an toàn hơn


📌 Upload File Là Gì?

Upload file là quá trình người dùng gửi một tập tin từ máy tính của họ lên website.

Ví dụ:

📷 Ảnh đại diện

📄 Tài liệu PDF

🎵 File âm thanh

🎬 Video

PHP hỗ trợ upload thông qua biến super global:

$_FILES

📌 Form Upload File

Muốn upload file phải có:

enctype="multipart/form-data"

Ví dụ:

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="avatar">
    <button type="submit">
        Upload
    </button>
</form>

📌 Xem Dữ Liệu Trong $_FILES

File PHP:

<?php

if(isset($_FILES["avatar"]))
{
    echo "<pre>";
    print_r($_FILES["avatar"]);
    echo "</pre>";
}
?>

Kết quả:

Array
(
    [name] => hinh.jpg
    [type] => image/jpeg
    [tmp_name] => C:\xampp\tmp\php123.tmp
    [error] => 0
    [size] => 152300
)

📌 Ý Nghĩa Các Thành Phần

🔢🏷️ Thuộc tính📝 Ý nghĩa
1️⃣nameTên file gốc
2️⃣typeLoại MIME
3️⃣tmp_nameFile tạm trên server
4️⃣errorMã lỗi
5️⃣sizeKích thước file

📌 Di Chuyển File Đến Thư Mục Mong Muốn

PHP dùng hàm:

move_uploaded_file()

Ví dụ:

<?php

if(isset($_FILES["avatar"]))
{
    move_uploaded_file(
        $_FILES["avatar"]["tmp_name"],
        "uploads/" . $_FILES["avatar"]["name"]
    );

    echo "Upload thành công";
}
?>

📌 Tạo Thư Mục Upload

Trong project:

project/
│
├── index.php
│
└── uploads/

Thư mục:

uploads

là nơi lưu ảnh sau khi upload.


📌 Kiểm Tra Extension

Không nên cho upload mọi loại file.

Lấy extension:

$ext = pathinfo(
    $_FILES["avatar"]["name"],
    PATHINFO_EXTENSION
);

echo $ext;

Ví dụ:

jpg
png
gif

📌 Chỉ Cho Phép Upload Ảnh

<?php

$allow = [
    "jpg",
    "jpeg",
    "png",
    "gif"
];

$ext = strtolower(
    pathinfo(
        $_FILES["avatar"]["name"],
        PATHINFO_EXTENSION
    )
);

if(in_array($ext, $allow))
{
    echo "Ảnh hợp lệ";
}
else
{
    echo "Không phải file ảnh";
}
?>

📌 Kiểm Tra Kích Thước File

Ví dụ chỉ cho phép tối đa 2 MB:

if($_FILES["avatar"]["size"] <= 2 * 1024 * 1024)
{
    echo "Kích thước hợp lệ";
}
else
{
    echo "File quá lớn";
}

📌 Đổi Tên File Khi Upload

Không nên lưu tên gốc.

Ví dụ:

$newName = time() . ".jpg";

Hoặc:

$newName = uniqid() . ".jpg";

Upload:

move_uploaded_file(
    $_FILES["avatar"]["tmp_name"],
    "uploads/" . $newName
);

📌 Ví Dụ Hoàn Chỉnh

<?php

if(isset($_FILES["avatar"]))
{
    $allow = [
        "jpg",
        "jpeg",
        "png",
        "gif"
    ];

    $ext = strtolower(
        pathinfo(
            $_FILES["avatar"]["name"],
            PATHINFO_EXTENSION
        )
    );

    if(!in_array($ext, $allow))
    {
        exit("File không hợp lệ");
    }

    $newName = uniqid() . "." . $ext;

    move_uploaded_file(
        $_FILES["avatar"]["tmp_name"],
        "uploads/" . $newName
    );

    echo "Upload thành công";
}
?>

<form method="POST"
      enctype="multipart/form-data">

    <input type="file"
           name="avatar">

    <button type="submit">
        Upload
    </button>

</form>

⚠️ Lưu Ý Bảo Mật

Không nên tin tưởng:

$_FILES["file"]["name"]

Luôn:

✅ Kiểm tra extension

✅ Kiểm tra kích thước

✅ Đổi tên file

✅ Chỉ cho upload thư mục riêng

✅ Không cho upload file PHP


🧪 Bài Tập Thực Hành

Bài 1

Upload một ảnh bất kỳ lên thư mục:

uploads/

Bài 2

Chỉ cho phép:

jpg
png
gif

Bài 3

Giới hạn kích thước:

2 MB

Bài 4

Đổi tên file bằng:

uniqid()

🎯 Tổng Kết

Trong bài này bạn đã học:

$_FILES

✅ Form upload file

move_uploaded_file()

✅ Kiểm tra extension

✅ Kiểm tra kích thước file

✅ Đổi tên file

➡️ Bài tiếp theo: Bài 20 — Session & Cookie

╔══════════════════════╗
made by AI 🐘📂
╚══════════════════════╝

quay về MỤC LỤC

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS