[PHP] Sessiegegevens niet mee in een function ?

Pagina: 1
Acties:
  • 39 views sinds 30-01-2008

  • Knakker
  • Registratie: April 2000
  • Laatst online: 06-09 19:10
Ik heb de search gebruik (search woorden 'php session function') maar ben mijn probleem niet tegengekomen.

Dit is mijn probleem:
Ik heb een tweetal sessievariabelen die ingesteld worden via een loginscript, namelijk $status en $emailadres. In mijn login.php staat:
PHP:
1
<? session_start ();....if ($status == "") {  ... hier het login gebeuren, en bij succesvol login wordt $status op "klant" gezet,   ... $emailadres ingesteld en wordt opnieuw geredirect naar login.php   }elseif ($status == "klant") {  include("functies_klant.php");  if ($action == "" ) {    klant_home();    }  elseif ....  }  ...?>

Dit gaat allemaal goed, met andere woorden: de sessievariabele $status komt goed door (immers, opnieuw geredirect naar login.php en we komen aan bij klant_home()).

Ik heb alle gedeelten die de klant op zijn scherm te zien kan krijgen om structurele redenen verwerkt in functies_klant.php. Daar staat een functie klant_home in:
PHP:
1
<? session_start ();function klant_home() {  include("db_connect.php");  $query = "SELECT * FROM klanten WHERE emailadres = '$emailadres'";   $resultaat = mysql_query($query); ... etc?>

De sessievariabelen $status en $emailadres zijn NIET terug te vinden hier (gecheckt door 'print_r($HTTP_SESSION_VARS);' en door simpelweg 'echo $status;' en 'echo $emailadres;') ... derhalve is de query dus niet geldig (WHERE emailadres = ''). Als ik $emailadres vervang door een geldig emailadres uit de database dan is het wel goed, dus aan de code zelf ligt het niet.

Ik hoop dat ik het een beetje duidelijk heb uitgelegd...


Mijn vraag: waarom zijn de sessie variabelen bij login.php nog wel aanwezig, maar zijn ze verdwenen als ik een functie uit een ander bestand aanroep (daar staat ook session_start)?

Geef mij maar een Warsteiner.


Verwijderd

heb je toch neit goed genoeg gezocht...

php.net/session-register
This registers a global variable. If you want to register a session variable inside a function, you need to make sure to make it global using global() or use the session arrays as noted below.

  • Knakker
  • Registratie: April 2000
  • Laatst online: 06-09 19:10
Och mijn god...lekker stom weer |:( Ik zal het meteen ff proberen, en laat het wel ff weten.

Geef mij maar een Warsteiner.


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Of $_SESSION['status'] gebruiken, $_SESSION is namelijk altijd global.

| Toen / Nu


  • Knakker
  • Registratie: April 2000
  • Laatst online: 06-09 19:10
Ahh... ik wist dus niet dat je vanuit een functie niet naar een global variabele kan grijpen, zonder $globals['status'] en $globals['emailadres'] te gebruiken.

Harstikke bedankt :)

Geef mij maar een Warsteiner.


Verwijderd

ja, maar pas sinds php 4.1.0

en ik had of course geen flauw idee welke php hij draait...

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

En weer standaard kennis.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1

Dit topic is gesloten.