Eine kleine Erklärung zum UNIX Timestamp:
Die Funktion gettime() liefert einen UNIX Timestamp zurück, welcher die Sekunden seit dem 01.01.70 beinhaltet.
Mittels dieser Funktion lassen sich gewissen Zeitpunkte / Zeitdifferenzen berechnen und standardisiert ausgeben.
Wenn Du also einen Timeban erstellen möchtest, musst Du einfach den Timestamp des Ablaufdatums speichern, bspw. so:
//Dauer in Minuten = 5, Sekunden = 300
new duration = gettime() + 300;
Diesen Wert speicherst Du nun in der Datenbank, Datei, whatever.
Nun musst Du beim Login nur noch abfragen, ob eben genau dieser Wert in der Zukunft liegt.
Also wie war das noch mal mit dem Timestamp?
Sekunden seit dem 01.01.1970.
Daraus lässt sich erblicken, dass ein Timestamp von der Zukunft größer sein muss, als der aktuelle.
duration = /* Hier den Wert aus der Datenbank auslesen */;
if(duration > gettime()){ //mittels gettime() wieder den aktuellen Timestamp auslesen und vergleichen.
//noch gesperrt
}else{
//nicht (mehr) gesperrt
}
Die Dauer der noch gebannten Zeit berechnest Du, indem Du den aktuellen Timestamp von dem Wert aus der DB abziehst.
Dies sind dann die noch verbleibenden Sekunden.
Umrechnen dann so:
Sekunden umrechnen ?