Máy tínhCác loại tập tin

PHP: tập tin tải lên máy chủ

Tải file qua PHP - một trường hợp rất thú vị, mà phải được tiếp cận rất cẩn thận. Trên Internet, bạn có thể tìm thấy rất nhiều ví dụ về việc thực hiện các tập tin tải lên, nhưng không phải tất cả trong số họ là tốt và đáp ứng quy định an toàn.

Những thứ như vậy cần phải đưa đến một kết luận, ngay cả khi phải mất một thời gian dài. Nếu bạn bỏ một khoảng cách trong các mã, sau đó toàn bộ máy chủ của bạn có thể bị tổn hại.

sự an toàn

Với PHP tập tin tải lên đến server được thực hiện khá dễ dàng. Mã này là rất ngắn và đơn giản. Chỉ cần một vài dòng. Tuy nhiên, phương pháp này rất nguy hiểm. Nhiều thời gian và dòng mã đi đến nơi an toàn.

Mối nguy hiểm là, nếu bạn không làm kiểm tra, bất kỳ kẻ tấn công có thể tải lên các kịch bản của họ trên máy chủ của bạn. Trong trường hợp này, nó sẽ có quyền truy cập đầy đủ. Ông có thể làm bất cứ điều gì anh ta muốn:

  • xóa cơ sở dữ liệu;
  • xóa trang web file;
  • sửa đổi các trang web file;
  • thêm quảng cáo của bạn đến trang web của bạn;
  • tải virus;
  • chuyển hướng tất cả người dùng trên trang web của họ;
  • và nhiều thứ khác mà đến với tâm trí kẻ tấn công.

Bạn nên thường xuyên kiểm tra mà cố gắng để tải về một tập tin cho người dùng. Ví dụ, nếu bạn chỉ tải lên hình ảnh, nó là cần thiết để xác minh rằng tập tin là một hình ảnh chính xác. Nếu không, bạn sẽ tải về bất cứ điều gì.

Chính xác làm thế nào để thực hiện xác minh, nó sẽ được hiển thị, với kịch bản kiểm tra trực tiếp để tải lên tập tin.

Tạo một hình thức PHP

tập tin hình thức upload là rất đơn giản. Thiếu các nút nút duyệt và tải lên.

Mô tả làm thế nào để tạo các biểu mẫu sẽ không, bởi vì nó rất dễ dàng. hướng dẫn thêm giả định rằng bạn đã có những khái niệm cơ bản về HTML (nếu không bạn sẽ không thể tìm kiếm thông tin về tải trên PHP).

Nhưng lưu ý rằng các dữ liệu trong các hình thức bạn cần phải thêm thuộc tính enctype.

Nếu không, dữ liệu về xử lý tập tin sẽ không được truyền đi.

Làm thế nào nó cũng làm việc?

Khi bạn nhấn vào nút browse bạn sẽ thấy một hộp nơi yêu cầu chọn một tập tin.

Sau đó nó sẽ được yêu cầu để nhận được một con đường nơi mà các tập tin nằm.

Nếu đường dẫn không xuất hiện, thực hiện hành động một lần nữa.

Sau khi nhấp vào xử lý tải về tập tin có thể đưa ra bất cứ thông tin.

Ví dụ, bạn có thể viết những dòng đó khẳng định rằng tập tin là "như vậy và như vậy" tên đã được tải lên thành công cho "như vậy và như vậy" thư mục. Tất nhiên, tên tập tin sẽ được cung cấp luôn luôn khác nhau.

Thông thường, thông tin này được sử dụng để gỡ lỗi mã. Như vậy chúng ta có thể xác minh rằng các dữ liệu được truyền và viết xảy ra trong thư mục mong muốn. Nghĩa là, ngay cả những tên file không được chỉ định. Kể từ khi thông tin thêm này mà người sử dụng không cần.

Nó làm cho tinh thần để ra tên chỉ khi người dùng tải nhiều file. Đó là trường hợp, hãy xem xét một chút nữa. Đừng đi trước chúng ta.

điều chỉnh

Trong PHP tập tin tải lên máy chủ yêu cầu cài đặt nhất định, mà nên được thực hiện trong file php.ini. Tập tin này có chứa rất nhiều lựa chọn. Họ tất cả chúng ta không cần. Chúng tôi quan tâm đến ba dòng: file_uploads, upload_tmp_dir và upload_max_filesize.

