Frage an die PHP-Experten...

Multimedia pur!
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Vielleicht kann jemand was mit dieser Fehlermeldung anfangen...

Klickt mal auf den Link! Da müsste eigentlich ne leere schwarze Seite kommen.

http://www.snoozen.de/leer2.php


Das hier mit ner html funktioniert dagegen.
http://www.snoozen.de/xampp.html
Benutzeravatar
elevar
Logik-Lord
Logik-Lord
Beiträge: 1411
Registriert: 08.08.2007, 20:04

Re: Frage an die PHP-Experten...

Beitrag von elevar »

Meinst du diese Fehlermeldung
Der Webserver hat geschrieben:The requested URL /fastcgiphp/php-fcgi-starter/leer2.php was not found on this server.
Ist die Datei leer2.php denn in genau diesem Verzeichnis, also in /fastcgiphp/php-fcgi-starter/ ?
Well, it all started on Scabb Island. Some of my admiring fans had pressured me into telling my LeChuck evaporating story once again...
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

elevar hat geschrieben:Meinst du diese Fehlermeldung
Der Webserver hat geschrieben:The requested URL /fastcgiphp/php-fcgi-starter/leer2.php was not found on this server.
Ist die Datei leer2.php denn in genau diesem Verzeichnis, also in /fastcgiphp/php-fcgi-starter/ ?
Ja, diese Meldung meine ich.
Und Nein. Dieses Verzeichnis gibt es bei mir auch gar nicht. Keine Ahnung, wo er sich das hermelkt.
Komisch ist, dass es bei der HTML-Datei, die im gleichen Ordner liegt geht.
Benutzeravatar
neon
Adventure-Treff
Adventure-Treff
Beiträge: 30023
Registriert: 08.07.2004, 10:55
Wohnort: Wiesbaden
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von neon »

Hast Du vielleicht irgendeinen Standardpfad nicht angepasst?
"Ich habe mich so gefühlt, wie Sie sich fühlen würden, wenn sie auf einer Rakete sitzen, die aus zwei Millionen Einzelteilen besteht - die alle von Firmen stammen, die bei der Regierungsausschreibung das niedrigste Angebot abgegeben haben"

- John Glenn nach der ersten Erdumrundung 1962
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Welcher könnte das sein?

