Frage an die PHP-Experten...

Multimedia pur!
Antworten
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Verstehe. Was passiert, wenn du z.B. in diese Indexseite des Root ein Bild einbettest?:

Code: Alles auswählen

<img src="/alben/9/thumbs/th_cimg3350.jpg">
Also der reguläre Ausdruck ^alben/((\w+/)*\w+\.(jpg|gif|png))$ der RewriteRule ist jedenfalls richtig. Bei einem Test gabs einem Match, und in $1 wurde der String 9/thumbs/th_cimg3350.jpg zurückgegeben, was dann in den Aufruf der URL system/bildload.php?bild=../alben/9/thumbs/th_cimg3350.jpg resultiert.

Es lohnt sich bestimmt mal, gewisse URLs von Hand in die Adressleiste einzugeben und zu gucken, wo genau welche Fehlermeldungen ausgegeben werden.
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 »

Also ich hab jetzt mal in die test.php den IMG-Tag eingebaut.
Aufruf des Bildes funzt.

Hab die htaccess um die rewriterule angepasst und das Bild wird nicht mehr angezeigt.

Gebe ich den Pfad zum Bild komplett in die ADressleiste ein: www.meinedomain.de/alben/9/thumbs/th_cimg3350.jpg greift die Rewriterule und das Bild wird über die bildload.php gestreamt.

Das Problem ist somit noch weiter eingekreist.Innerhalb eines IMG-tags klappt es also nur nicht.
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Dies ist verdammt seltsam! :? Eigentlich müsst immer, wenn es über die Adressleiste geht, auch übers Image-Tag funktionieren. Bitte gib mir einen Link zur Testseite, und wenn nötig PW und Username für den Zugriff. Kannste ja per PN machen.
Hab die htaccess um die rewriterule angepasst und das Bild wird nicht mehr angezeigt.
Welche Anpassungen meinst du?

Aber da ich deine Servereinstellungen nicht kenne, wäre es gut, wenn du mal die RewriteBase setzt:

Code: Alles auswählen

RewriteEngine on
RewriteBase /
RewriteRule   ^alben/((\w+/)*\w+\.(jpg|gif|png))$  system/bildload.php?bild=../alben/$1
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 »

Hast 2 PNs von mir.
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Ok, habe mir alles angeschaut. Hier erst einmal ein nebensächlicher Fehler, damit er nicht vergessen wird:

Code: Alles auswählen

<link rel="stylesheet" type="text/css" href="/../css/standard.css">
Dies steht im Kopf der Seite, die angezeigt wird, wenn man nicht angemeldet ist oder die angeforderte Datei nicht vorhanden ist. Aufgrund der relativen Pfadangabe funktioniert das manchmal nicht. Ab dem zweiten Unterverzeichnis, also z.B. meinedomain.de/blah/blubb/gibtsnicht.html sind die Styles weg. Absolute Pfadangaben müssen her, also so:

Code: Alles auswählen

<link rel="stylesheet" type="text/css" href="/css/standard.css">
Einfach die zwei Pünktchen wegmachen! :)

Sonst scheint es ja "erwartungsgemäß" zu funktionieren, da weder Link, noch Image-Tag funktionieren. So, um das eigentliche Problem weiter eingrenzen zu können, ist folgendes sehr sehr wichtig: Du brauchst unterschiedliche Fehlerseiten! Eine für den Fall, dass eine Datei nicht vorhanden ist, und eine für den Fall, dass der Zugriff verweigert ist. Sonst ist es nur schwer möglich, die genaue Fehlerquelle auszumachen. Wehr Infos z.B. hier: http://www.emscherwasser.de/2005/03/15/ ... lerseiten/
Dann schauen wir mal weiter. :)

Nachtrag:
Ein weiteres wichtiges Werkzeug für die Fehlerbehebung ist der Errorlog: http://httpd.apache.org/docs/2.2/de/mod ... l#errorlog
Informier dich mal etwas über dieses Thema, und schau ob z.B. dein Webserver automatisch solche Logs generiert.
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 »

Okay. Hab jetzt erstmal die Standardfehlerseiten wieder aktiviert.
Beim direkten Aufrufen eines Bildes über die Adresszeile gibts ein "Forbidden".
Die ReWriterule scheint also definitiv nicht zu greifen.
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 »

