Moin!
Was ist, wenn in $_GET['pic'] etwas drinsteht, was PHP zu "false" evaluiert? Der String "0" beispielsweise fällt darunter.
Dann kann es getrost ignoriert werden, es sei denn man
rechnet damit, was aber speziell in diesem Fall zu
ignorieren wäre.
Fehlerkonditionen zu ignorieren ist aber nicht die feine englische Art.
Zumal du ein Stück weiter unten ja den Extra-Aufwand zum korrekten Auslesen des Verzeichnisses in der while-Schleife gemacht hast.
Warum ist also hier ein String wie "0" egal, während er beim Auslesen des Verzeichnisses eben gerade nicht egal ist?
Wenn schon schlampig, dann bitte überall gleich. Oder eben auch nicht.
$pic = stripslashes($pic);
// Das darf nur passieren, wenn magic_quotes_gpc auf ON steht.Ok, könnte man auch noch abfragen.
Ersetze "könnte man" durch "muß man".
Das verstehe ich nicht, warum ein Muß ?
Weil PHP seine Standardeinstellungen so nach und nach ändert. Das Ändern von register_globals solltest du mitbekommen haben - in der Folge gibts viele Provider, die das wieder auf on setzen, weil sonst zuviele Kunden über nicht funktionierende Skripte meckern, aber es gibt auch genügend Provider, denen Sicherheit für ihre Kunden wichtiger ist, und die das auf off haben.
Das gleiche gilt für magic_quotes_gpc! stripslashes() bedingungslos anzuwenden ist einfach falsch.
// Der Aufruf von clearstatcache() an dieser Stelle ist mehr als sinnlos - er kostet bei Dateimetadatenoperationen (die du nicht benutzt) auch richtig Performance, wenn man ihn unbedacht anwendet.
Von der Performanceeinbusse steht im Manul nichts, eben genau
umgekehrt, deshalb wird ja clearstatcache empfohlen,´aber erst beim mehrmaligen Aufruf für eine Datei.
Sorry, aber ein Cache ist dazu da, einmal und zeitaufwendig festgestellte Ergebnisse für die erneute Verwendung mit erheblich höherer Performance liefern zu können.
Der stat-Cache tut dies bei PHP für Dateimetainformationen. Wenn du den Cache löschst - und zwar bei jedem Bild erneut - dann wird der Cache effektiv eliminiert und kann seinen beschleunigenden Zweck nicht mehr erfüllen.
Also kostet es Performance.
Irgendwas hast du da nicht richtig verstanden.
Worauf bezieht sich das "Nein, soll es nicht"? Das Skript läuft in den HTML-Teil, wenn der gesetzte Parameter kein existierendes Bild beschreibt. Ist eine Unschönheit.
So ist dieses Script bereits aufgebaut.
Nein. Schau noch mal genau die Schachtelung der IFs an.
Eine if else regelt das hier.
Das exit() wird nur dann ausgeführt, wenn $_GET['pic'] Inhalt hat _und_ die Bilddatei existiert.
Wenn die Bilddatei nicht existiert, landet man bei if (!file_exists...) in der Ausgabe von echo '<h1>DATEI NICHT GEFUNDEN</h1>', danach wird exit() eben gerade nicht aufgerufen, und es kommt zur Generierung der Galerie. Trotz gesetzem Parameter für pic, der ja bedeutet, dass ein Bildaufruf erfolgt ist.
Einzige Ausnahme der Aufruf als Bild, hier soll
unter keinen Umständen das Script weiterlaufen.
Genau diese Ausnahme ist nicht erfüllt.
Soll ja nur das Bild angezeigt werden. Und wenn das
nicht klappt kommt die Ausgabe gar nicht zum tragen.
Also bereits 100% gelöst.
Eben nicht.
Probier es aus.
Bitte selbst probieren.
- Sven Rautenberg
"Love your nation - respect the others."