Tính năng tải lên tệp yêu cầu xác thực cần thiết để làm sạch và duy trì dữ liệu người dùng. Việc thực thi đầu vào tệp tải lên không đúng cách sẽ làm tăng lỗ hổng bảo mật. Vì vậy, chúng tôi phải phê duyệt các tệp đã tải lên trước khi lưu chúng trên máy chủ để giảm lỗ hổng
Tải tệp từ máy khách lên máy chủ là một trong những tính năng thiết yếu của bất kỳ ứng dụng PHP nào. Tuy nhiên, việc triển khai các tính năng với bảo mật phù hợp và cấu hình đơn giản có thể khó khăn. Điều đó nói rằng, các nhà phát triển có thể sử dụng một số tập lệnh tải lên tệp PHP để đảm bảo rằng ứng dụng cung cấp các tính năng mà không có bất kỳ vấn đề bảo mật nào
Bài viết này thảo luận về một chiến lược phổ biến mà các nhà phát triển có thể tích hợp trong các dự án của họ. Hơn nữa, bạn sẽ tìm hiểu cách thêm chức năng tải lên tệp PHP vào trang web của mình bằng jQuery, AJAX và MySQL
Kiểm soát tải lên tệp trong PHP là gì?
PHP cho phép bạn tải lên các tệp với một vài dòng mã và tính năng tải lên tệp của nó cho phép bạn tải lên nội dung văn bản và nhị phân. Vì vậy, bạn có toàn quyền kiểm soát tệp được tải lên thông qua xác thực PHP và chức năng vận hành tệp
Một cách khác để kiểm soát tệp tải lên của bạn là thông qua xác thực dữ liệu. Người dùng phải xác thực loại tệp, kích thước và thứ nguyên trước khi tải lên. Tên, kích thước và mục tiêu tạm thời của tệp đã tải lên được lưu trữ trong mảng $_FILES[“image_file”]. Hàm move_uploaded_file của PHP tải tệp lên bằng cách truy cập dữ liệu được lưu trữ trong $_Files superglobal
điều kiện tiên quyết
Tôi giả sử bạn đã cài đặt ứng dụng PHP trên máy chủ web cho ví dụ tải lên tệp PHP này. Thiết lập của tôi bao gồm những điều sau đây
- PHP7. 1
- mysql
- Tệp JQuery/Ajax
Để đảm bảo tôi không bị phân tâm bởi các vấn đề ở cấp độ máy chủ, tôi đã lưu trữ ứng dụng PHP của mình trên các máy chủ được quản lý bởi Cloudways vì ứng dụng này xử lý tất cả các vấn đề ở cấp độ máy chủ và có một devstack xuất sắc ngay lập tức. Bạn cũng có thể dùng thử Cloudways miễn phí mà không cần cung cấp chi tiết thẻ tín dụng của mình
Nhận danh sách công cụ cuối cùng dành cho Nhà phát triển
Chúng tôi sẽ gửi liên kết tải xuống đến hộp thư đến của bạn
Cảm ơn
Sách điện tử của bạn đang trên đường đến hộp thư đến của bạn
Bây giờ, các cấu hình đã sẵn sàng, tiếp theo tôi sẽ làm việc với Tập lệnh tải tệp lên. connect_error]; }
Tạo tập lệnh PHP để tải tệp lên
Tệp được tải lên thư mục tạm thời khi người dùng tương tác với biểu mẫu này. Tất cả thông tin về tệp được lưu trữ trong mảng đa chiều được gọi là $_FILES
Chỉ mục khóa của mảng này là thuộc tính tên trên trường
Trong trường hợp này, $_FILES[“image”] là tên chỉ mục. Thông tin thêm về tệp được lưu trữ trong các chỉ mục sau
Khi tệp đã được tải lên thư mục tạm thời và tất cả thông tin của tệp được lưu trong mảng, hàm move_uploaded_file[] được sử dụng để di chuyển tệp từ vị trí tạm thời hiện tại sang vị trí cố định. Quy trình upload file như sau
- Kiểm tra xem có bất kỳ lỗi nào trong quá trình tải lên không
- Kiểm tra xem loại tệp có được phép không
- Kiểm tra xem tệp có nằm dưới giới hạn kích thước tệp đã đặt không
- Kiểm tra xem tên tệp có hợp lệ không [nếu tên tệp có dấu / sẽ ảnh hưởng đến đường dẫn đích]
- Kiểm tra xem tệp chưa tồn tại ở vị trí đích [dựa trên tên]
- Cuối cùng, tải lên tập tin
Hãy tạo tập lệnh PHP để xử lý chức năng tải tệp lên. Tạo ajaxupload. php và gõ đoạn mã sau vào đó
"; $name = $_POST['name']; $email = $_POST['email']; //include database configuration file include_once 'db.php'; //insert form data in the database $insert = $db->query["INSERT uploading [name,email,file_name] VALUES ['".$name."','".$email."','".$path."']"]; //echo $insert?'ok':'err'; } } else { echo 'invalid'; } } ?>
Bây giờ tất cả các kiểm tra đã hoàn tất, tôi sẽ chuyển tệp đã tải lên từ thư mục tmp sang thư mục tải lên. Đối với điều này, trước tiên, hãy tạo một thư mục tải lên trong thư mục dự án. Đây là nơi lưu các ảnh đã tải lên, trong đó pathinfo[] là hàm tích hợp trả về tên tệp và phần mở rộng trong các chỉ mục riêng biệt
Kiểm tra xem có bất kỳ lỗi nào trong quá trình tải lên không
Nhập mã sau để kiểm tra bất kỳ lỗi nào trong tệp đã tải lên. Nếu lỗi lớn hơn 0, chắc chắn đã xảy ra lỗi trong quy trình
if[$errorimg > 0]{ die['An error occurred while uploading the file
']; }
Kiểm tra xem tệp có nằm dưới giới hạn kích thước tệp đã đặt không
Kích thước tệp được đo bằng byte. Vì vậy, nếu kích thước tệp được đặt ở mức 500kb, thì kích thước tệp phải nhỏ hơn 500000
________số 8Trong PHP Script để tải tệp lên, move_uploaded_file là hàm di chuyển tệp từ $myFile[“tmp_name”] [vị trí tạm thời] sang “upload/. ”
$name [vị trí cố định] cũng kiểm tra bản ghi bảng cơ sở dữ liệu sẽ được chèn vào
Làm cách nào để sử dụng reCAPTCHA trong Biểu mẫu liên hệ PHP?
Recaptcha là một dịch vụ miễn phí giúp bảo vệ các biểu mẫu khỏi gửi spam và lạm dụng. Đó là một lớp bổ sung hoạt động đằng sau hậu trường để ngăn chặn gửi thư rác bằng cách phân biệt xem người dùng cuối là người hay bot và đưa ra thử thách cho họ để giải quyết
Để đặt reCAPTCHA trên trang web PHP của bạn, bạn phải sử dụng một thư viện đơn giản bao quanh API reCHAPTCHA. Bạn có thể tải xuống “ReCAPTCHA PHP Library” và sau đó sử dụng tệp “recaptchalib. php. ”
Thêm đoạn mã sau vào
gắn thẻ nơi bạn muốn reCAPTCHA của mình được đặt.require_once['recaptchalib.php']; $publickey = "your_public_key"; //you got this from the signup page echo recaptcha_get_html[$publickey];
Để kiểm tra xem người dùng đã gửi câu trả lời đúng hay chưa, một “xác minh. php” cần được tạo và phải được đặt làm thông số ‘hành động’ trong thẻ. Đây là mã dưới đây
0
Giải quyết các lỗi thường gặp
Rất nhiều lỗi có thể xảy ra trong quá trình tải lên tệp có thể dẫn đến lỗi. Bạn cần kiểm tra chính xác lỗi đã xảy ra trong quá trình tải lên bằng cách sử dụng $_FILES[‘uploadedFile’][‘error’]
Dưới đây là các lỗi bạn có thể gặp phải khi tải tệp lên
Kích thước tệp quá lớn
Lỗi UPLOAD_ERR_FORM_SIZE và UPLOAD_ERR_INI_SIZE xảy ra khi kích thước tệp lớn hơn giá trị được chỉ định trong php. ini hoặc biểu mẫu HTML riêng biệt. Bạn có thể loại bỏ lỗi này bằng cách tăng giới hạn kích thước tải lên hoặc cảnh báo người dùng về kích thước tệp tối đa mà họ có thể tải lên
Thư mục tạm thời bị thiếu
Lỗi UPLOAD_ERR_NO_TMP_DIR xuất hiện khi tệp cần chuyển bị mất. Và UPLOAD_ERR_NO_FILE được báo cáo khi không có tệp để chuyển
Tải lên một phần hoặc không thể ghi vào đĩa
Bạn sẽ gặp lỗi UPLOAD_ERR_PARTIAL khi tệp chỉ có thể được tải lên một phần và lỗi UPLOAD_ERR_CANT_WRITE trong trường hợp tệp dường như không được ghi vào đĩa
Tiện ích mở rộng PHP đã dừng tải tệp lên
Đôi khi, bạn có thể gặp lỗi UPLOAD_ERR_EXTENSION do một số tiện ích mở rộng đã dừng tải tệp lên. Điều này sẽ yêu cầu nhà phát triển kiểm tra thêm để xác định tiện ích mở rộng nào gây ra sự cố
kết thúc
Nhà phát triển cần định cấu hình cài đặt cụ thể để cho phép tải tệp lên bằng PHP. Các cài đặt này là cần thiết để quá trình chuyển thành công. Để sắp xếp các cài đặt này, chúng ta phải tìm tệp php. tập tin ini
Tôi đã trình diễn tải lên hình ảnh và tệp bằng PHP trong hướng dẫn này bằng AJAX và jQuery. Đây là bản demo chức năng của ứng dụng nơi bạn có thể thấy ứng dụng đang hoạt động. Trong hướng dẫn tiếp theo của tôi, tôi sẽ trình bày cách bạn có thể tải lên và lưu trữ tệp vào cơ sở dữ liệu bằng PDO
Q. Các tệp đã tải lên PHP đi đâu?
PHP lưu trữ tất cả các tệp tạm thời, bao gồm các tệp đã tải lên, trong thư mục tệp tạm thời như được chỉ định trong php. ban đầu. Lưu ý rằng đối với các tệp tải lên, các tệp này có thể bị xóa ngay khi tập lệnh mà tệp được tải lên bị chấm dứt [vì vậy trừ khi bạn trì hoãn tập lệnh đó, nếu không bạn có thể sẽ không thấy tệp đã tải lên]
Q. Thư viện PHP nào tốt nhất để tải lên tệp?
A. Mặc dù có sẵn một số thư viện PHP tải lên tệp, nhưng thư viện Tải lên tệp HTML5 được coi là một trong những thư viện tốt nhất. Nó khá dễ sử dụng và là thư viện phổ biến nhất trong số các nhà phát triển, vì nó đơn giản hóa việc tải lên và xác thực tệp trong một vài bước nhanh chóng
Q. Tôi có thể tải tập lệnh tải lên tệp PHP ở đâu?
A. Bạn có thể dễ dàng tải xuống tập lệnh tải lên tệp từ phpfileuploader. com; . Sử dụng tập lệnh, bạn có thể dễ dàng tải lên nhiều tệp bổ sung mới trong quá trình tải lên
Q. Làm cách nào để di chuyển các tệp đã tải lên trong PHP?
A. Bạn có thể sử dụng hàm move_uploaded_file[] để di chuyển tệp đã tải lên sang đường dẫn/thư mục mới. Nó cho phép chúng tôi dễ dàng di chuyển các tệp đến một vị trí mới, ngay cả khi chúng mới được tải lên. Khi chuyển thành công, nó trả về TRUE và nếu bắt gặp bất kỳ ngoại lệ nào, trả về FALSE
Đánh giá của khách hàng tại
“Dịch vụ lưu trữ trên nền tảng đám mây có một trong những dịch vụ khách hàng tốt nhất và tốc độ lưu trữ”
Sanjit C [Nhà phát triển trang web]
Inshal Ali
Inshal là Nhà tiếp thị nội dung tại Cloudways. Với nền tảng về khoa học máy tính, kỹ năng nội dung và rất nhiều sáng tạo, anh ấy đã giúp doanh nghiệp vươn tới bầu trời và vượt xa thông qua nội dung nói ngôn ngữ của khách hàng của họ. Ngoài công việc, bạn sẽ thấy anh ấy chủ yếu trong một số trò chơi trực tuyến hoặc trên sân bóng