Toon posts:

[php] session wordt niet doorgegeven

Pagina: 1
Acties:

Verwijderd

Topicstarter
Een vaag Session probleem, dat ook nog eens serverinstelling afhankelijk is:

Acties:

- Ik check op een user-password combinatie in de MySQL db
- Als deze correct is, wordt er een sessie gemaakt met session_start()
- In deze session wordt een variable in de sessie opgeslagen met session_register('sessionAuthorized'). Deze wordt dan true als de user/pwd combi goed is.
- Met header("location: url") wordt de gebruiker doorgestuurd naar de eerste pagina. Deze pagina checkt of de user ingelogd is aan de hand van $sessionAuthorized. Dit gebeurd met een include, die die('Niet ingelogd') doet als sessionAuthorized niet bestaat.

Nu het probleem (iets wat ik op de ontwikkel server niet had): de eerste keer dat ik inlog geeft ie dat ik niet ingelogd ben. Als ik dan back in de browser doe en nogmaals inlog lukt het wel. Controleren van het sessie-id leert dat ie de eerste keer verschillende sessies gebruikt, de tweede keer klopt het wel. Als ik de browser sluit blijft het probleem. Vreemd?!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Blijkbaar roep je ergens teveel je session_start() aan. Ik had hier hetzelfde probleem, bleek er ergens in een of ander filetje een session_start te staan die er niet moest staan. Lokaal ging het wel goed, online kreeg ik problemen...

Ook Knor is aangestoken met het ligfietsvirus!


Verwijderd

Topicstarter
Dat is het helaas niet. Inmiddels ben ik een klein stukje verder. Op php.net staat een reply van iemand die zegt dat je achter het url "? SID" moet vermelden, omdat ie anders de sessie kwijtraakt nadat ie voor het eerst is aangemaakt. Dit lijkt te werken, als ik aan het einde van mijn code in header(location: "http://url?" . SID) tik, gaat het goed. Maar dit vind ik nogal raar...

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Geen idee hoe je je sessies vult/ophaalt..

Maar als ik gewoon een paar pagina's maak met bovenin session_start() en $_SESSION['var']="val" en echo $_SESSION['var'] in de volgende pagina doet ie het prima...

Probeer eens zon simpel voorbeeld? (dus met superglobals en niet session_register enzo)

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Doorgeven van sessies gaat automatisch als --trans-sid o.i.d meegecompileerd is. (Automatisch bij nieuwere php versies)

Daarnaast kan ik je nog aanraden om ipv een variabele sessionAuthorized in de cookie te stoppen, een object te maken met daarin alle eigenschappen van de gebruiker:

$MySession->logedin = true
$MySession->username = "blaat"
enz.

En daarna: session_register('$MySession);

Vervolgens kan je die info weer opvragen met:
$MySession->logedin

[ Voor 0% gewijzigd door maartenvdv737 op 30-10-2002 10:08 . Reden: typo ]

Ik blijf er iig vrij nuchter onder....


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

euh nee. session_register heeft een string (variabele-naam) als argument, niet de variabele zelf.

Overigens wordt in de manual duidelijk aangeraden gewoon met de array $_SESSION te werken ipv met de session_* functies
Caution
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister().

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
drm schreef op 30 oktober 2002 @ 10:14:

Overigens wordt in de manual duidelijk aangeraden gewoon met de array $_SESSION te werken ipv met de session_* functies
Volgens mij staat er dat ALS je met het $_SESSION array werkt je NIET session_register() enzo moet gebruiken.

Ik denk dat het te maken heeft met de trans-sid instellingen inderdaad. Hoewel het volgens PHPinfo() gewoon aanstaat...
Pagina: 1