Met een var_dump $foto heb ik gecontroleerd dat het juiste bestand wordt opgehaald en dit klopt. Dus ik neem aan dat ik niet voldoende header informatie meegeef, maar ik krijg niet gevonden wat dat moet zijn.
Wat je nu doet kan niet. Je kunt niet middenin een HTML document de inhoud van een plaatje echoën. Je moet hiervoor gewoon zoals anders een img tag plaatsen die naar een script verwijst, welke de inhoud van je plaatje teruggeeft. Maar dat lijkt in dit geval zinloos, omdat je toch alleen rauwe data teruggeeft en verder geen bewerkingen uitvoert.
Dus: gewoon een img tag gebruiken naar je bestand, zo eenvoudig is het.
Je geeft ofwel html weer, en dan gebruik je een <img src="abc.jpg">
of je geeft een binaire data weer met de juiste header:
voorbeeld:
<div>
<img src="plaatje.php">
</div>
en in plaatje.php:
<?php
$foto = 'foobar.jpg';
if (file_exists($foto)) {
header('Content-type: image/jpeg');
readfile ($foto);
}
?>
[size=xsmall]Toevoeging op 26/01/2016 17:20:19:[/size]
eventueel kun je dit (om het wat zinniger te maken) uitbreiden met een controle of user wel toegang heeft tot de plaatjes en de plaatjes dan buiten de document root te plaatsen