Xin lưu ý rằng các thiết lập này sẽ ảnh hưởng đến tất cả các trang web của bạn trên máy chủ, không chỉ bất kỳ một. Vì vậy, để thiết lập kích thước tối đa dựa trên thực tế rằng bạn sẽ phải tải người dùng. Nó không được khuyến khích để thiết lập quá lớn.

Khi bạn thay đổi các giá trị trong các thông số này, bạn cần phải khởi động lại máy chủ. Nếu các thiết lập sẽ không có hiệu lực, khi họ đọc tại thời điểm tải máy chủ.

Bạn có thể làm điều này trong giao diện điều khiển bằng cách kết nối thông qua SSH đến máy chủ. Đơn giản chỉ cần nhập vào dịch vụ lệnh httpd restart, và sau đó thiết lập này sẽ có hiệu lực.

Phương pháp khác - một khởi động lại thông qua ISP phẳng hoặc thông qua nhà cung cấp bảng thanh toán.

tập mảng

Trong PHP upload tập tin được thực hiện bởi các mảng $ _FILES. Nó chứa tất cả các thông tin về các tập tin mà chúng ta tải về.

Để xem thông tin gì được chứa trong mảng, đủ để viết trong xử lý tập tin sau.

Chọn bất kỳ tập tin và bấm vào nút "Tải lên". Trên trang handler sẽ hiển thị thông tin được lưu trữ trong $ _FILES. Các biến được viết hoàn toàn bằng chữ in hoa. PHP - một ngôn ngữ nhạy cảm.

Như bạn có thể thấy, trong mảng này có rất nhiều lĩnh vực. Tất cả trong số họ đều quan trọng đối với chúng tôi. Trường đầu tiên chứa tên tập tin trong hình thức, trong đó nó được sử dụng trên máy tính của bạn.

Cột loại định dạng tập tin. Tmp_name lĩnh vực tương ứng với tên của tập tin tạm thời. Sau khi kết thúc của kịch bản sẽ bị xóa.

Các lĩnh vực báo lỗi chứa một mã lỗi. Đây là một chút nữa. Kích thước - kích thước tính bằng byte.

lỗi

Thực hiện thông qua việc tải lên tập tin PHP luôn luôn kèm theo một mã lỗi. Một thông báo lỗi nhập vào "lỗi". Các lỗi ảnh chụp màn hình là zero.

Xem xét giá trị của tất cả các lỗi:

Người ta nói ở trên về các tham số có thể được quy định trong HTML thông thường.

Đây là một mẫu để tải về các tập tin, mà chỉ giới hạn số lượng các tập tin tải lên.

PHP: tập tin script upload

Như tất cả được thực hiện trong thực tế? Trong PHP tập tin tải lên xảy ra lệnh copy. Nếu bạn quan tâm đến vấn đề làm thế nào để tải về một tập tin, câu trả lời là copy- đơn giản, trong đó sử dụng hai tham số - các file nguồn và file đích.

Nhưng, như đã nói ở trên, nó không thể bị hạn chế vì lý do an toàn. Ví dụ, hãy kiểm tra những loại tập tin chúng tôi tàu, bạn có thể sử dụng các loại lĩnh vực trong mảng $ _FILES. Đầu tiên, chúng ta hãy đối phó với thanh tra, và sau đó chuyển sang kịch bản đầy đủ

Hãy nói rằng bạn muốn cho phép người dùng tải lên một bức ảnh với độ phân giải chỉ GIF, JPEG hoặc PNG. Chỉ ra nó có thể được như thế này.

if ($ _ FILES [ 'file_upload'] [ 'type']! = "image / gif") {
echo "Xin lỗi, chúng tôi hỗ trợ chỉ tải Gif-Files";
lối ra;
}

Nếu bạn muốn gửi tất cả 3 loại, chỉ cần thêm một điều kiện bổ sung cho các loại khác của hình ảnh.

Sao chép được thực hiện như thế này: bản sao (ảnh 1, ảnh 2).

Trong trường hợp của chúng tôi, khi tác phẩm được tải về từ máy tính đến máy chủ, bạn có thể làm như vậy

bản sao ($ _ FILES [ 'file_upload'] [ "tmp_name"], "1.jpg")

Đó là, các tập tin sẽ được sao chép với tên 1.jpg. Đây không phải là hoàn toàn chính xác. Trong trường hợp này, nó chỉ là một ví dụ. Tên tập tin luôn luôn là cần thiết để xác định khác nhau, và xác định phần mở rộng, tùy thuộc vào các tập tin.

