Avatar billede Fiber Bjørn Juniormester
25. april 2015 - 15:39 Der er 2 kommentarer og
1 løsning

Trække 2 tider fra hinanden i PHP

Hej.

Jeg vil gerne have siden til at vise hvor lang tid der er til at personen igen kan forsøge at logge ind på siden igen.

Altså 5 min fra sidste login forsøg: Siden tæller antal forsøg og ved 3 forsøg går hjemmesiden videre til en anden side og viser hvor lang tid der er til at personen kan forsøge at logge ind igen.


Jeg har gemt sidste sidste login forsøg i $_SESSION["sidste_login"] ved denne

$_SESSION["sidste_login"] = date("Y-m-d H:i:s");

og nu vil jeg gerne kunne vise hvor lang tid det er tilbage ind til der kan logges ind igen.

En der kan hjælpe?

F.eks.
$udskriv_tid_der_er_gaet =  date("Y-m-d H:i:s") - ($_SESSION["sidste_login"], time() - 300);
echo $udskriv_tid_der_er_gaet;

Jeg har fundet ud af at se hvornår der er gået 5 min fra sidste login.

$_5_min_tilbage = date("Y-m-d H:i:s", time() - 300);


if($_5_min_tilbage > $_SESSION["sidste_login"]) {echo "der er gået 5 min nu";} else {echo "der er ikke gået 5 min nu";}
Avatar billede Slater Ekspert
25. april 2015 - 16:19 #1
Det nemmeste der er bare at bruge PHPs timestamp direkte. Altså i stedet for date('Y-m-d H:i:s'), så bare gemme time() i sessionen.

Du kan også bruge PHPs nyere og mere moderne DateTime objekt, men i dette tilfælde skal det serialiseres for at lagres i en session, og parses igen for at bruges - plus det at trække to fra hinanden er en smule mere besværligt, så der er sådan set ingen grund til det.

Hvis du gemmer time i sessionen som $_SESSION['sidste_login'], så er det så nemt som at sige:

$forskel = time() - $_SESSION['sidste_login'];

for at finde antal sekunder siden sidst. Divider det med 60 for minutter.
Avatar billede Fiber Bjørn Juniormester
25. april 2015 - 17:58 #2
Tak for hjælpen.
Gi et svar = point :)

Brugeren bliver udelukket for at kunne login i 5 min.

Resultatet kom til at se sådan ud:

$forskel = time() - $_SESSION['sidste_login'];
$init = $forskel;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;

$minutes2 = 4 - $minutes;
$seconds2 = 60 - $seconds;

<? echo "$minutes2 min: $seconds2 sek. tilbage inden du kan forsøge igen";?></td>
Avatar billede Slater Ekspert
25. april 2015 - 18:41 #3
Så gerne. Og glimrende.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester