Weil ich eine Anfrage zur Erweiterung meines Layer Skriptes bekommen habe, möchte ich euch heute zeigen wie ihr ganz einfach eine IP Sperre in PHP erstellen könnt. Falls es dir noch nichts sagen sollte, man kann es auch eine PHP Reload Sperre nennen und dies wird vor allem bei Layern eingesetzt, damit diese nur beim ersten Seitenaufruf alle 24 Stunden aufgerufen werden. Für dieses Skript braucht ihr keine Datenbank, allerdings wird hier eine Session verwendet, welche je nach Servereinstellung nach zirka 10-15 Minuten nicht mehr gültig ist. Also falls euer Besucher eure Seite nach 1 Stunde wieder besucht, wird eure Werbung trotzdem nocheinmal angezeigt.
Falls man wirklich eine 24 Stunden IP Sperre realisieren möchte, sollte man mit einer Datenbank (z.B.: MySql) arbeiten, allerdings müsst ihr eure Besucher darauf hinweisen, dass ihr die IP Adressen für eine gewisse Zeit mitspeichert. Allerdings sollte dieses Skript für die meisten Seiten ausreichend sein, außer ihr wollte es auf einer Community oder einer ähnlichen Seite einbauen, welche die Besucher mehrmals am Tag besuchen. Aber jetzt hab ich genug geschrieben, kommen wir zum eigentlichen PHP Skript.
<?php
//Unbedingt Session Starten, sonst gehen die Daten des Session-Arrays verloren
session_start();
//Vor dem Aufruf der Werbung die Sperrvariable abfragen
//Sekunden*Minuten*Stunden ==> 60*60*24 = 24h Sperre
if(!isset($_SESSION['ip-sperre'])||$_SESSION['ip-sperre']<time()-60*60*24){
//Speichern der aktuellen Zeit in den Session-Array
$_SESSION["ip-sperre"] = time();
echo "Werbung: <a href='http://www.devno.com'>Anleitungen für PHP</a>";
}
else{
echo "Hallo, du bekommst keine Werbung angezeigt,
weil du schon am ".date("d.m.Y", $_SESSION['ip-sperre']).
" um ".date("h:i", $_SESSION['ip-sperre'])." diese Seite besucht hast.";
}
?>Sehr wichtig ist, dass ihr bei jedem Aufruf eurer Seite die Funktion session_start() aufruft, weil sonst die gespeicherten Daten in dem Session Array verloren gehen. Falls ihr einen Blog verwendet sollte diese Funktion bereits aufgerufen werden und ihr müsst euch nicht weiter drum kümmern.
Das Skript funktioniert so, dass wir einfach bei jedem Aufruf der Werbung die aktuelle Zeit in den Session Array speichern. Diesen merkt sich der Webserver (PHP) für jeden einzelnen Client und kann diesen solange abrufen, wie die Session gültig ist. Bevor wir die Werbung anzeigen überprüfen wir einfach, ob ein Zeitpunkt gespeichert wurde bzw. ob der gespeicherte Zeitpunkt schon mehr als 24 Stunden zurückliegt (if(!isset($_SESSION[‚ip-sperre‘])||$_SESSION[‚ip-sperre‘]<time()-60*60*24)). In der Else Verzweigung könnt ihr irgendetwas anderes Anzeigen lassen oder es einfach weg lassen.
Mein Beispiel Skript könnt ihr hier probieren und auf die Funktion überprüfen. Es ist 1 zu 1 das Skript von oben und hat eine Ip Sperre von 24 Stunden.