Wenn ich mich via FTP mit meinem Webspace verbinde, dann sehe ich dort einige vom Anbieter vordefinierte Ordner und einen Ordner namens "HTML". Dort liegt die index.html vom Anbieter drin. (die wird angezeigt, wenn man einfach nur http://www.snoozen.de eingibt)
Also das ist anscheinend der Ordner, auf den die Domain gelinkt ist.
In den gleichen Ordner hab ich nun die links2.php reinkopiert und mit der klappts nicht.

Ich bin eigentlich davon ausgegangen, dass das ganze php-geraffel im Hintergrund vorkonfiguriert ist. Ich hab doch keine blassen von dem Kram... :oops:
Benutzeravatar
neon
Adventure-Treff
Adventure-Treff
Beiträge: 30023
Registriert: 08.07.2004, 10:55
Wohnort: Wiesbaden
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von neon »

Ich auch nicht, nur ist das der typische Fehler, wenn man plötzlich auf einem Pfad landet, den man vorher noch nie gesehen hat.
"Ich habe mich so gefühlt, wie Sie sich fühlen würden, wenn sie auf einer Rakete sitzen, die aus zwei Millionen Einzelteilen besteht - die alle von Firmen stammen, die bei der Regierungsausschreibung das niedrigste Angebot abgegeben haben"

- John Glenn nach der ersten Erdumrundung 1962
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Na dann schreib ich das mal bei denen ins Forum... mal sehen, was der Support sagt.
Fängt ja schon mal geil an...

EDIT: So wie es aussieht, ist da bei der Webspaceeinrichtung tatsächlich etwas falschgemacht worden. Der Support kümmert sich drum...
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Hallo Leute,

ich hatte hier ziemlich weit am Anfang des Threads mal die Frage gestellt, ob es eine Möglichkeit gibt, ein Verzeichnis so zu schützen, dass man nicht mehr direkt darauf verlinken kann, aber trotzdem mittels php-Script darauf zugreifen kann.
Ich habe jetzt eine Lösung in den Weiten des netzes gefunden und muss nun noch ein bißchen Finetuning betreiben.

Sachverhalt:
Ich habe einen Ordner, mit Unterordnern, in denen sich ausschließlich jpg-Dateien befinden.
Diese werden in einer Gallerie auf meiner Homepage angezeigt. Funzt so weit. Allerdings will ich das nur für Leute sichtbar haben, die sich auch auf meiner Homepage via php-Session angemeldet haben.
Das habe ich nun folgendermaßen gelöst. Den besagten Ordner habe ich mittels .htaccess geschützt. Das Aufrufen der Bilder passiert nun in meiner Homepage nicht mehr einfach nur mittels <img>-Tag, sondern über ein Streaming durch eine php-Datei.

Code: Alles auswählen

	<img src=scripte/bild.php?bild=../geschützterOrdner/bild1.jpg"/>

Der Code in der bild.php, die das Bild dann letztendlich streamt, sieht so aus:

Code: Alles auswählen

	$datei=fopen($_GET['bild'],r);
	echo fread($datei, filesize($datei));
	fclose($datei);
Ergebnis:
Man kann nicht mehr direkt auf das Bild linken (da ja .htaccess-Schutz), sondern kann es nur noch über dieses Script aufrufen. Und das wiederum wird nur bei aktiver Session ausgeführt.
Nun möchte ich aber das ganze noch etwas absichern. Wie müsste der Code aussehen, dass nur jpg-Dateien gelesen werden und falls es sich um eine andere oder fehlerhafte Datei handelt, soll ein "Standardfehlerbild" geladen werden?
Kann mir da jemand von euch helfen?

Schon mal danke vorab!
Benutzeravatar
elevar
Logik-Lord
Logik-Lord
Beiträge: 1411
Registriert: 08.08.2007, 20:04

Re: Frage an die PHP-Experten...

Beitrag von elevar »

Das würde ich wieder die Mottenkiste mit den regulären Ausdrücken aufmachen:

Code: Alles auswählen

if ( preg_match('/^(.*?)\.(jpg|jpeg)$/i', $_GET['bild']) && file_exists($_GET['bild']) ) {
  // Zeige Bild
}
else {
  // Zeige Fehlermeldung
}
Der String '/^(.*?)\.(jpg|jpeg)$/i' testet, ob die Datei mit .jpg oder .jpeg aufhört.
  • Das ^ markiert den Anfang des zu testenden Strings.
  • (.*?) gibt eine beliebige Zeichenfolge an (so wenig wie möglich).
  • Der Punkt . muss mit einem \ "escaped" werden, da es sich beim Punkt um ein Zeichen handelt, das in der Syntax sonst eine eigene Bedeutung hat.
  • (jpg|jpeg) bedeutet jpg oder jpeg
  • Der Modifikator i ganz am Ende bedeutet, dass es nicht auf Groß- und Kleinschreibung ankommt.
  • Das $ markiert das Ende des zu testenden Strings.
Ein String, der also mit beliebigen Zeichen (außer \n, also einer neuen Zeile) beginnt, und mit einem Punkt gefolgt von jpg oder jpeg endet, liefert in diesem Test true, alles andere false.
Well, it all started on Scabb Island. Some of my admiring fans had pressured me into telling my LeChuck evaporating story once again...
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Danke. Das probier ich heute Abend mal aus. Ich werd die Prfung wahrscheinlich noch mit ner Funktion verknüpfen, die testet, ob es sich um eine gültige Bilddatei handelt, wenn die Endung stimmt. (mir ist so, als ob es da auch eine php-Funktion für gibt)
Es könnte ja auch ne txt einfach in eine jpg umbenannt worden sein...

Muss dann halt nur noch sehen, wie performant das Ganze dann noch ist.

Auf jeden Fall komm ich dann bei meiner Seite endlich von der lästigen htaccess-Authentifizierung weg. Die ist ja für den Anwender nicht sehr ansprechend und für die Rechteverwaltung auf der eigentlichen Seite auch nicht sehr komfortabel.

EDIT:Sehe ich das richtig, dass ich den Teil hier: (jpg|jpeg) auch problemlos um andere Dateiendungen erweitern kann? Also z.B. (jpg|jpeg|bmp|gif)
Benutzeravatar
elevar
Logik-Lord
Logik-Lord
Beiträge: 1411
Registriert: 08.08.2007, 20:04

Re: Frage an die PHP-Experten...

Beitrag von elevar »

Fightmeyer hat geschrieben:EDIT:Sehe ich das richtig, dass ich den Teil hier: (jpg|jpeg) auch problemlos um andere Dateiendungen erweitern kann? Also z.B. (jpg|jpeg|bmp|gif)
Das siehst du genau richtig :)
Well, it all started on Scabb Island. Some of my admiring fans had pressured me into telling my LeChuck evaporating story once again...
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Hier noch ein Tipp von mir:
http://httpd.apache.org/docs/current/mo ... write.html
Mit diesem Modul kann man den Aufruf der Bilddateien erleichtern. Anstatt sowas:

