Thomas Luethi: Bild vergrößert darstellen

Beitrag lesen

Hallo,

So kann man es sehen, wobei die Seiten halt nicht nur aus Bildern, sondern auch aus Text bestestehen, hier ein Beispiel:
http://www.stanload.de/ontour/2003061623.html

Achso. Du machst die Seiten also "von Hand", und ab und zu
hat es kleine Bilder, von denen einige "vergroessert"
werden sollen.

$klein[1]="klein1.jpg";
$gross[1]="gross1.jpg";
$beschreibung[1]="Ich auf dem Mount Everest";
[SNIP mein Vorschlag]
Das Skript wird dann also so aufgerufen.
skript.php?grossid=1

Ich muss also die möglichen Bilder, die es in gross geben wird, erst alle deklarieren?

Das ist das sicherste und sauberste.
Zudem kannst Du so auch fuer jedes Bild eine Legende
schreiben, was ich als Besucher Deiner Seiten sicher
ganz nett faende.
(Und auch das ALT-Attribut koenntest Du sinnvoll fuellen...)

Wenn ich aber weiss, dass es ein grosses Bild gibt (deshalb biete ich ja den Link an), könnte man doch dadrauf verzichten, oder?

Eine Alternative waere, dem Skript, das das grosse Bild
anzeigen soll, effektiv den Dateinamen des Bildes weiterzugeben.

skript.php?bild=mounteverest.jpg

Solange Du nur das IMG-Tag zum Einbetten des Bildes in den
HTML-Quellcode schreibst, ist das eigentlich auch kein
Sicherheitsrisiko. Selbst wenn ein boeser Junge reinschreibt:

skript.php?bild=.htaccess
wird daraus ja nur
<img src=".htaccess" alt="...">

Kritisch sind da eigentlich nur die Sonderzeichen <, > und ",
die Du aber leicht rausfiltern kannst mit htmlspecialchars().
Eigentlich ist selbst das ueberfluessig - wenn ein boeser
Junge an der URL rumspielt, soll er sich nicht wundern,
wenn er eine kaputte Seite angezeigt bekommt...

Anders sieht es aus, sobald Du mit dem PHP-Skript effektiv
auf die Datei zugreifst, z.B. um die Dimensionen des Bildes
automatisch auszulesen mit getimagesize().
Dann solltest Du dafuer sorgen, dass vom Skript wirklich nur
Dateinamen und Pfade verwendet werden, die erlaubt sind.

Etwas sicherer kannst Du das machen, indem Du die Endigung ".jpg"
automatisch anfuegst und saemtliche Slashes und Backslashes ("/","")
aus dem Parameter entfernst.
http://www.dclp-faq.de/q/q-security-variablen.html (Punkt 4)
Wenn Du keine Punkte in den Dateinamen hast (ausser denjenigen
vor dem "jpg" natuerlich), kannst Du auch noch alle Punkte
entfernen.

Ein Link auf das Skript haette dann z.B. folgende URL:

skript.php?bild=mounteverest

Das Skript soll zuerst den Dateinamen "sauber" machen
und dann den Pfad zum Bild zusammensetzen:

$dateinamesicher=htmlspecialchars(strip_tags($_GET['bild']));
$dateinamesicher=str_replace("/","",$dateinamesicher);
$dateinamesicher=str_replace("\","",$dateinamesicher);
$dateinamesicher=str_replace(".","",$dateinamesicher);
$bildpfad='pfad/zum/bildverzeichnis/'.$dateinamesicher.'jpg';
  // sollte nun 'pfad/zum/bildverzeichnis/mounteverest.jpg' heissen.

Nun kannst du das IMG-Tag ausgeben:

echo "<img src="$bildpfad" alt="Foto im Grossformat">";

Alles klar?

Gruesse,

Thomas