echo $begrüßung;
Dann sollte aber readfile() vollkommen ausreichen für deine
Zwecke, die Kontrolle übernimmt ja dein Script.if($user=='wolke'){readfile(images/bild1.jpg);}
else{die('DU BIST NICHT WOLKE');}Das klappt natürlich nur, wenn Du keine andere Ausgabe im Browser
hast, leerzeichen usw. sonst hast du wieder den Textsalat des Bildes
anstatt das Bild selbst.
readfile zum Dateiinhalt durchreichen ist soweit richtig, aber es ist nicht ausreichend. Es fehlt ein passender Content-Type-Header. Und Fehlermeldungstext anstelle eines Bildes zu senden verwirrt manche Browser, da sie den Content-Type-Wechsel beim zweiten, diesmal anzunehmenderweise autorisierten, Zugriff nicht beachten. Als Fehlermeldung ist in dem Fall ein entsprechender HTTP-Statuscode angebrachter.
In dem Fall musst du natürlich mit einem ordentlichen
<img>tag arbeiten und wenn du Den Pfad nich anzeigen lassen willst
ein temporäres File erzeugen.$tmpname = 'tmp/pic12345.jpg'
copy('images/bild1.jpg',$tmpname)if($user=='wolke'){echo'<img src="'.$tmpname.'"';}
else{die('DU BIST NICHT WOLKE');}
Na toll, damit kopierst du das geschützte Bild in einen ungeschützten Bereich, wo es nun durch jedermann zugreifbar ist.
Aber nicht vergessen dann wieder das temporäre
Bild irgendwann wieder zu löschen.
Wann genau soll das bitte geschehen? Bei dieser Lösung wird eine Garbage Collection benötigt, die irgendwie aufgerufen werden muss.
1. Der Browser ruft das Script auf. Das Script erzeugt seine Ausgabe und beendet sich wieder.
2. Er findet das <img src="tmp/pic12345.jpg">
3. Er macht einen zweiten Request, diesmal auf tmp/pic12345.jpg
4. Und nun? Wie kommt jetzt der Garbage Collector zum Einsatz?
echo "$verabschiedung $name";