Lieber Treziman,
Ich wusste, da kommt noch was...
und was hast Du als Vorbereitung dafür bereits in die Wege geleitet?
Die Bilder werden vom Script korrekt angezeigt. Nur eben nicht im Quelltext. Das ist okay.
Diese Aussage klingt nach absolut konfusem Blödsinn, aber das kann auch an meiner Begriffsstutzigkeit liegen.
Ich arbeite gerade an der get_image.php. Sieht z.Zt. so aus:
Welch ein Graus! Da sind böse Anfängerfehler drin. Da kann ich nur hoffen, dass Du aus Demozwecken den tatsächlichen Code für das Posting verändert hast.
session_start(); if(isset($_SESSION["user_xyz"])) { // User ist eingeloggt-darf auf Bilder zugreifen
Ist das wirklich der Schlüssel im _SESSION-Array? Da hätte ich jetzt eher etwas in dieser Art erwartet:
$_SESSION = [
'user' => 'user_xyz',
'token' => 'secret'
];
Und dann kann ein Script anhand des Schlüssels user
ermitteln, ob es wirklich einen solchen Eintrag in der DB gibt und ob sich der Benutzer auch korrekt authentifiziert hat. Einfach so den User-Namen als Session-Schlüssel zu verwenden... naja, vielleicht ist das ja sinnvoll - oder Du hast in Wirklichkeit einen anderen Code und hier nur für Demo-Zwecke etwas vereinfacht.
$name=$_GET["bild"]; if($name=="Suse"){ $datei="../bilder/klaus1.jpg"; }elseif($name=="winter"){ $datei="../bilder/sommer1.jpg; }elseif(etc.){ usw.
Hier ist der Teil, bei dem ich mich echt wundern muss.
- Warum wird der Wert in
$_GET["bild"]
in eine Variable umkopiert? Das verschleiert im weiteren Verlauf des Scripts nur, dass er potenziell böse ist! @Der Martin nannte/etc/fstab
als Beispiel für solche Fälle. - Warum diese Serie an
if
...elseif
? Da verwendet man eine Liste (Array) an Werten (wahrscheinlich aus einer Datenbank), gegen die man in einer Schleife (foreach
) prüft. - Wenn Du eine Dateinamensänderung vornimmst, dann sicherlich nur deswegen, weil Du gleichlautende Dateinamen von unterschiedlichen Uploads gegen Dateiüberschreibungen härten willst. Diese Zuordnung von Upload-Name und tatsächlichem Dateiname auf dem Server sollte auch wieder programmatisch erfolgen und nicht hartcodiert. Ist das auch wieder eine Vereinfachung für's Forum von Dir?
Wenn also php (if...) keinen gültigen Wert findet, wird forbidden.gif angezeigt.
Wie genau? Den wirklich interessanten Code für die Auslieferung der Datei zeigst Du gerade nicht, dabei war dieser der wesentliche Diskussionsgegenstand. Schade!
Sobald fertig werde ich das Ganze natürlich noch testen, vor allem sicher auch über Direkteingabe in Adressleiste des Browsers. Falls dann etwas nicht stimmt, kann ich dagegenwirken.
Ich habe noch immer den schweren Verdacht, dass Du nach wie vor nicht verstanden hast, worum es uns bei unseren Warnungen wirklich geht... oder ich habe alles nur nicht so richtig verstanden.
Liebe Grüße
Felix Riesterer