2010-02-26 21 views
10

Tôi có một tập lệnh chỉ cho phép người dùng được ủy quyền tải tệp lên một thư mục nhất định.Làm cách nào để ngăn tải xuống tệp công khai bằng php?

Tuy nhiên tôi không biết cách ngăn mọi người tải xuống tự do mà không cần đăng nhập.

Tôi cần giải pháp trong php.

Tôi đã googled xung quanh nhưng không có gì thẳng về phía trước như được nêu ra.

Hiện tại trong thư mục gốc tài liệu của tôi, tôi có thư mục có tên là quản trị viên và một thư mục con được gọi là nội dung tải lên bên trong quản trị viên. Vì vậy, chỉ vai trò quản trị viên mới có thể tải lên. Cả trình soạn thảo và quản trị viên đều có thể tải xuống. Tôi nên làm gì trong trường hợp này?

Vui lòng thông báo.

Trả lời

13

Đặt tệp ở đâu đó bên ngoài thư mục webroot công khai hoặc định cấu hình máy chủ của bạn để không phân phối tệp. Miễn là máy chủ của bạn sẽ vui vẻ phục vụ mọi thứ với một URL hợp lệ, bạn không thể làm gì với PHP để ngăn chặn điều đó.


Nếu tệp của bạn nằm trong thư mục /public_html/, hãy đưa chúng ra khỏi thư mục đó và đặt chúng vào ví dụ: /secret_files/, vì vậy cấu trúc thư mục của bạn trông giống như sau:

public_html/ 
    index.html 
    admin/ 
     admin_index.php 
secret_files/ 
    my_secret_file.txt 

Các webserver chỉ cấu hình để phục vụ tập tin trong thư mục /public_html/, vì vậy không ai sẽ có quyền truy cập vào thư mục ngoài (kỹ thuật hạn trên) nó.

Để vẫn cho phép ai đó tải xuống các tệp đó, hãy làm như cletus đề xuất và sử dụng readfile để "phân phát thủ công" các tệp qua tập lệnh PHP. PHP sẽ vẫn có quyền truy cập vào các phần khác của hệ thống tệp, vì vậy bạn có thể sử dụng nó như một gatekeeper.

+0

là webroot công khai public_html? wat về httpdocs? –

+0

@keisimone Xem câu trả lời cập nhật. – deceze

+0

cảm ơn. đó là rõ ràng hơn nhiều. các bạn thật tuyệt. –

5

Câu hỏi trả lời về cách bảo vệ bằng mật khẩu bằng PHP: This nên khắc phục sự cố của bạn.

+0

và ai đó tìm thấy mật khẩu? – RageZ

+4

Nếu họ tìm thấy mật khẩu, rất có thể họ có quyền truy cập vào FTP của bạn, do đó bạn đang say mê anyways. – twodayslate

9

Không lưu trữ các tệp trong thư mục dưới gốc tài liệu. Thay vào đó, hãy di chuyển chúng đến một nơi khác và sau đó một tập lệnh PHP có thể lập trình xác định xem ai đó có thể tải xuống chúng và sau đó sử dụng readfile() hoặc một cái gì đó tương tự để truyền phát chúng tới người dùng.

Bạn cũng có thể định cấu hình máy chủ Web để không phân phát tệp từ thư mục này nhưng sau đó bạn cần PHP để phân phối chúng. Nó sạch hơn chỉ đơn giản là không đặt chúng dưới gốc tài liệu.

+0

hi cletus, tôi không giỏi lập trình vì vậy tôi cần hỏi bạn chi tiết hơn 1) ở đâu khác? hiện tại trong tài liệu gốc của tôi tôi có một thư mục được gọi là admin và một thư mục con được gọi là tải lên bên trong admin. để chỉ vai trò quản trị viên mới có thể tải lên. cả trình soạn thảo và quản trị viên đều có thể tải xuống. tôi nên làm gì trong trường hợp này? –

+1

@keisimone (1) Lưu trữ chúng ở phía trên gốc tài liệu, có thể * có thể giống như htdocs hoặc public_html. – alex

+0

@alex có tất cả các tệp của tôi đã có trong public_html :) để public_html> admin> tải lên –

Các vấn đề liên quan