2012-04-01 39 views
7

Giả sử người dùng A có một số hình ảnh trong tài khoản của họ trên Facebook mà họ có thể xem sau khi đăng nhập.giới hạn quyền truy cập vào tệp hình ảnh chỉ dành cho người dùng đã đăng nhập trong php

Nếu người dùng A đăng xuất và url của một trong những hình ảnh đó được thử, thông báo 'loại giới hạn truy cập' sẽ xuất hiện.

Hãy nghĩ về trang web mạng xã hội được xây dựng bằng PHP.

Làm thế nào để đạt được loại điều khiển đó để KHÔNG thể xem hình ảnh mà không cần đăng nhập vào trang JUST như Facebook?

Trả lời

12
  • Chuyển tất cả hình ảnh vào một thư mục không thể truy cập được từ web.
  • Triển khai tập lệnh php (image.php) để kiểm tra xem người dùng có đăng nhập hay không và chấp nhận tên hình ảnh làm đầu vào (ví dụ: image.php? Name = flower.png).
  • Nếu người dùng đang đăng nhập, gửi hình ảnh content-type đúng header()http://il2.php.net/manual/en/function.header.php (image/png ví dụ)
  • Đọc tập tin từ đĩa và gửi nó cho người dùng sử dụng readfile()http://php.net/manual/en/function.readfile.php.
  • Đảm bảo mọi người sẽ không thể truy cập tệp bên ngoài thư mục hình ảnh bằng cách gửi một cái gì đó như /images.php?name=/etc/hosts (tốt hơn là chấp nhận ID hình ảnh thay vì tên tệp hoặc băm tên tệp, bạn có thể sử dụng md5()http://il2.php.net/manual/en/function.md5.php để tạo băm nhưng hãy nhớ đặt tên tệp hình ảnh theo băm md5 của chúng, trong trường hợp này bạn luôn tra cứu tệp hình ảnh chỉ trong thư mục hình ảnh).
  • Nếu người dùng chưa đăng nhập, bạn có thể gửi hình ảnh tùy chỉnh có nội dung "vui lòng đăng nhập" hoặc chỉ chấm dứt tập lệnh.
+0

giả sử url hình ảnh là mysite.com/images/img.jpg. Nếu url này được nhấn, khi nào tập lệnh image.php sẽ được thực hiện/ –

+0

Thuộc tính 'src' của hình ảnh phải là: mysite.com/image.php?name=img.jpg để tập lệnh image.php sẽ kiểm soát truy cập vào tập tin hình ảnh và chỉ hiển thị nó trong trường hợp người dùng yêu cầu được đăng nhập. Nếu người đó không đăng nhập, kịch bản sẽ chấm dứt việc thực thi, nếu không, tập lệnh sẽ 'readfile ('path/images/img. jpg ') 'để gửi hình ảnh cho người dùng (cũng đừng quên sử dụng' header() 'để đặt loại nội dung thích hợp. – Yaniro

+0

nếu url là mysite.com/images/img.jpg, src thuộc tính nó sẽ cố gắng đọc? –

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