Tải lên một hình ảnh bằng PHP rất dễ dàng nhưng việc xác thực hợp lệ như xác thực loại hình ảnh là một điều khó khăn. Trong bài đăng này, chúng ta sẽ tìm hiểu cách tải lên một hình ảnh có xác thực loại, chiều rộng, chiều cao và kích thước [MB, Kb] bằng cách sử dụng PHP với mã nguồn miễn phí
- ✅ Ý tưởng cơ bản về tải lên hình ảnh bằng PHP
- ✅ Xác thực loại hình ảnh PHP
- ✅ Xác thực chiều rộng và chiều cao của hình ảnh PHP
- ✅ Xác thực kích thước hình ảnh PHP [MB, Kb]
Ý tưởng cơ bản về "tải hình ảnh lên bằng PHP"
Trước hết, nếu bạn muốn tải lên một hình ảnh bằng PHP và biểu mẫu HTML thì bạn cần sử dụng action="your-script . Đảm bảo bạn đặt tên thích hợp cho trường nhập liệu của mình.
Upload File
Ghi chú. Không có enctype="multipart/form-data" bạn không thể tải tệp lên
Trong tập lệnh php của bạn, bạn cần bắt tệp bằng cách sử dụng biến siêu toàn cục PHP $_FILES. Vì vậy, trước hết hãy lấy tệp và từ tệp, lấy đường dẫn tạm thời và tên thực của tệp
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path
Ghi chú. Đừng quên lấy tập tin tạm thời
tải lên tệp php
Sau đó, sử dụng hàm move_uploaded_file[] tích hợp trong PHP để tải tệp lên. Hàm này sẽ nhận hai tham số, một là đường dẫn tạm thời của hình ảnh của bạn và một tham số khác là vị trí [có tên tệp] nơi bạn muốn tải lên
$upload_location = "../upload/"; // targeted location $location_with_name = $upload_location.$name; // like upload/images/my-image.jpg move_uploaded_file[$temporary_file, $location_with_name];
Ghi chú. Nếu bạn muốn tạo một tên duy nhất cho hình ảnh tải lên của mình, bạn có thể sử dụng hàm PHP time[] khi đổi tên
PHP đặt tên duy nhất trước khi tải lên
$str_to_arry = explode['.',$name]; $extension = end[$str_to_arry] // get extension of the file. $upload_location = "../upload/"; // targeted location $new_name = "upload-image-".time[].".".$extension; // new name $location_with_name = $upload_location.$new_name; // finel new file move_uploaded_file[$temporary_file, $location_with_name];
Ghi chú. Ở đây chúng tôi đã sử dụng chức năng phát nổ để có được phần mở rộng
PHP lấy phần mở rộng tệp
$str_to_arry = explode['.',$name]; $extension = end[$str_to_arry] // get extension of the file.
Ghi chú. ở đây chúng tôi đã sử dụng hàm phát nổ chuỗi PHP [] để lấy phần mở rộng tệp. Nhưng hãy nhớ để phát hiện loại tệp thực tế, bạn cần kiểm tra loại tệp mime
PHP nhận loại tệp mime
$finfo = finfo_open[FILEINFO_MIME_TYPE]; $file_type = finfo_file[$finfo, $temporary_file];
Xác thực loại hình ảnh PHP
Để xác thực loại hình ảnh, bạn có thể sử dụng kỹ thuật kiểm tra phần mở rộng tệp hoặc loại tệp, nhưng chỉ kiểm tra phần mở rộng không phải là cách hợp lệ để xác thực loại tệp hoặc xác thực loại hình ảnh
Giả sử bạn đang cố xác thực một hình ảnh chỉ bằng kỹ thuật kiểm tra phần mở rộng tệp. Giờ ai đó up kiểu khác đi[. md] của tệp [virus hoặc hack] chỉ cần đổi tên loại tệp từ. md để. jpg, trong trường hợp này, xác thực của bạn sẽ không thành công. Vì vậy, không chỉ áp dụng kiểm tra loại tệp
$file_type = $file['type']; if[$file_type != "jpg" || $file_type != "jpeg"]{ echo "This is not an image"; }
Ghi chú. Đừng làm điều này
Vì vậy, cách thực tế để xác thực tệp hoặc hình ảnh của bạn bằng PHP là kiểm tra tệp kiểu MIME. PHP cung cấp chức năng mặc định để kiểm tra tệp Loại MIME
$finfo = finfo_open[FILEINFO_MIME_TYPE]; $file_type = finfo_file[$finfo, $temporary_file]; if[$file_type != "image/jpeg" || $file_type != "image/png"]{ echo "This is not an image"; }
Ghi chú. làm như thế này
Ghi chú. Tải xuống toàn bộ mã nguồn để hiểu rõ hơn
PHP lấy chiều cao và chiều rộng của hình ảnh
Việc kiểm tra chiều rộng và chiều cao của hình ảnh bằng PHP rất dễ dàng, sử dụng hàm getimagesize[] mặc định của PHP chúng ta có thể dễ dàng lấy được chiều rộng và chiều cao của hình ảnh, phương thức này sẽ lấy đường dẫn tạm thời của hình ảnh
________số 8
One should *NOT* upload untrusted files into your web tree, on any server.
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path0
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path1
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path2
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path3
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path4
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path5
$file = $_FILES['my_file']; $name = $file['name']; $temporary_file = $file['tmp_name']; // temporary path6