In diesen Tutorial wird erklärt wie man mit einer Session ein Bild schützen kann. Am Ende der Seite könnt Ihr das Script komplet herunterladen.
index.php
<?php
// index.php
session_start();
// sessionid setzen
@setcookie("sessionid", session_id());
echo 'Willkommen auf der Seite: index.php';
// Zum prüfen ob wie lange der aufruf der Index seite her ist
$_SESSION['time'] = time();
// Url zur Bilderseite
echo '<br /><a href="bilder_seite.php">Bild anzeigen</a>';
?>
bilder_seite.php
<?php
// bilder_seite.php
session_start();
if (empty($_COOKIE['sessionid'])) {
// sessionid nicht vorhanden
echo 'Es ist ein Fehler aufgetreten. <br>
<a href="index.php">Zurück</a>';
exit;
}
session_id($_COOKIE['sessionid']);
echo 'Bild anzeigen<br />';
// Aufruf, wan die Index aufgerufen wurde, man
// könnte hier noch überprüfen ob die schon länger
// als 5 min her ist und dann ein zusätzliche sperre einbauen
echo 'Der aufruf der index.php war am
'.date('d.m.Y um H:i Uhr', $_SESSION['time']). '.<br>';
// Bild anzeigen
echo '<img src="bild_anzeigen.php?bild=logo-von-php-space.gif"
alt="Das Bild"><br /><a href="index.php">Zurück</a>';
?>
bild_anzeigen.php
<?php
// bild_anzeigen.php
session_start();
if (empty($_COOKIE['sessionid'])) {
// sessionid nicht vorhanden
exit;
}
session_id($_COOKIE['sessionid']);
// Prüfen ob $_GET["bild"] ein wert hat
if(!isset($_GET["bild"])) $_GET["bild"]='';
// Prüfen ob es eine Bild ist, laut Dateiname
if ( !preg_match( '/^([a-zA-Z0-9._-])+.([a-z0-9]){2,4}$/is', $_GET['bild'] ) ) {
echo 'Das ist kein Bild.';
exit;
}
// Function zum Bild ausgeben
function bild_anzeigen($bild_location,$bild_name){
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Length: ' . filesize($bild_location));
header('Content-Disposition: attachment; filename=' . basename($bild_name));
readfile($bild_location);
}
// Prüfen ob Bild im bilder_verzeichnis vorhanden ist
if(file_exists("bilder_verzeichnis/".$_GET["bild"])){
// Bild ausgeben
bild_anzeigen("bilder_verzeichnis/".$_GET["bild"], $_GET["bild"]);
} else {
// Fehler ausgeben
echo 'Das Bild ist nicht auf den Server.';
exit;
}
?>
Bitte ein Ordner mit den Namen bilder_verzeichnis anlegen und in das gleiche Verzeichnis laden wie das Script. In den Ordner kann man ein Bild laden und muss in der bilder_seite.php den Url anpassen zu dne Bild.
z.b.: bild= logo-von-php-space.gif >> ersetzten mit Eühern Bild