Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Ausgabeproblem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Ausgabeproblem


 
dirk1968de
09-09-2003, 01:40 
 
Hallo,

da ich mich gegen "Traffic-Klau" schützen möchte, habe ich mir das PHP-Script von folgender Seite besorgt und es funktioniert soweit:

http://www.guweb.com/postcards/help/antileech.shtml

Hier also das Original:
<?php
// Eigene Domain (ohne "www." oder dergleichen)
$selfdomain = "eigenedomain.de";
// Verzeichnis der Bilder (kein Slash am Ende!)
// Relativ zum Verzeichnis dieses PHP-Skriptes
$imgdir = "bilder";

// Zusätzlich erlaubte Domain
$allowdomain = "guweb.com";

$selfdomain = strtoupper($selfdomain);
$allowdomain = strtoupper($allowdomain);
$ref = strtoupper($HTTP_REFERER);
// protokoll entfernen
$ref = str_replace("HTTP://", "", $ref);
// domain extrahieren
if (strpos($ref, "/")) $ref = substr($ref, 0, strpos($ref, "/"));
if (($ref=="") || (strpos($ref, $allowdomain)) || (strpos($ref, $selfdomain))) {
$fn = $PATH_INFO;

if ((strpos($fn, "../")) || (strpos($fn, "..\\")))
{
echo "Zugriffsverletzung"; // Server schützen
} else readfile($imgdir.$fn); // Datei ausgeben

} else {
echo "Kein Zugriff";
}
?>


Nun möchte ich aber, dass statt "Kein Zugriff" ein Bild ausgeben wird. Also, wenn jemand den Link zum Bild in ein fremdes Forum einbaut, ein Ersatzbild gezeigt wird, wo ich nett drauf hinweisen kann, dass er unrechtes macht. :D

So habe ich es jetzt umgebaut, aber leider funktioniert es nicht. Könnt ihr mir da weiterhelfen?

<?php
// Eigene Domain (ohne "www." oder dergleichen)
$selfdomain = "eigenedomain.de";
// Verzeichnis der Bilder (kein Slash am Ende!)
// Relativ zum Verzeichnis dieses PHP-Skriptes
$imgdir = "bilder";

// Zusätzlich erlaubte Domain
$allowdomain = "guweb.com";

$selfdomain = strtoupper($selfdomain);
$allowdomain = strtoupper($allowdomain);
$ref = strtoupper($HTTP_REFERER);
// protokoll entfernen
$ref = str_replace("HTTP://", "", $ref);
// domain extrahieren
if (strpos($ref, "/")) $ref = substr($ref, 0, strpos($ref, "/"));
if (($ref=="") || (strpos($ref, $allowdomain)) || (strpos($ref, $selfdomain))) {
$fn = $PATH_INFO;

if ((strpos($fn, "../")) || (strpos($fn, "..\\")))
{
readfile($imgdir."/notallowed.gif "); // Server schützen
} else readfile($imgdir.$fn); // Datei ausgeben

} else {
readfile($imgdir."/notallowed.gif ");
}
?>


BTW: eigenedomain.de, guweb.com, bilder habe ich sorgsam ausgetauscht und das Bild "notallowed.gif" befindet sich im geheimen Ordner

 
Wurzel
09-09-2003, 01:45 
 
warum so kompliziert? .htacces löst dein problem:
http://www.trafficklau.de/htaccess.html

 
dirk1968de
09-09-2003, 02:51 
 
Hallo,

danke für den Tipp, funktioniert auch wunderbar. Nur folgendes stört mich bei der .htacces-Lösung:

Wenn ich das Ersatzbild in einem Forum auf meine Festplatte speicher, habe ich das Bild trotzdem im eigentlichen Original. Nun gut, das Traffic-Problem wäre gelöst, weil wohl kaum einer auf die Idee kommt, so ein Bild abzuspeichern.

Irgendwie wäre es mir nun doch lieber, wenn ihr mir erklären könntet, wie ich es mit PHP lösen kann, weil da kommt man wirklich nicht an das Bild, wenn man das Verzeichnis nicht kennt.

Gruß Dirk

 
wahsaga
09-09-2003, 10:58 
 
Original geschrieben von dirk1968de
Irgendwie wäre es mir nun doch lieber, wenn ihr mir erklären könntet, wie ich es mit PHP lösen kann, weil da kommt man wirklich nicht an das Bild, wenn man das Verzeichnis nicht kennt.
man kommt nur dann nicht an das bild, wenn du es auf keiner öffentlich zugänglichen seite verwendest.

ich verstehe nicht, was dieses problem mit trafficklau zu tun haben soll.

 
dirk1968de
09-09-2003, 12:26 
 
Hallo,

es ist doch auch egal, ob es um Trafficklau oder Bilderklau geht. Ich bin von dem PHP-Script überzeugt und möchte, dass ein Ersatzbild anstelle von "Kein Zugriff" ausgegeben wird.

Liegt es daran, dass echo einfach durch readfile ausgetauscht wurde?

Gruß Dirk

 
wahsaga
09-09-2003, 13:31 
 
Original geschrieben von dirk1968de
Liegt es daran, dass echo einfach durch readfile ausgetauscht wurde?
na ja, wenn du mit readfile bilddaten ausgibst, solltest du dem browser auch durch einen entsprechenden http-header mitteilen, dass ein bild folgt und kein html (idR standard-mimetype für php-dateien).

 
dirk1968de
09-09-2003, 14:22 
 
Jetzt wird es kompliziert. Ich weiß einfach nicht, wie ich das dann umschreiben soll. Ich bin der totale PHP-Anfänger. :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:50 Uhr.