In een website heb ik een fotoalbum waarbij de foto´s via het php-script getoond worden.
nou is het ook mogelijk dat de foto benaderd wordt door de directe link als url op te geven, maar ik wil dat er dan een forbidden melding komt. Hoe doe ik dat?
De image-bestanden staan in deze structuur:
mijndomein.nl/albums/album1/foto1.jpg
Dus alles in submappen in /albums/
De images staan op dezelfde server. Zoals gezegd, ik kan alleen maar bestanden en submappen in de root van het domein zetten, bij deze hoster. In de Wampomgeving heb ik alles in dezelfde structuur als bij de host.
<?php
if (!$bestanden = glob($map.'/*.*')) {
$bestanden = array();
}
foreach ($bestanden as $bestand) {
if (($bestand !== $map.'/.') AND ($bestand!== $map.'/..')) {
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if ($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png') {
$afbeeldingen[] = $bestand;
}
}
}
$aantalfotos = count($afbeeldingen);
if (isset ($afbeelding)) {
foreach ($afbeeldingen as $id => $naam) {
if (basename($naam) == $afbeelding) {
$fotonr = $id;
}
}
if (isset ($fotonr)) {
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if ($fotonr > 0) {
$vorige_afbeelding = pathinfo($afbeeldingen[$fotonr - 1]);
echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$vorige_afbeelding['basename'].'" title="Ga naar foto '.$vorige_afbeelding['basename'].'"><< Vorige</a>';
}
?>
O.a. met bovenstaande haal ik foto´s op. De basis van dit script heb ik van een tutorial van phphulp
Dan gok ik dat je maar een deel van de code liet zien, en de afbeelding gewoon via een img-tag in HTML opende. En die requests gaan dan uiteraard via de webserver.
Met readfile() kan je prima de afbeeldingen via PHP inladen. Let er wel op dat je juiste headers meegeeft.
Ariën, je hebt helemaal gelijk. Ik ga het script aanpassen en readfile() gebruiken. Tenminste, ik hoop dat ik daar uitkom, heb dat nog nooit bij de hand gehad.
Toevallig een tip (van de sluier) :)?