Avatar billede rotco Juniormester
27. januar 2009 - 15:19 Der er 15 kommentarer og
1 løsning

Autologout Problem !

Hej,

Jeg har et problem med et auto logout script som jeg har...

Det er ikke et stort problem, men nærmere en meget dum fejl!

Problemet:

Scriptet er jo til for at det skal logge mine brugere ud! Det gør den også!

Problemet ligger i at den ikke smider dem over til siden der fortæller dem hvorfor de er logget ud, før de prøver at trykke på deres loginmenu.. Jeg vil gerne have at efter de (i det her testtilfælde) 10 sekunder bare smider dem direkte over til siden, uden at de skal gøre noget.. Så hvis de har været på toilettet, så kommer de tilbage til den side og ER logget ud i stedet for bagefter :)

Her er scriptet:

<?php
      session_start();

      if(!session_is_registered("session_count")) {
            $session_count = 0;
            $session_start = time();
            $_SESSION['session_count']=$session_count;
            $_SESSION['session_start']=$session_start;
      } else {
            $session_count++;
      }

      $session_timeout = 10; // 30 minutes (in sec)

      $session_duration = time() - $session_start;
      if ($session_duration > $session_timeout) {
          session_unset();
          session_destroy();
          $_SESSION = array();

echo "<meta http-equiv=\"refresh\" content=\"0;url=inactive.php?expired=yes\">";
      } else {
          $session_start = time();
          $_SESSION['session_start']=$session_start;
      }
      ?>
Avatar billede jakobdo Ekspert
27. januar 2009 - 15:33 #1
Har du noget der står uden om og refresher siden igen og igen ?
For ellers bliver din kode jo netop først kaldt, i det øjeblik en bruger aktivt laver noget på din side.
Avatar billede rotco Juniormester
27. januar 2009 - 15:36 #2
Nope det har jeg ikke... Men er der ikke en måde det kan lade sig gøre uden at have et script der refresher hver andet sekund


Kan meta refresh egentlig slåes fra i browsere?
Avatar billede jakobdo Ekspert
27. januar 2009 - 15:54 #3
Meta kan godt deaktiveres mener jeg ja.
Men det kan alle refresh-tekniker jo.
settimeout() og setinterval() javascript kan også deaktiveres, ved at deaktivere javascript, osv...
Men igen, du skal have et script som refresher din side, hvis du vil have den til automatisk at hoppe til en side, når de er logget ud.

Men ved jævnlig refresh, skal du jo huske ikke at opdatere tiden, ellers virker det jo ikke. :o)
Avatar billede rotco Juniormester
27. januar 2009 - 16:05 #4
det er sandt :)

Well kom med et avr :)
Avatar billede showsource Seniormester
27. januar 2009 - 16:07 #5
For at logge ind, skal man vel poste navn/pass ?
Hvorfor så ikke sætte tidspunkt for login her ?
Ved hver request å¨beskyttede sider, tjekker du så om tiden er større end ( tid+tid man kan være inaktiv )
Og er den det, så lav en header.
Hvis ikke, så opdater tid til nuværende
Avatar billede showsource Seniormester
27. januar 2009 - 16:09 #6
nåh, rimelig forkert "formuleret", men princippet er vel:
login -> sæt tid+tilladt inaktiv tid
ved request, tjek om nu > end registeret tid, og hvis den er, logud, og ellers opdater registreret tid til ny tid
Avatar billede showsource Seniormester
27. januar 2009 - 16:10 #7
Og b.t.w.
session_is_registered() er out of date !
Brug
$_SESSION["noget"] = 1234;
Avatar billede rotco Juniormester
27. januar 2009 - 16:18 #8
Men jeg ved ikke hvorfor - men header virker ikke på min server? Jeg har ingen idé om hvorfor? Det er somom one.com har opdateret et eller andet på deres servere som gør at det ikke virker. Dunno?
Avatar billede showsource Seniormester
27. januar 2009 - 16:19 #9
output før header, garanteret!
Avatar billede rotco Juniormester
27. januar 2009 - 16:32 #10
det script du ser der... I stedet for meta refresh var der en header der.. men det virkede overhovedet ikke, så jeg skiftede det ud med meta refresh...

Er det one.com der har gjort det så?
Avatar billede showsource Seniormester
27. januar 2009 - 16:37 #11
Der kan jo være output før startende php tag
Avatar billede showsource Seniormester
27. januar 2009 - 16:38 #12
linieskift, mellemrum, eller gemt med en editor som laver "noget snavs" får php tag
Avatar billede jakobdo Ekspert
27. januar 2009 - 16:52 #13
Men en header() løser ikke problemet showsource.
rotco vil gerne at jeg logger på.
Så går jeg på toilettet, slår græsset osv...
Og når jeg kommer tilbage, så er siden automatisk logget af og jeg står på login siden eller noget lign.
Så der skal noget refresh af siden til.
Under skal der selvfølgelig være noget login og noget.
Avatar billede rotco Juniormester
27. januar 2009 - 16:57 #14
jeps jeg er helt med på det du sagde jacobdo :) Derfor ser jeg gerne du kommer med et svar.. Jeg forsøger at få implementeret det du sagde *GG*
Avatar billede jakobdo Ekspert
27. januar 2009 - 16:59 #15
Du får et svar så. :o)
Men header er mere sikkert end meta.
Meta er op til klienten.
Header() styres på serveren, så dermed bestemmer du 100%
Avatar billede jakobdo Ekspert
27. januar 2009 - 20:36 #16
Takker for point.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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