Code: Alles auswählen

<img src="/scripte/bild.php?bild=../geschützterOrdner/bild1.jpg"/>
... wäre dann sowas möglich:

Code: Alles auswählen

<img src="/geschützterOrdner/bild1.jpg"/>
Man verweist quasi auf eine Datei dies es nicht gibt (da das Verzeichnis "geschützterOrdner" hier nicht als Unterverzeichnis existiert). Dadurch verschleiert man auch noch mehr die Herkunft der Dateien. Damit jetzt aber auch das Script aufgerufen wird, kann man dann in der htaccess folgendes schreiben:

Code: Alles auswählen

  RewriteEngine on
  RewriteRule   ^geschützterOrdner/(\w\.(jpg|gif|png))$  scripte/bild.php?bild=../geschützterOrdner/$1
Und da gibts noch ein Vorteil: "geschützterOrdner\test.txt" könnte nicht aufgerufen werden, da die Regel nicht für Dateien dieser Endung greift.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Das ist ne gute Idee. Zumal ich dann auch meinen HTML/PHP-Quelltext nicht anpassen muss. Danke.
Muss nur mal schauen, ob dieses Modul auf dem Webserver installiert ist. Aber ich denke mal schon...
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Hier eine kleine Korrektur von mir:

Code: Alles auswählen

RewriteRule   ^geschützterOrdner/(\w+\.(jpg|gif|png))$  scripte/bild.php?bild=../geschützterOrdner/$1
Hinter dem \w muss natürlich ein + stehen. Sonst würde die Regel ja nur bei Dateinamen greifen, die einen Buchstaben lang sind. Das * wäre nebenbei bemerkt auch nicht korrekt, denn dieser Wiederholungsoperator würde auch Dateinamen zulassen die kein Zeichen enthalten, also .jpg (ohne irgendwas davor) wäre demnach auch gültig.
Das + ist hier präziser, da es mindestens ein Zeichen voraussetzt.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Das sieht bei mir jetzt folgendermaßen aus:

Code: Alles auswählen

  RewriteEngine on
  RewriteRule   ^alben/(\w+\.(jpg|gif|png))$  ../system/bildload.php?bild=../alben/$1
Aber das klappt irgendwie nicht. Vielleicht sollte ich noch darauf hinweisen, dass ich in dem geschützen Ordner noch Unterordner habe und da die eigentlichen Bilder drinliegen. Aber wenn ich die Zeile richtig interpretiere müsste das doch trotzdem klappen, oder?

Ich hab aktuell im darüberliegenden Ordner auch noch ne htaccess. Kommen die sich eventuell in die Quere?
Antworten