Hier mal zwei Zeilen aus der Log-Datei.
[27/Sep/2010:19:55:41 +0200] "GET /alben/10/thumbs/th_m1270011.jpg HTTP/1.1" 403 203 "http://www.meinedomain.de/scripte/folde ... albumid=10" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729; .NET4.0C)"
[27/Sep/2010:19:55:41 +0200] "GET /alben/10/thumbs/th_m1280002.jpg HTTP/1.1" 403 204 "http://www.meinedomain.de/scripte/folde ... albumid=10" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729; .NET4.0C)"
Kannst Du damit was anfangen?
Es sieht zumindest so aus, als ob immer noch versucht wird, direkt auf die Bilder zuzugreifen, was sich ja mit dem Ergebnis decken würde.
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Nun, eine Liste der Statuscodes siehst du hier: http://www.w3.org/Protocols/rfc2616/rfc2616.txt
403 bedeutet FORBIDDEN.
Die 203 bzw. 204 werden sich wohl auf die Größe der übertragenen Datei beziehen.
"http://www.meinedomain.de/scripte/folde ... albumid=10" ist die Seite, die z.B. die Datei "/alben/10/thumbs/th_m1280002.jpg" anfordern wollte (also die Seite, in der sich die Image-Tags befinden).

Guck mal nach, ob folgende Optionen auf deinem Server aktiv sind:
Options FollowSymLinks
AllowOverride All oder AllowOverride FileInfo

Ansonsten muss ich dich eindringlich darum bitten, auch mal selber die Dokumentation der Serverkonfiguration von Apache durchzuackern und den Umgang mit Regulären Ausdrücken zu üben, bis du diese richtig beherrschst. Sonst fürchte ich, ist dein Ziel einer aufwendigen Seite mit komplexer Rechtevergabe zum Scheitern verurteilt. Wenn man sich was in Frontpage irgendwas zusammenklickt muss man natürlich sowas nicht kennen, aber du willst ja anscheinend mehr.
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 »

Eigentlich will ich nicht unbedingt mehr. :D (natürlich nicht mit Frontpage...)
Ich wollte mich nur in PHP ein bißchen austoben. An die grundlegenden Servereinstellungen komm ich glaube ich auch gar nicht ran. Ist ja kein Rootserver, den ich da habe, sondern ein vorkonfigurierter Apache.

Ich werd jetzt die automatischen Umleitungen einfach rausnehmen und die handvoll Links auf Bilder so anpassen, dass im Quelltext bereits auf die bildload.php umgelenkt wird. An sich klappt der Aufruf ja.
Dann hab ich im Endeffekt, was ich wollte. Ich kann die Rechteverwaltung ausschließlich über PHP steuern und trotzdem die Bild-Verzeichnisse über htaccess dicht machen.

Auf jeden Fall Danke für Deine Geduld und Unterstützung.
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Kein Problem! :) Aber es ist halt sehr schwierig (bis unmöglich), auf diese Art und Weise den Fehler zu finden. Du kennst dich selber nicht so aus, interpretierst vielleicht gewisse Dinge falsch, und ich rate im Endeffekt nur rum.
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 »

Mal wieder ne PHP-Frage.

Ich erzeuge zur Laufzeit X-Inputtextfelder. (X=ANzahl von Zeilen in einer Tabelle; kann also immer unterschiedlich sein)

An sich ist es ja recht einfach auf die verschiedenen Values der einzelnen Inputfelder zuzugreifen, wenn das Formular gesendet wurde. Mein HTML-Code für die Input-Tags sieht so aus.

Code: Alles auswählen

<input type=\"text\" name=\"bezeichnungneu[]\"size=\"32\" maxlength=\"30\">
Beim Auslesen brauch ich aber zusätzlich zum eingegeben Text noch die Nummer des jeweiligen Tabelleneintrags. Beim Erstellen des Formulars steht mir diese NUmmer zur Verfügung, aber ich hab keinen Plan wo ich die hinterlegen müsste, damit die zusätzlich mit übergeben wird.

Gibt es eine Möglichkeit bei einem Input-Text 2 Variablen zu übergeben oder alternativ die Nummer zusammen mit einem definierten Trennzeichen vorne an den Text zustellen, so dass man das nach dem Absenden wieder auseinander "explode"n könnte?

EDIT:
Hat sich erledigt. Hab jetzt den 2. Wert über ein INPUT type="hidden" gemacht.
Antworten