[PHP] Waarom wordt de sessie niet beeindigd?

Pagina: 1
Acties:

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
Hoi,

Ik heb de volgende code om een PHP sessie aan te maken en af te sluiten. Dit werkt allemaal goed, de eerste maal dat de pagina wordt opgevraagd word er netjes om een wachtwoord gevraagd en het afmelden zorgt er ook weer voor dat je je wachtwoord weer moet ingeven.

Het probleem is dat de sessie niet automatisch word afgesloten. Ik zou graag willen dat een sessie niet langer dan een bezoek zou duren (of een dag ofzo, maar op dit moment blijft de sessie weken werken)

De code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* **************************************** 
* Sessie gegevens vastzetten. 
**************************************** */ 
  $sessid = substr(md5($REMOTE_ADDR), 0, 10); 
  session_id($sessid); 
  session_set_cookie_params(0); 

/* **************************************** 
* Sessie eindigen 
**************************************** */ 
  if($database == "logoff") 
  { 
    session_start(); 
    session_unset(); 
    session_destroy(); 
    exit("[HTML - Uitgelogd]"); 
  } 

/* **************************************** 
* Sessie starten 
**************************************** */ 
  session_start(); 
  /* **************************************** 
  * Controleren of er een wachtwoord in de 
  * sessie data staat, zo nee, deze code 
  * uitvoeren. 
  **************************************** */ 
  if (!isset($HTTP_SESSION_VARS["ispassword"])): 
  { 
    /* **************************************** 
    * Controleren of er een wachtwoord via het 
    * formulier is doorgegeven, zo nee, het 
    * formulier weergeven om het wachtwoord 
    * in te vullen. 
    **************************************** */ 
    if(!isset($ipassword)): 
    { 
      exit("[HTML - Wachtwoord ingeven]"); 
    } 
    /* **************************************** 
    * Zo ja, controleren of het wachtwoord 
    * correct is. 
    **************************************** */ 
    elseif($ipassword == $adminww): 
    { 
      $HTTP_SESSION_VARS["ispassword"] = $ipassword; 
    } 
    /* **************************************** 
    * Indien het wachtwoord incorrect is, de 
    * volgende pagina laten zien. 
    **************************************** */ 
    else: 
    { 
      exit("[HTML - Wachtwoord incorrect]"); 
    } 
    endif;        
  } 
  /* **************************************** 
  * Indien er een wachtwoord in de sessie- 
  * data staat, deze code uitvoeren. 
  **************************************** */ 
  else: 
  { 
    /* **************************************** 
    * Indien het wachtwoord correct is, dient er 
    * de geselecteerde database getoond te 
    * worden. Deze selectie vind later plaats. 
    **************************************** */ 
    if($HTTP_SESSION_VARS["ispassword"] == $adminww) 
    {} 
    /* **************************************** 
    * Indien het wachtwoord incorrect is, de 
    * volgende pagina laten zien. 
    **************************************** */ 
    else 
    { 
      session_unset(); 
      session_destroy(); 
      session_id($woei); 
      session_start(); 
      exit("[HTML - Sessie verlopen]"); 
    } 
  } 
  endif;


Dit geheel draait bij Vuurwerk op de servers... de phpinfo daarvan kan je hier zien

If nothing is written below, I was the last to reply...


Verwijderd

Waarom start je gelijk de sessie nadat je 'm gedestroyed hebt?

Verwijderd

tjah, ligt aan de instellingen van vuurwerk...
ik zie eerlijk gezegd het probleem niet, je haalt alle data toch weg? en bij een nieuw bezoek komt er toch weer nieuwe in? of bedoel je als de gebruiker niet uitlogt...
http://www.php.net/session_cache_expire zou moeten helpen...

Verwijderd

Ik zie niet in waarom je een nieuwe session moet starten om weer te geven dat de gebruiker is uitgelogd. Volgens mij werkt een session_start() aan het eind van een script niet eens...

http://www.php.net/session_cache_expire zou inderdaad kunnen helpen om een sessie te destroyen als de gebruiker niet uitlogt

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
Verwijderd schreef op 29 augustus 2002 @ 14:53:
Waarom start je gelijk de sessie nadat je 'm gedestroyed hebt?
:? Dat gebeurt niet... de session_destroy wordt door een exit gevolgd...
Verwijderd schreef op 29 augustus 2002 @ 14:59:
tjah, ligt aan de instellingen van vuurwerk...
ik zie eerlijk gezegd het probleem niet, je haalt alle data toch weg? en bij een nieuw bezoek komt er toch weer nieuwe in? of bedoel je als de gebruiker niet uitlogt...
http://www.php.net/session_cache_expire zou moeten helpen...
Ik ben aan het testen :)
Verwijderd schreef op 29 augustus 2002 @ 15:11:
Ik zie niet in waarom je een nieuwe session moet starten om weer te geven dat de gebruiker is uitgelogd. Volgens mij werkt een session_start() aan het eind van een script niet eens...

