#!/usr/bin/perl
$zeit = time();
print "Content-type: text/html\n\n";
open(ID,"uhrcounter.dat");
$ID = <ID>;
close(ID);
$ID++;
open(IDC,">uhrcounter.dat");
print IDC "$ID";
close(IDC);
if (!-e uhr.dat){
open (FILE, ">uhr.dat");
print FILE "$zeit|$ID\n";
close FILE;
rename(uhr.dat, uhrneu.dat);
chmod(0666, "uhrneu.dat");
}
open (FILE, "<uhrneu.dat");
$uhr=<FILE>;
close FILE;
$neuzeit = $zeit - $uhr;
if ($neuzeit >= 60){
open (FILE, ">uhrneu.dat");
print FILE "$zeit";
close FILE;
open(IDC,">uhrcounter.dat");
print IDC "0";
close(IDC);
}
if ($ID <= 4 ) {
print "Alles OK, weitermachen, es sind max. 4 Benutzungen in 60 Sek. möglich.\n";
print "<br>Das ist Benutzung $ID\n";
} else {
print "Sorry, das darf nur 4 mal in 60 Sek. benutzt werden";
}
Wie funktioniert's?
Zunächst einmal wird die Unix Zeit in Sekunden der Variable $zeit zugewiesen. $zeit = time();
Nun folgt eine Counterroutine die zuerst den Counterstand liest,
open(ID,"uhrcounter.dat");
$ID = <ID>;
close(ID);
diesen hier um 1 erhöht
$ID++;
und dann den neuen Counterstand in die Datei schreibt.
open(IDC,">uhrcounter.dat");
print IDC "$ID";
close(IDC);
Nun wird geprüft ob die Dateien vorhanden sind, nötigenfalls wrden diese angelegt.
if (!-e uhr.dat){ !-e püft ob Datei uhr.dat nicht vorhanden ist. Würde dort stehen -e würde geprüft ob die Datei existiert.
Nun wird die Datei geschrieben mit dem Zeitstempel und der Counterzahl
open (FILE, ">uhr.dat");
print FILE "$zeit|$ID\n";
close FILE;
Hier nun wird mit dem rename Befehl die Datei umbenannt und in der Folgezeile ein CHMOD gesetzt.
rename(uhr.dat, uhrneu.dat);
chmod(0666, "uhrneu.dat");
}
Nun wird die Datei gelesen.
open (FILE, "<uhrneu.dat");
$uhr=<FILE>;
close FILE;
Dann werden die Zeiten berechnet $neuzeit = $zeit - $uhr;
Hier nun wird geprüft ob die Bedingung erfüllt ist, die Zeitspanne ist hier auf 60 Sekunden eingestellt.
Wenn ja, wird die Zeit in der Datei neu geschrieben und der Counter auf 0 gesetzt.
if ($neuzeit >= 60){
open (FILE, ">uhrneu.dat");
print FILE "$zeit";
close FILE;
open(IDC,">uhrcounter.dat");
print IDC "0";
close(IDC);
Nun wird mittels einer IF - ELSE Abfrage geprüft ob die Bedingung wahr oder falsch ist und je nachdem die entsprechende Aktion ausgeführt.
Hier bei wird bei kleiner gleich 4 (<=) die Benutzung erlaubt, ist die Zahl größer die Benutzung gesperrt.
if ($ID <= 4 ) {
print "Alles OK, weitermachen, es sind max. 4 Benutzungen in 60 Sek. möglich.\n";
print "<br>Das ist Benutzung $ID\n";
} else {
print "Sorry, das darf nur 4 mal in 60 Sek. benutzt werden";
}
Demo: testen
|