Internet chưa bao giờ là một nơi an toàn;
Trước khi tải tệp lên máy chủ, chúng tôi phải đảm bảo xác thực tệp cần thiết được thực hiện chính xác. Nếu chúng tôi không xem xét các yếu tố bảo mật, chúng tôi có thể gặp rắc rối
Ví dụ về hướng dẫn tải lên tệp PHP 8
- Hiển thị xem trước hình ảnh trước khi tải lên
- Đặt tất cả các hình ảnh đã tải lên trong một thư mục cụ thể
- Lưu trữ đường dẫn hình ảnh trong cơ sở dữ liệu MySQL
Cùng với đó, chúng tôi cũng sẽ đề cập đến việc xác thực hình ảnh sau bằng cách sử dụng PHP 8
- Kiểm tra xem hình ảnh thực sự được tải lên
- Chỉ cho phép phần mở rộng tệp cụ thể, chẳng hạn như. jpg,. jpeg hoặc. png
- Đảm bảo kích thước tệp không được vượt quá 2MB
- Kiểm tra xem tệp đã tồn tại chưa
Mục lục
Bắt đầu
Bắt đầu MAMP hoặc XAMPP, tạo cấu trúc thư mục và tệp sau trong thư mục htdocs
\-- php-file-upload
|-- config
|--- database.php
|-- img_dir
|--- image-1
|--- image-2
|-- file-upload.php
|-- index.php
Tạo cơ sở dữ liệu & bảng
Tạo cơ sở dữ liệu
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
4Tạo
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
5 bên trong cơ sở dữ liệuBạn có thể thực hiện lệnh sau để tạo các cột trong bảng để lưu ảnh vào cơ sở dữ liệu
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
Tạo biểu mẫu tải tệp lên
Tạo biểu mẫu HTML cho phép người dùng của chúng tôi chọn hình ảnh từ thiết bị cục bộ của họ giống hình ảnh mà họ muốn lưu trữ trên máy chủ
Loại đầu vào phải được đặt thành tệp cùng với thuộc tính tên
Ngoài ra, hãy xác định các thẻ method=”post” và enctype=”multipart/form-data”
Upload File in PHP 8
Select file
Upload File
Xem trước hình ảnh hiển thị
Bạn có thể hiển thị bản xem trước hình ảnh trước khi tải nó lên máy chủ với sự trợ giúp của jQuery
Nhập liên kết jQuery CDN trước thẻ đóng body
Chúng tôi đã khai báo thẻ hình ảnh với thẻ src=”” trống
Hàm sau chuyển đổi chuỗi hình ảnh và đặt url base64 vào thẻ HTML
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
6 khi người dùng chọn hình ảnhĐặt đoạn mã sau ngay sau thẻ tập lệnh jQuery CDN
________số 8_______Cấu hình cơ sở dữ liệu
Thêm mã sau vào cấu hình/cơ sở dữ liệu. php để tạo kết nối PHP với cơ sở dữ liệu MySQL bằng phương thức PDO
// config/database.php
Xác thực tải lên tệp/hình ảnh trong PHP 8
Hãy để chúng tôi thêm xác thực đầu tiên của chúng tôi với sự trợ giúp của phương thức PHP file_exists[]. Hiển thị thông báo lỗi cho người dùng nếu anh ta không chọn bất kỳ hình ảnh nào
Để giải quyết các lỗi, chúng tôi thiết lập một mảng
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
7 với các thuộc tính trạng thái và thông báo. Chúng tôi sẽ hiển thị thông báo cho người dùng dựa trên phản hồi trên giao diện người dùngif [!file_exists[$_FILES["fileUpload"]["tmp_name"]]] {
$resMessage = array[
"status" => "alert-danger",
"message" => "Select image to upload."
];
}
Đoạn mã sau áp dụng xác thực cho phép loại tệp cụ thể, chẳng hạn như. jpg, jpeg và. png sẽ được tải lên máy chủ. Bạn sẽ không được phép sử dụng các loại tệp khác và sẽ hiển thị thông báo lỗi nếu bạn làm như vậy
// Get file extension
$imageExt = strtolower[pathinfo[$target_file, PATHINFO_EXTENSION]];
// Allowed file types
$allowd_file_ext = array["jpg", "jpeg", "png"];
else if [!in_array[$imageExt, $allowd_file_ext]] {
$resMessage = array[
"status" => "alert-danger",
"message" => "Allowed file formats .jpg, .jpeg and .png."
];
}
Thiết lập giới hạn kích thước tệp hình ảnh bằng mã sau. Người dùng không thể cho phép tải lên hình ảnh có kích thước lớn hơn 2MB
else if [$_FILES["fileUpload"]["size"] > 2097152] {
$resMessage=array["status"=> "alert-danger",
"message"=> "File is too large. File size should be less than 2 megabytes."
];
}
Đoạn mã dưới đây kiểm tra xem tệp hiện tại đã được tải lên chưa
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
0Tạo thư mục img_dir trong thư mục gốc của dự án tệp tải lên PHP của bạn, ở đây chúng tôi sẽ lưu trữ tất cả các hình ảnh đã tải lên
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
1Hoàn thành ví dụ tải lên tệp PHP 8
Có thể tìm thấy ví dụ hoàn chỉnh về mã tải lên tệp PHP trong phần tải lên tệp. tập tin php
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
2Bao gồm tệp tải lên. php trong chỉ mục. html ở đây, chúng tôi đã xác định biểu mẫu tải lên tệp cùng với mảng thông báo
CREATE TABLE `user` [
`id` int[11] NOT NULL,
`file_path` varchar[255] NOT NULL
] ENGINE=InnoDB DEFAULT CHARSET=utf8;
3Phần kết luận
Chúng tôi đã hoàn thành hướng dẫn Tải lên tệp PHP 8 và chúng tôi đã học cách tải lên và lưu trữ hình ảnh bằng PHP trong cơ sở dữ liệu MySQL. Tôi hy vọng bạn thích hướng dẫn này
Mã hoàn chỉnh của hướng dẫn này có thể được tìm thấy trên GitHub
máy đào
Tôi là Digamber, một nhà phát triển full-stack và là người đam mê thể dục. Tôi đã tạo trang web này để truyền kinh nghiệm mã hóa của mình cho các lập trình viên mới. Tôi thích viết trên JavaScript, ECMAScript, React, Angular, Vue, Laravel
Twitter GitHubBài viết đề xuất
Xây dựng hệ thống xếp hạng 5 sao PHP MySQL bằng jQuery AJAXPHP 8 Tìm kiếm dữ liệu trực tiếp AJAX với MySQL Hướng dẫn PHP 8 Select2 Đa lựa chọn với jQuery AJAX Hướng dẫn PHP 8 Ví dụ về mã hóa và giải mã dữ liệu JSON Ví dụ về PHP 8 Hướng dẫn xác thực biểu mẫu phía máy chủ Tích hợp Google reCAPTCHA trong PHP 8 Biểu mẫu liên hệ Cách tạo Captcha . Lấy giá trị đã chọn và thêm kiểu Cách lấy các giá trị đã chọn từ tùy chọn được chọn trong PHP 8Nhận nhiều giá trị của các hộp kiểm đã chọn trong PHP 8 Tạo phân trang trong PHP 8 với MySQL và Bootstrap