Dieser Artikel stellt hauptsächlich vor, wie PHP den Benutzerzugriff auf Bilder steuert. Er wird hauptsächlich verwendet, um zu verhindern, dass Freunde in Not darauf verweisen. Ich hoffe, es hilft allen.
Stellen Sie das Bilderverzeichnis so ein, dass kein HTTP-Zugriff zulässig ist (entfernen Sie die beiden Berechtigungen des Bildverzeichnisses: Lesen und Durchsuchen des Verzeichnisses).
Verwenden Sie eine PHP-Datei und verwenden Sie direkt die Dateifunktion, um das Bild zu lesen. Führen Sie in dieser PHP-Datei eine Berechtigungskontrolle durch.
Fügen Sie in der Apache-Umgebung einfach die folgende Datei zu Ihrem Bildverzeichnis hinzu.
Dateiname .htaccess
Der Inhalt der Datei ist wie folgt
# options the .htaccess files in directories can override. # Edit apache/conf/httpd.conf to AllowOverride in .htaccess # AllowOverride AuthConfig # Stop the directory list from being shown Options -Indexes # Controls who can get stuff from this server. Order Deny,Allow Deny from all Allow from localhost
Andere Webumgebungen wie iss und nginx sind ähnlich.
class imgdata{ public $imgsrc; public $imgdata; public $imgform; public function getdir($source){ $this->imgsrc = $source; } public function img2data(){ $this->_imgfrom($this->imgsrc); return $this->imgdata=fread(fopen($this->imgsrc,'rb'),filesize($this->imgsrc)); } public function data2img(){ header(“content-type:$this->imgform”); echo $this->imgdata; //echo $this->imgform; //imagecreatefromstring($this->imgdata); } public function _imgfrom($imgsrc){ $info=getimagesize($imgsrc); //var_dump($info); return $this->imgform = $info['mime']; } } $n = new imgdata; $n -> getdir(“1.jpg”); //图片路径,一般存储在数据库里,用户无法获取真实路径,可根据图片ID来获取 $n -> img2data(); $n -> data2img();
Dieser Code liest das Bild und gibt es dann direkt an den Browser aus. Vor dem Lesen und Ausgeben werden die Benutzerberechtigungen beurteilt.
Das hier erwähnte PHP-Lesebild bezieht sich nicht auf den Lesepfad, sondern auf das Lesen des Bildinhalts und die anschließende Eingabe des Bildtyps über
Header();, z. B. gif png jpg usw. und geben Sie den Inhalt des Bildes unten aus, also fread()
Wenn Sie image.php?id=100 sehen, wird dieses Bild tatsächlich im Browser angezeigt, und wenn Sie die Quelldatei anzeigen, wird es nicht angezeigt Pfad des Bildes, aber der Pfad zum Bild Es ist verstümmelter Bildinhalt.
==========================================
Ähnlich: Auf das verschlüsselte Fotoalbum im QQ-Bereich kann nur durch Eingabe des Passworts zugegriffen werden, und auf die Fotoadresse im verschlüsselten Fotoalbum kann nicht durch direkte Eingabe der Fotoadresse im Browser zugegriffen werden. Meine aktuelle Idee ist, dass die Adresse des Bildes eine PHP-Datei ist und die Berechtigungen über PHP überprüft, das Bild gelesen und ausgegeben werden. Ich frage mich, ob es neben dieser Methode einen einfacheren und effizienteren Weg gibt. Generieren Sie beispielsweise eine temporäre Browseradresse und verwenden Sie einige Anti-Hotlink-Plug-Ins von Nginx?
Sie können dazu ngx_http_auth_basic_module verwenden.
Ändern Sie die Konfigurationsdatei
location / { root /usr/local/nginx/html; auth_basic “Auth”; auth_basic_user_file /usr/local/nginx/conf/htpasswd; index index.php index.htm; }
auth_basic Auth in „Auth“ ist der Titel des Popup-Felds (Benutzername und Passwort eingeben)
auth_basic_user_file / /usr/local/nginx/conf/htpasswd; in usr/local/nginx/conf/htpasswd ist die Datei, die das Passwort speichert
PHP verbietet Hotlinking von Bildern
1. Gehen Sie davon aus, dass der Link zulässig ist. Der Hostdomänenname des Bildes lautet: www.test.com
2. Ändern Sie httpd.conf
SetEnvIfNoCase Referer “^http://www.test.com/” local_ref=1 <FilesMatch “.(gif|jpg)”> Order Allow,Deny Allow from env=local_ref </FilesMatch>
Diese einfache Anwendung kann nicht nur das Problem lösen Hotlinking von Bildern, kann aber auch beliebige Dateien mit geringfügigen Änderungen verhindern. Das Problem des Hotlink-Downloads.
Wenn Sie die obige Methode zum Verknüpfen von Bildern von einem nicht angegebenen Host verwenden, wird das Bild nicht angezeigt. Wenn Sie ein „Hotlink verbotenes“ Bild anzeigen möchten, können wir dies mit mod_rewrite erreichen.
Fügen Sie bei der Installation von Apache zunächst den Parameter –enable-rewrite hinzu, um das Modul mod_rewrite zu laden.
Angenommen, das „Verbotene Hotlinking“-Bild ist abc.gif, wir können es in httpd.conf wie folgt konfigurieren:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?test.com /.*$ [NC] RewriteRule \.(gif|jpg)$ http://www.test.com/abc.gif [R,L]
Wenn das Bild des Hosts mit einem Hotlink versehen ist, wird nur abc angezeigt Dieses „Kein Hotlinking“-Bild!
Verwandte Empfehlungen:
Beispiel für die TP5-Auth-Berechtigungsverwaltung
So implementieren Sie die Rechteverwaltungsfunktion in PHP
So erhalten Sie einfach die Menge der in Baidu und Sogou enthaltenen Websites in PHP
Das obige ist der detaillierte Inhalt vonSo steuern Sie den Benutzerzugriff auf Bilder in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!