http://www.php.net/session_cache_expire zou inderdaad kunnen helpen om een sessie te destroyen als de gebruiker niet uitlogt
Je moet een sessie starten om die sessie te kunnen destroyen. En dit is niet het einde van het script, dit is het einde van de include....

If nothing is written below, I was the last to reply...


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

je moet zowieso het venster refreshen
anders wordt er nix getrasht (zelfde met cookies)

Doet iets met Cloud (MS/IBM)


  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
D2k schreef op 29 augustus 2002 @ 15:16:
je moet zowieso het venster refreshen
anders wordt er nix getrasht (zelfde met cookies)
Uiteraard, maar zelfs als de hele PC een nacht is uitgeweest ben ik nog ingelogd als ik niet zelf de 'logoff' heb gebruikt (die werkt dus WEL!)

If nothing is written below, I was the last to reply...


  • Expander
  • Registratie: Februari 2001
  • Niet online
|:(

niet goed gelezen

[ Voor 0% gewijzigd door Expander op 29-08-2002 15:18 . Reden: stom ]

Expanding the inexpandable


  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
Ok, je had het zelf al door :P

If nothing is written below, I was the last to reply...


  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
Lijkt niet te helpen... ik ben dus sinds de 'I'm testing' post niet op die site geweest, heb m'n PC zelfs nog gereboot, heeft geen nut gehad :( Ik heb de cache_expire op 5 minuten gezet, maar ik kom toch nog meteen binnen... (na langer dan 5 minuten gewacht te hebben en IE afgesloten te hebben)

Ik heb ook nog gekeken of er een cookie is, maar er worden helemaal geen koekjes op mijn PC gezet vanuit de pagina? Terwijl dit wel in de phpinfo staat...

If nothing is written below, I was the last to reply...


Verwijderd

je kan ook eerst de expire op 5 min. zetten en dan nogmaals de functie uitvoeren, maar dan zonder argumenten, dan kan je zien of het wel goed doorgevoerd wordt... zou moeten werken. Je kunt ook de andere sessie functie's bekijken op php.net, wellicht zit daar iets tussen... anders vuurwerk bellen, of andere (goedkopere - vuurwerk is niet te betalen...) provider

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
Verwijderd schreef op 29 augustus 2002 @ 16:03:
je kan ook eerst de expire op 5 min. zetten en dan nogmaals de functie uitvoeren, maar dan zonder argumenten, dan kan je zien of het wel goed doorgevoerd wordt... zou moeten werken.
Had ik al gedaan, ik krijg netjes '5' terug
Je kunt ook de andere sessie functie's bekijken op php.net, wellicht zit daar iets tussen...
Denk je dat ik dat nog niet heb gedaan?
anders vuurwerk bellen, of andere (goedkopere - vuurwerk is niet te betalen...) provider
'T is niet mijn provider, maar voor eenbedrijf waar ik een opdracht voor heb gedaan, en Vuurwerk geeft zelf geen support op PHP (en daarbij heb ik geen zin om hun te bellen, het is voor mij niet zo interessant, het is alleen voor de adminpagina's)

If nothing is written below, I was the last to reply...


Verwijderd

RainManX schreef op 29 augustus 2002 @ 15:14:
[...]

:? Dat gebeurt niet... de session_destroy wordt door een exit gevolgd...
[...]
Hebben we het wel over hetzelfde stukje code??? :? :?

PHP:
1
2
3
4
5
6
7
8
    else  
    {  
      session_unset();  
      session_destroy();    
      session_id($woei);  
      session_start();  
      exit("[HTML - Sessie verlopen]");  
    }


De else begint in je originele stuk op regel 75.

Ik zie hier toch echt een (onnodige) session_start na een session_destroy...

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
Verwijderd schreef op 29 augustus 2002 @ 16:16:
[...]


Hebben we het wel over hetzelfde stukje code??? :? :?
De else begint in je originele stuk op regel 75.

Ik zie hier toch echt een (onnodige) session_start na een session_destroy...
Nee, ik zat aan de bovenste te denken... |:(

Ik ben nu ff aan het testen of het session_start weghalen hier werkt...

[edit]
Hier thuis werkt ie nu in ieder geval wel... nou nog even alles een keer controleren

[ Voor 0% gewijzigd door Rashann op 29-08-2002 21:41 . Reden: resultaat toegevoegd ]

If nothing is written below, I was the last to reply...


  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Topicstarter
Helaas... hij werkt nog steeds niet... ik heb gisteravond de pagina bezocht, en vanmorgen kwam ik nog zonder iets te doen binnen :(

Zou het er iets mee te maken hebben dat je iedere keer hetzelfde sessionID hebt (in geval van vast IP)? Zou toch niet mogen uitmaken, want de sessie moet gewoon vernitigd worden...

If nothing is written below, I was the last to reply...


Verwijderd

De session is opgeslagen als een cookie in je browser, de browser moet dit cookie ook verwijderen. Als je iedere keer hetzelfde sessie id geeft dan wordt het sessie bestand gewoon gevonden en gebruitk ( door je webserver ). Probeer eens een sessie id dat bestaat uit een ip en een tijd.
Pagina: 1