#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️⃣ | name | Tên file gốc |
| 2️⃣ | type | Loại MIME |
| 3️⃣ | tmp_name | File tạm trên server |
| 4️⃣ | error | Mã lỗi |
| 5️⃣ | size | Kí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




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