[PHP] session_start en class / functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 16-09 19:21

klokop

swiekie swoeng

Topicstarter
Ik vraag me af waar ik in mijn situatie 'session_start' moet plaatsen.
Wat ik nu heb (ingekort): 2 bestanden, index.php en include.php, waarbij de tweede in de eerste ge-include word.
include.php, met o.a.
PHP:
1
session_start() ;

index.php, met een class, en de inititalisatie van die class.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$bla = new sess_class();

class sess_class {

  function sess_class() {
    if ($_POST['login']) {
      $this->login();
    } else if ($_GET['logout']{
      $this-logout();
    }
    header('location: '.$_SERVER['PHP_SELF']);
  }

  function login() {
    $_SESSION['lalalala']  = '234567';
    $_SESSION['pomtiepom'] = 'floep';
  }
  
  function logout() {
    session_unset();
    session_destroy();
  }
}


Op de ontwikkel server gaat alles goed, sessies worden aangemaakt bij het inloggen, en vernietigd bij het uitloggen.
Nou heb ik alles net op een productie server getest, en krijg ik de error:
PHP:
1
2
Warning: session_destroy(): Trying to destroy 
uninitialized session in index.php on line 32


Het enige verschil tussen de versies van php op die servers is zo te zien dat op de prod.
server 'session.use_trans_sid' false is, en op de ontwikkel true. Maar als ik op de ontwikkelserver
PHP:
1
ini_set('session.use_trans_sid', false);

doe, om de boel gelijk te trekken, werkt het script op de ontwikkel server nog steeds...

Nou heb ik ontdekt dat ik 'session_start()' net boven 'session_destroy()' kan zetten in de functie 'logout',
en dat daarmee het probleem op de prod. server is opgelost. Op de ontwikkelserver krijg ik dan echter deze melding dat de sessie al gestart is....

[ Voor 13% gewijzigd door klokop op 27-02-2004 10:49 ]

"Passing silhouettes of strange illuminated mannequins"


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom session_start.php en niet gewoon session_start()? Weet je verder zeker dat de include van de tweede file ergens boven het destroy commando staat? Dat kan volgens mij ook problemen veroorzaken.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 16-09 19:21

klokop

swiekie swoeng

Topicstarter
Waarom session_start.php en niet gewoon session_start()?
Sorry, ik bedoel ook 'session_start()' (openings post aangepast)
Weet je verder zeker dat de include van de tweede file ergens boven het destroy commando staat? Dat kan volgens mij ook problemen veroorzaken.
Jup, die include staat helemaal bovenaan de pagina. En in de include staat session_start() ook helemaal bovenaan.

[ Voor 76% gewijzigd door klokop op 27-02-2004 10:51 ]

"Passing silhouettes of strange illuminated mannequins"


Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

als je $_SESSION gebruikt moet je geen session_unset() gebruiken, ik denk dat het daaraan ligt.

Zie ook http://php.net/session_unset

[ Voor 18% gewijzigd door MatHack op 27-02-2004 11:10 ]

There's no place like 127.0.0.1