Gửi mã trong php

Tính năng này cho phép mọi người tải lên cả tệp văn bản và tệp nhị phân. Với các chức năng xác thực và thao tác tệp của PHP, bạn có toàn quyền kiểm soát ai được phép tải lên và những gì sẽ được thực hiện với tệp sau khi tệp đã được tải lên

PHP có khả năng nhận tệp tải lên từ bất kỳ trình duyệt tuân thủ RFC-1867 nào

Ghi chú. Cấu hình liên quan Lưu ý

Xem thêm các lệnh , , và trong php. ban đầu

PHP cũng hỗ trợ tải lên tệp phương thức PUT như được sử dụng bởi Netscape Composer và ứng dụng khách Amaya của W3C. Xem Hỗ trợ Phương pháp PUT để biết thêm chi tiết

Ví dụ #1 Biểu mẫu tải tệp lên

Có thể tạo màn hình tải lên tệp bằng cách tạo một biểu mẫu đặc biệt trông giống như thế này


    
    
    
    Send this file: 
    

__URL__ trong ví dụ trên nên được thay thế và trỏ đến tệp PHP

Trường ẩn MAX_FILE_SIZE [được đo bằng byte] phải đứng trước trường nhập tệp và giá trị của nó là kích thước tệp tối đa được chấp nhận bởi PHP. Phần tử biểu mẫu này phải luôn được sử dụng vì nó giúp người dùng không phải chờ đợi một tệp lớn được chuyển chỉ để thấy rằng nó quá lớn và quá trình chuyển không thành công. Ghi nhớ. Đánh lừa cài đặt này ở phía trình duyệt khá dễ dàng, vì vậy đừng bao giờ tin vào các tệp có kích thước lớn hơn bị tính năng này chặn. Nó chỉ đơn thuần là một tính năng tiện lợi cho người dùng ở phía máy khách của ứng dụng. Tuy nhiên, cài đặt PHP [ở phía máy chủ] cho kích thước tối đa không thể bị lừa

Ghi chú

Đảm bảo biểu mẫu tải lên tệp của bạn có thuộc tính enctype="multipart/form-data" nếu không quá trình tải lên tệp sẽ không hoạt động

Toàn cầu $_FILES sẽ chứa tất cả thông tin tệp đã tải lên. Nội dung của nó từ mẫu ví dụ như sau. Lưu ý rằng điều này giả định việc sử dụng tệp tải lên tên tệp người dùng, như được sử dụng trong tập lệnh ví dụ ở trên. Đây có thể là bất kỳ tên nào

$_FILES['tệp người dùng']['tên']

Tên gốc của tệp trên máy khách

$_FILES['userfile']['type']

Loại mime của tệp, nếu trình duyệt cung cấp thông tin này. Một ví dụ sẽ là "image/gif". Tuy nhiên, loại mime này không được kiểm tra ở phía PHP và do đó không được chấp nhận giá trị của nó

$_FILES['userfile']['size']

Kích thước, tính bằng byte, của tệp đã tải lên

$_FILES['userfile']['tmp_name']

Tên tệp tạm thời của tệp mà tệp đã tải lên được lưu trữ trên máy chủ

$_FILES['userfile']['error']

Mã lỗi liên quan đến tệp tải lên này

$_FILES['userfile']['full_path']

Đường dẫn đầy đủ do trình duyệt gửi. Giá trị này không phải lúc nào cũng chứa cấu trúc thư mục thực và không thể tin cậy được. Có sẵn kể từ PHP 8. 1. 0

Theo mặc định, các tệp sẽ được lưu trữ trong thư mục tạm thời mặc định của máy chủ, trừ khi một vị trí khác đã được đưa ra với lệnh trong php. ban đầu. Có thể thay đổi thư mục mặc định của máy chủ bằng cách đặt biến môi trường TMPDIR trong môi trường mà PHP chạy. Đặt nó bằng putenv[] từ bên trong tập lệnh PHP sẽ không hoạt động. Biến môi trường này cũng có thể được sử dụng để đảm bảo rằng các hoạt động khác cũng đang hoạt động trên các tệp đã tải lên

Ví dụ #2 Xác thực tệp tải lên

Xem thêm các mục chức năng cho is_uploaded_file[] và move_uploaded_file[] để biết thêm thông tin. Ví dụ sau sẽ xử lý tệp tải lên từ một biểu mẫu

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename[$_FILES['userfile']['name']];

________số 8

';
if [move_uploaded_file[$_FILES['userfile']['tmp_name'], $uploadfile]] {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r[$_FILES];

print "

";

';
if [move_uploaded_file[$_FILES['userfile']['tmp_name'], $uploadfile]] {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r[$_FILES];

print "

0

Tập lệnh PHP nhận tệp đã tải lên sẽ triển khai bất kỳ logic nào cần thiết để xác định những gì sẽ được thực hiện với tệp đã tải lên. Ví dụ: bạn có thể sử dụng biến $_FILES['userfile']['size'] để loại bỏ bất kỳ tệp nào quá nhỏ hoặc quá lớn. Bạn có thể sử dụng biến $_FILES['userfile']['type'] để loại bỏ bất kỳ tệp nào không phù hợp với một tiêu chí loại nhất định, nhưng chỉ sử dụng biến này làm bước đầu tiên trong một loạt kiểm tra, vì giá trị này hoàn toàn nằm dưới . Ngoài ra, bạn có thể sử dụng $_FILES['userfile']['error'] và lập kế hoạch logic theo mã lỗi. Bất kể logic là gì, bạn nên xóa tệp khỏi thư mục tạm thời hoặc chuyển tệp đó sang nơi khác

Nếu không có tệp nào được chọn để tải lên trong biểu mẫu của bạn, PHP sẽ trả về $_FILES['userfile']['size'] là 0 và $_FILES['userfile']['tmp_name'] là không

Tệp sẽ bị xóa khỏi thư mục tạm thời khi kết thúc yêu cầu nếu tệp chưa được chuyển đi hoặc đổi tên

Chủ Đề