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&amp;album='.$map.'&amp;afbeelding='.$vorige_afbeelding['basename'].'" title="Ga naar foto '.$vorige_afbeelding['basename'].'">&lt;&lt; Vorige</a>';
			}
?>

O.a. met bovenstaande haal ik foto´s op. De basis van dit script heb ik van een tutorial van phphulp
Dit gaat via het filesystem. Ik kan me niet indenken dat een .htaccess een blokkade vormt.

Kan je met readfile() wel in je beveiligde directory komen?
Ja, dat lukt wel
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) :)?

Reageren