echo $begrüßung;
Wenigstens du hast verstanden, wie die Lösung funktioniert.
Datei 2:
<?php
$path = getcwd();
$name = substr($path, 50);
$slash ='/';
$path = '../../../../../../data/';
$bild = ($_GET['var']);
$pic = file_get_contents($path.$name.$slash.$bild);
echo $pic;
?>
Die Zugriffskontrolle ist hier aber nicht enthalten. Die solltest du noch einbauen, sonst ist das ganze Vorhaben ja witzlos, weil man img.php?var=irgendwas.jpg ja auch direkt aufrufen kann.
Auch ist das von mir erwähnte Sicherheitsproblem in diesem Code nicht gelöst. Wenn jemand nicht nur einfach in der Ausgabe von Datei 1 klickt, sondern img.php?var=... direkt aufruft, kann man sich nun recht einfach im Verzeichnisbaum bewegen und beliebige Dateien lesen (so sie der scriptausführende User lesen darf).
Solche
img.php?var=../../../etc/passwd
und ähnliche Zugriffe meine ich. Deswegen empfahl ich, wenn .. und / in $_GET['var'] enthalten ist, die weitere Auslieferung der Datei zu unterbinden.
Auch sollte überprüft werden, ob die Datei unter $path.$name.$slash.$bild existiert. Nicht dass veraltete Links Fehlzugriffe erzeugen. Durch die angezeigten Fehlermeldungen (und die darin enthaltenen Pfadangaben) kann man prima Rückschlüsse auf Gegebenheiten des Dateisystems ziehen.
Wie ebenfalls erwähnt wurde, fehlt die Ausgabe eines passenden Content-Type-Headers. Nicht alle Browser bemühen sich eine mit text/html ausgelieferte Bildressource als solche zu erkennen.
Ein
header("Content-type: image/jpeg");
oder
header("Content-type: image/png");
oder
header("Content-type: image/gif");
ist _kein_ überflüssiger Luxus sondern Notwendigkeit, möchte man ein funktionierendes Script haben.
Und noch eine Kleinigkeit:
$bild = ($_GET['var']);
Die runden Klammern sind hier überflüssig.
echo "$verabschiedung $name";