So steuern Sie den Benutzerzugriff auf Bilder in PHP

*文
Freigeben: 2023-03-18 20:38:02
Original
3964 Leute haben es durchsucht

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
Nach dem Login kopieren

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();
Nach dem Login kopieren

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;
}
Nach dem Login kopieren


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>
Nach dem Login kopieren

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]
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage