Hallo dedlfix!
»» [Pfade]
Das liegt aber an der Pfad-Einstellung. Wenn du kein Basisverzeichnis hast, in dem alle Galerien zu liegen kommen oder dies eins ist, das nicht exklusiv für die Galerien gedacht ist, dann kann man die Pfadangabe im URL-Parameter nicht so leicht dagagen prüfen. Stattdessen müsste man eine Prüfung der erlaubten Galerie-Verzeichnisse einfügen.
Wenn der Pfad insgesamt so aussieht /roadster/urlaub_2004/
Ja.
in echt /z_testdir/scripts/php/roadster/urlaub_2004/
Nein:
/kunden/homepages/12/d123456879/htdocs/aec (1. Zahlen geändert; 2. für den Virtual Host atomic-eggs.com [aec])
ist mein DOCUMENT_ROOT wie es $ENV{DOCUMENT_ROOT} in Perl ausspuckt und wie es $_SERVER[DOCUMENT_ROOT] in PHP auch tut.
Die Galerien befinden sich demnach in:
/kunden/homepages/12/d123456879/htdocs/aec/roadster
und NICHT in:
/kunden/homepages/12/d123456879/htdocs/aec/z_testdir/scripts/php/roadster
Mit diesem ganzen DOCUMENT_ROOT-Gacke und die verschiedenen Interpretationen duch die Webhostern kämpfe ich, seit dem ich mein GB öffentlich gemacht habe.
Ich verstand es bisher immer so, dass DOCUMENT_ROOT das Webseitenverzeichnis ist. Das hat bei mir bisher bei 3 verschiedenen Hostern geklappt, anscheinend gibt es aber welche, bei denen das DOCUMENT_ROOT ein paar Ebenen höher liegt, als das für den User mittels FTP und HTTP erreichbaren »Webseitenverzeichnis«.
Seltsam auch bei PHP (und bei mir, also bei 1&1 gehostet):
$ENV{DOCUMENT_ROOT} (Perl) oder $_SERVER[DOCUMENT_ROOT] (PHP) ergeben:
/kunden/homepages/12/d123456879/htdocs/aec
aber... realpath(irgenwas) ergibt:
/homepages/12/d123456879/htdocs/aec
???
»/kunden« ist weg... da kann man solche überprüfungen einbauen, von wegen wenn das in dies nicht enthalten ist, dann path violation! Dann stimmt es nie und nimmer nie!
Ich will für die Neufassung meines GBs eine Installationsroutine machen, die scheitert im reinen Perl aber daran, dass sich das »Webseitenverzeichnis« nicht ermitteln läßt. Leider werde ich auf PHP zurückgreifen müssen, um die Pfade zu ermitteln, weil... aargh, je nach Hoster Perl nur innerhalb des cgi-bin-Verzeichnisses ausführbar ist. Wie soll ich dann ein vom DOCUMENT_ROOT abweichendes »User-Verzeichnis« ermitteln lassen? Das geht nur mit PHP, weil dies überall ausführbar ist.
»» [...] als PHP-Laie, der erstmal suchen mußte, was trim(), rtrim(), und was weiß ich noch was für seltsame PHP-Funktionen wie und was machen,
Hmm, Javascript hat kein trim(),
ja...
aber dass Perl auch keins hat wundert mich. Zumindest weiß Selfhtml nichts von trim().
perldoc -f trim sagt: NADA!
Allerdings verwende ich die trim()s mit einem weniger bekannten zweiten Parameter, mit dem man auch andere Zeichen als die üblichen Whitespace wegtrimmen kann
Das hat mich auch gewundert, nachdem ich nach trim() im Internet suchte, aber ich hatte dann Deine Absicht verstanden.
Das Getrimme soll dafür sorgen, dass bei allen Schreibweisen am Ende eine korrekte Anzahl von / im Pfad vorkommen.
Ja? ;)
»» Aber zunächst... das Skript in Deinem zweiten Posting dient nur dazu, die Thumbnails automatisch generieren zu lassen, ja? [...] Sehen wir das als Zugabe, ja?
Gut, dann war das quasi überflüssig, es zu erstellen.
Aber nein! Das klingt jetzt so enttäuscht von Dir... Das Skript wird im Artikel schon seine Verwendung finden. Nichts, was Du hier schreibst und empfiehlst, ist überflüssig. Und schon gar nicht deswegen, weil ich es gerade hier nicht gebraucht habe.
»» Diese DOCUMENT_ROOT-Abfrage und das Definieren der gleichnamigen Konstante zu Beginn des Skripts »common.php« ist wofür? Die Konstante wird nämlich nicht mehr gebraucht (taucht nirgends mehr auf).
Ihr Anwendungsfall ist mir beim Umgestalten während des Entwurfprozesses entschwunden. Die Erstellerei kann damit auch entfallen.
OK.
Das mit den Verzeichnissen hatte ich mir so gedacht:
GALLERY_BASE_DIRECTORY zeigt auf das Basisverzeichnis aller Galerien. In meinem Fall war das "galleries",[...]
gekürzt
Das Problem ist, dass wir nicht wissen, so wir denn sowas etwas allgemeiner anbieten wollen, ob die User einen speziellen Galerie-Verzeichnis haben. So könnte es sein, dass ein User eine Galerie in /abc, eine zweite in /def hat - und dennoch ein Skript dafür benutzen möchte...
OK, Deine Variante ist in dem Fall super sicher, da es dagegen geprüft wird. In dem Fall müssten wir die Erläuterungen anpassen.
DIR_PATH ist nicht gerade ein sprechender Bezeichner. Mit dem Namen kann das ein Pfad zu jedem möglichen Verzeichnis sein.
Mag sein, Beat hat mich schon mal auf meine komischen Bezeichner hingewiesen, damals, bei der ersten Version meines Date::Today-Moduls (s. Sig unter »Heute«: mittlerweile habe ich die Bezeichner an Date::Calc angepasst).
Dass ich solange gebraucht habe, die paar Änderungen einzubauen, hat damit zu tun, dass ich in der common.php mit diesen ganzen Pfadangaben und -manipulationen nicht durchgeblickt habe, und mir alles mittels echo ausgeben lassen musste.
Dabei hab ich doch extra jeweils ein Beispiel darunter geschrieben, was aus dem Pfad werden soll.
?
And I send you all my thanks and a bang on the ear (Frei nach »Waterboys«)
Viele Grüße aus Frankfurt/Main,
Patrick
_ - jenseits vom delirium - _
Diblom [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?