Xác định phần mở rộng có thể có những cách khác nhau. Tất cả đều phụ thuộc vào sự phát triển của sự uyên bác. Một trong những cách nhanh nhất để (một sự khác biệt của phần mười giây) xác định phần mở rộng - đây là các mã tiếp theo.

$ PATH_INFO = pathinfo ($ _ FILES [ 'photo1'] [ "name"]);

$ Ext = $ PATH_INFO [ 'mở rộng'];

Biến $ các ext chúng tôi sẽ lưu trữ các phần mở rộng mong muốn. Một tên tập tin có thể được thiết lập một cách ngẫu nhiên sử dụng md5. Nếu bạn có kế hoạch để tải về rất nhiều các tập tin, nó là tốt hơn để gửi chúng đến các thư mục khác nhau. Vì vậy, nó sẽ được thuận tiện hơn. Đặc biệt, nếu bạn muốn tẩy.

để tải về mã sẽ như sau.

/// Với ảnh

if ($ _FILES [ 'photo1'] [ 'tmp_name'] == null)

{

echo ( "

Unknown tập tin.

Trở lại ... ");

lối ra;

}

///. Giả sử bạn cho bất kỳ dự án trên máy chủ được phép tải tập tin lớn (video), nhưng chỉ có hình ảnh, và người dùng cần phải hạn chế

if (($ _FILES [ "photo1"] [ "kích thước"]> 1024 * 1024 * 2)

{

?>

tối đa cho phép kích thước của 2 MB

Trở lại ...

lối ra;

}

// tạo các thư mục

// tạo một thư mục của tháng hiện tại

if (! file_exists ( "img /" ngày. ( "M")))

{

mkdir ( "img /" ngày ( "M").);

}

// tạo một thư mục của ngày hiện tại

if (! file_exists ( "img /". date ( "M"). "/". date ( "d")))

{

mkdir ( "img /" ngày ( "M") "/" ngày ( "d") ...);

}

/// phần mở rộng tập tin

$ PATH_INFO = pathinfo ($ _ FILES [ 'photo1'] [ "name"]);

$ Ext = $ PATH_INFO [ 'mở rộng'];

/// tạo filename

Id $ = md5 (ngày ( "YMd"));

if (bản sao ($ _ FILES [ 'photo1'] [ "tmp_name"], "img /". date ( "M"). "/". date ( "d"). "/". $ id. $ ext) )

{

echo ( "File tải lên thành công");

}

/// bất kỳ hành động tiếp theo (mục trong cơ sở dữ liệu, và vân vân N.).

}

nhiều file

Upload nhiều file (PHP) xảy ra bằng các phương tiện của trường bổ sung trong biểu mẫu.

Phương pháp này không phải là rất tốt, vì nó giới hạn số lượng các tập tin để tải về. Hơn nữa, nó được coi là hình thức xấu trong chương trình. Cố gắng làm tất cả mọi thứ động.

Các lựa chọn lý tưởng - đó là một sự lựa chọn của một số lượng lớn các tập tin cùng một lúc bằng cách nhấn một nút duy nhất.

Để làm điều này, tạo ra một hình dạng giống như mã này.

Lưu ý rằng việc bổ sung nhiều của từ, và tên được đưa ra như là một mảng []. Trong trường hợp này, $ _FILES mảng sẽ hơi khác nhau. Bạn sẽ nhận được một mảng của mảng.

Để kiểm tra một lần nữa có thể sử dụng var_dump ($ _ FILES);

Tất cả các tập tin của bạn sẽ được đặt trong các mảng như thế này:

  1. $ _FILES [ "file1"] [ "name"] [0]
  2. $ _FILES [ "file1"] [ "name"] [1]
  3. Và vân vân.

Trong ngoặc đơn được viết số tập tin trong mảng. Đếm từ zero. Chúng tôi đối xử với họ theo cách tương tự, chỉ cần hỏi chu kỳ và bằng cách liên hệ các mã trên được mô tả ở phần cuối của chỉ số thêm [$ i].

$ I = 0;

while ($ _FILES [ "file1"] [ "name"] [$ i] <> '')

{

/// paste đoạn code trên

}

Vì vậy, bạn sẽ phải xảy ra thông qua một file PHP tải lên máy chủ trong một chu kỳ mà không lặp lại không cần thiết của mã này, như thường là trường hợp nếu bạn sử dụng phiên bản với một số tĩnh của file (ảnh cuối cùng).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 vi.birmiss.com. Theme powered by WordPress.