国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php如何控制用戶對圖片的訪問 PHP禁止圖片盜鏈

2024-09-04 11:46:55
字體:
來源:轉載
供稿:網友

把images目錄設置成不充許http訪問(把圖片目錄的:讀取、目錄瀏覽 兩個權限去掉)。

用一個PHP文件,直接用file函數讀取這個圖片。在這個PHP文件里進行權限控制。

apache環境中,在你的圖片目錄中加上下面這個文件即可。

文件名 .htaccess

文件內容如下:

  1. # options the .htaccess files in directories can override. 
  2. # Edit apache/conf/httpd.conf to AllowOverride in .htaccess 
  3. # AllowOverride AuthConfig 
  4. # Stop the directory list from being shown 
  5. Options -Indexes 
  6. # Controls who can get stuff from this server. 
  7. Order Deny,Allow 
  8. Deny from all 
  9. Allow from localhost 

其他web環境如iss,nginx也類似。

  1. class imgdata{ 
  2.  
  3. public $imgsrc
  4.  
  5. public $imgdata
  6.  
  7. public $imgform
  8.  
  9. public function getdir($source){ 
  10.  
  11. $this->imgsrc = $source
  12.  
  13.  
  14. public function img2data(){ 
  15.  
  16. $this->_imgfrom($this->imgsrc); 
  17.  
  18. return $this->imgdata=fread(fopen($this->imgsrc,'rb'),filesize($this->imgsrc)); 
  19.  
  20.  
  21. public function data2img(){ 
  22.  
  23. header(“content-type:$this->imgform”); 
  24.  
  25. echo $this->imgdata; 
  26.  
  27. //echo $this->imgform; 
  28.  
  29. //imagecreatefromstring($this->imgdata); 
  30.  
  31.  
  32. public function _imgfrom($imgsrc){ 
  33.  
  34. $info=getimagesize($imgsrc); 
  35.  
  36. //var_dump($info); 
  37.  
  38. return $this->imgform = $info['mime']; 
  39. //Vevb.com 
  40.  
  41.  
  42. $n = new imgdata; 
  43.  
  44. $n -> getdir(“1.jpg”); //圖片路徑,一般存儲在數據庫里,用戶無法獲取真實路徑,可根據圖片ID來獲取 
  45.  
  46. $n -> img2data(); 
  47.  
  48. $n -> data2img(); 

這段代碼是讀取圖片,然后直接輸出給瀏覽器,在讀取和輸出之前,進行用戶權限判斷。

這里說的PHP讀取圖片,不是指讀取路徑,而是指讀取圖片的內容,然后通過

Header();輸入圖片類型,比如 gif png jpg等,下面輸出圖片的內容,所以用到了fread()

實際上,你看到 image.php?id=100 就是顯示這張圖片在瀏覽器上,而你查看源文件,看到的不會是圖片的路徑,而是亂碼似的圖片內容。

類似于qq空間的加密相冊,只有輸入密碼才能訪問,并且直接在瀏覽器輸入 加密相冊中的相片地址也是無法訪問。我目前的想法是 圖片的地址是一個php文件,通過 php 驗證權限 ,讀取圖片,并輸出,不知道除了這樣的方法還有更簡單高效的做法沒有?比如生成臨時的瀏覽地址,使用一些 nginx 的一些防盜鏈插件?

你可以利用ngx_http_auth_basic_module來完成。

修改配置文件:

  1. location / { 
  2. root /usr/local/nginx/html; 
  3. auth_basic “Auth”; 
  4. auth_basic_user_file /usr/local/nginx/conf/htpasswd; 
  5. index index.php index.htm; 

auth_basic “Auth”中的Auth是彈出框(輸入用戶名和密碼)的標題

auth_basic_user_file /usr/local/nginx/conf/htpasswd; 中的/usr/local/nginx/conf/htpasswd是保存密碼的文件

PHP禁止圖片盜鏈:

1、假設充許連結圖片的主機域名為:www.test.com

2、修改httpd.conf

代碼如下:

  1. SetEnvIfNoCase Referer “^http://www.test.com/” local_ref=1 
  2. Order Allow,Deny 
  3. Allow from env=local_ref 

這個簡單的應用不光可以解決圖片盜鏈的問題,稍加修改還可以防止任意文件盜鏈下載的問題。

使用以上的方法當從非指定的主機連結圖片時,圖片將無法顯示,如果希望顯示一張“禁止盜鏈”的圖片,我們可以用mod_rewrite 來實現。

首先在安裝 apache 時要加上 –enable-rewrite 參數加載 mod_rewrite 模組。

假設“禁止盜鏈”的圖片為abc.gif,我們在 httpd.conf 中可以這樣配置:

  1. RewriteEngine on 
  2. RewriteCond %{HTTP_REFERER} !^$ 
  3. RewriteCond %{HTTP_REFERER} !^http://(www/.)?Vevb.com /.*$ [NC] 
  4. RewriteRule /.(gif|jpg)$ http://www.survivalescaperooms.com/abc.gif [R,L] 

當主機的圖片被盜鏈時,只會看到 abc.gif 這張“禁止盜鏈”的圖片!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 滕州市| 南宁市| 壤塘县| 宁津县| 新化县| 新乡市| 建阳市| 宣威市| 启东市| 东阿县| 抚远县| 句容市| 姜堰市| 囊谦县| 特克斯县| 张家港市| 介休市| 襄垣县| 鲁甸县| 利津县| 玉田县| 普格县| 巨野县| 永川市| 松江区| 措美县| 建德市| 浮梁县| 子洲县| 和静县| 凉城县| 晋城| 汉源县| 巴青县| 阿瓦提县| 安平县| 北流市| 平利县| 平利县| 广宗县| 罗山县|