» Codeschnipsel
[PHP]
Reloadsperre mit Textdatei
Textdateibasierte Reloadsperre, gibt die Zeit (in Sekunden) zurück wie lange die Sperre noch aktiv ist. Bei Rückgabe von Null ist die Sperre nicht aktiv. Der Beispielaufruf zeigt die Restzeit in Stunden, Minuten und Sekunden an.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
<?php
function ReloadSperre()
{
// Dauer der Sperre in Sekunden
$sperrZeit = 3600; // 3600 = 1 Stunde
$dateiname = "reload.txt";
// Zeit bis Sperre abgelaufen
$reloadZeit = 0;
// IP-Adresse
$ip = $_SERVER['REMOTE_ADDR'];
// aktuelle Zeit
$zeit = time();
$datei = file($dateiname);
// Datei durchlaufen und auf Sperren prüfen
for($i = 0; $i < sizeof($datei); $i++)
{
$eintrag = explode("|", $datei[$i]);
// Sperre aktiv?
if($eintrag[0] > $zeit - $sperrZeit)
{
// gleiche IP?
if(trim($eintrag[1]) == $ip)
{
// Restdauer der Sperre berechnen
$reloadZeit = $sperrZeit - ($zeit - $eintrag[0]);
}
// Zeile wieder dem Dateiinhalt hinzufügen
$neuerInhalt .= $datei[$i];
}
}
// Keine Sperre => neuen Eintrag erzeugen
if($reloadZeit == 0)
$neuerInhalt .= $zeit."|".$ip."\n";
// Daten in Datei speichern
$handle = fopen($dateiname, "w");
fwrite($handle, $neuerInhalt);
fclose($handle);
// Restzeit zurückgeben
return $reloadZeit;
}
// Beispielaufruf
$reload = ReloadSperre();
if($reload > 0)
echo "Reloadsperre noch ".sprintf("%02d:%02d:%02d",
$reload / 60 / 60, ($reload / 60) % 60, $reload % 60)." aktiv";
else
echo "Keine Reloadsperre";
?>
|