Avatar billede JJ77 Juniormester
05. april 2006 - 20:06 Der er 6 kommentarer og
1 løsning

Udløb af session skal kalde en fil

Jeg har noget sessionhaløj på min hjemmeside.. Mit problem er at når sessionen udløber efter 1 time ser det stadig ud som om man er logget ind. Kan man ved sessionudløb aktivere en frame så den kalder en bestemt side? Framen som skal kalde en fil er på siden index.html og har navnet "login". siden som skal hentes i framen "login" hedder "members/venstrebar.php"
Min sessionkode kan ses nederst (noget af den).
Håber jeg har udtrykt mig forståeligt:)


clean_sessions();
    $query = "SELECT userId from loggedUsers where sessionId = '$sid' and
              unix_timestamp(date_add(lastAccess, interval 1 hour)) > unix_timestamp(now())";

    $result = mysql_query($query);
   
    if($result)
    {
        $row = mysql_fetch_row($result);
        if($row)
        {   

            $query = "UPDATE loggedUsers set lastAccess=now() where userId = $row[0]";
            mysql_query($query);
        }
       
        return $row[0];
    }
    else
    {
        return 0;
    }
}
Avatar billede smirnoff Nybegynder
05. april 2006 - 20:20 #1
Alt efter dit metodes returværdi ka du sætte en header:

if(clean_session() == 0)
  header("location: login.php");
else
  ...
Avatar billede jakobdo Ekspert
05. april 2006 - 21:49 #2
Du kan ikke direkte kalde noget når en session løber ud.
I php er der ikke events som man kender det i andre programmeringssprog.
En session vil på et tidspunkt blot være død ja, så du skal teste som smirnoff er inde på, hvornår session'en rent faktisk er løbet ud, eller ikke eksisterende længere.
Avatar billede JJ77 Juniormester
06. april 2006 - 10:12 #3
Jeg har nedenstående kode som bliver vist i en lille frame når man er logget ind. kan man så indsætte ovenstående kode i denne fil, og så lade den tjekke om session er udløbet, og hvis så få den til at kalde filen "login.php" i samme vindue?

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
</head>

<body background="../NewFiles/BgVenstrebar.gif" bgcolor="#E4E9EC" scroll="no" link="#658091" vlink="#658091" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">

<table width="160" border="0" cellspacing="0" cellpadding="0">
    <tr height="80">
    <td bgcolor="#4682b4" height="80" background="../NewFiles/overkantLinkbar.gif"></td>
    </tr>
    <tr height="23">
    <td bgcolor="#a8b7c1" height="23" background="../NewFiles/baggrundlLinks.gif"><span class="stor"><b> &nbsp;Bruger login</b></span>
    </td>
    </tr>
    <tr height="47">
    <td height="47">
    <b><span class="lille">&nbsp;<a href="logout.php">Log ud</a> | <a href="altTilProfilen.php" target="vs">Min konto</a></span></b></td>
    </tr>
</table>
</body>
</html>
Avatar billede jakobdo Ekspert
06. april 2006 - 10:14 #4
Et eller andet sted må du sætte en session, når en bruger logger ind.
Den session skal du så "bare" tjekke hver gang siden loades.
Avatar billede JJ77 Juniormester
06. april 2006 - 10:39 #5
Er det noget af nedenstående du snakker om?.. er lidt sort;)


if(($userId = is_valid($userName,$password,$con)) != 0)
    {
       
        session_start();
        $sessionId = session_id();
       
        if(set_session($userId,$sessionId,$con))
        {

            if(isset($ret) && is_valid_referer())
            {
                $url = $_REQUEST['url'];
                header("Location: $url");
            }
            else
            {
                header("Location: my.php");
            }
        }
        else
        {
Avatar billede jakobdo Ekspert
11. april 2006 - 10:04 #6
Jeg tror du har en klasse som bruges til at hente og sætte sessions.
Avatar billede JJ77 Juniormester
31. august 2006 - 23:14 #7
lukker
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