MaxT
25. Februar 2010 um 16:42
1
Hallo liebe Community,
egal was ich noch daran drehe und schraube, tu’ und mache, es will einfach nicht funktionieren hoffe ihr könnt mir helfen.
Hier mal der Code meiner schutz.php
[code]<?php
error_reporting(E_ALL);
$selfdomain = “perle.bplaced.net ”;
$imgdir = “4ys58”;
$allowdomain = “google.com ”;
$selfdomain = strtoupper($selfdomain);
$allowdomain = strtoupper($allowdomain);
$ref = strtoupper($HTTP_REFERER);
$ref = str_replace(“HTTP://”, “”, $ref);
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”;
} else readfile($imgdir.$fn);
} else {
echo “Kein zugriff”;
}
?>[/code]
perle.bplaced.net/4ys58/bild.jpg
Doch wenn man nun perle.bplaced.net/test.html aufruft geschieht nichts, ein weißer Bildschirm bzw. ein “kaputtes” Bild - kann mir das nicht mehr erklären.
Liebe Grüße
MaxT
chrisb
25. Februar 2010 um 22:40
2
perle.bplaced.net/schutz.php/bild.jpg
Unter dieser Adresse teilt der Server mit, er würde Daten vom Typ text/html senden (für die Auslieferung von Bildern schon mal falsch) - und dann kommt gar nichts mehr.
Stelle bitte das error_reporting auf E_ALL - dann teilt dir PHP mit, dass es diesen Wert bspw. gar nicht gibt.
MaxT
26. Februar 2010 um 16:04
3
[quote]
Notice: Undefined variable: HTTP_REFERER in /users/perle/www/schutz.php on line 16
Notice: Undefined variable: PATH_INFO in /users/perle/www/schutz.php on line 28[/quote]
perle.bplaced.net/schutz.php
Was mache ich falsch?
register globals ist seit PHP 4.2 standardmäßig auf off
du musst machen: $_SERVER[‘HTTP_REFERER’] und erst testen, ob der auch gesetzt ist.
Beispiel:
$HTTP_REFERER = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : "";
MaxT
26. Februar 2010 um 18:26
5
Vielen Dank für deine Antwort - aber wie stellst du dir das Testen vor?
Liebe Grüße
MaxT
Mgier
26. Februar 2010 um 18:48
6
So wie er dir das gepostet hat
MaxT
26. Februar 2010 um 20:28
7
Alles klar, wusste anfangs nicht an welcher Stelle ich es setzen soll.
Mein Code sieht nun wie folgt aus:
[code]<?php
error_reporting(E_ALL);
$selfdomain = „perle.bplaced.net “;
$imgdir = „4ys58“;
$allowdomain = „google.com “;
$selfdomain = strtoupper($selfdomain);
$allowdomain = strtoupper($allowdomain);
$ref = $HTTP_REFERER = (isset($_SERVER[‚HTTP_REFERER‘])) ? $_SERVER[‚HTTP_REFERER‘] : „“;
$ref = str_replace(„HTTP://“, „“, $ref);
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“;
} else readfile($imgdir.$fn);
} else {
echo „Kein zugriff“;
}
?>[/code]
Nun bleibt noch:
Notice: Undefined variable: PATH_INFO in /users/perle/www/schutz.php on line 28
chrisb
27. Februar 2010 um 00:01
8
[quote=“MaxT”]Nun bleibt noch:
Notice: Undefined variable: PATH_INFO in /users/perle/www/schutz.php on line 28 o.0[/quote]
Und dafür gilt, mitdenkende Menschen haben es bereits erkannt, das gleiche wie für HTTP_REFERER.
MaxT
27. Februar 2010 um 11:02
9
Alles klar.
Allerdings will er nun das Bild als HTML-Datei ausgeben wie schon oben genannt wurde. (perle.bplaced.net/bild.html )
Wie kann ich das denn nun noch ändern?
Liebe Grüße
MaxT
Du musst den mimetyp der Datei holen und per header()-Anweisung senden.
php.net/manual/en/function.finfo-open.php
PS: Du brauchst dazu kein PHP-Skript. es reicht, wenn du in das Verzeichnis mit den Bildern eine htaccess legst, die per mod_rewrite alle Zugriffe mit falschen Referrer blockt oder umleitet. Das sollte auch für den Server weniger belastend sein.