[php] zetten van sessie variabelen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Ik zou graag jullie mening willen weten over het volgende.

Ik heb het probleem van dit topic : [rml][ php] sessies en serializen[/rml] gemeld als bug bij php.net. Even in het kort (dat je niet dat hele topic hoeft door te lezen (dit is dus ook geen kick!) ik heb een functie gecreeerd die een url samen met de waardes van $_GET, $_POST en $_SESSION geserialized opslaat in een database, zodat later naar die pagina teruggekeerd kan worden met dezelfde omstandigheden. probleem was echter dat die $_SESSION (na het ophalen uit de db) raar gedrag vertoond. In eerste instantie blijken de waardes er goed in te zitten, maar op het moment dat je ergens op klikt zie je op de volgende pagina dat ze er weer uit zijn.

Maargoed, zoals ik al zei, dit is geen kick, ik wil alleen jullie mening graag over het zetten van sessie waarden, want daar lig ik nu mee overhoop met die gasten van php.net

Eerst krijg ik als antwoord dat ik $_SESSION niet moet serializen: prima, doe ik dat niet, maar gebruik ik telkens een tijdelijke array als doorgeef luik. Krijg ik vervolgens het antwoord dat ik niet zomaar waardes aan superglobals kan geven.
[19 May 1:56am CDT] derick@php.net
Superglobals don't work like this. You can not overwrite them by
assigning them. Not a bug -> bogus
Ik moet ze gelijk geven wat betreft $_POST en $_GET - dat is natuurlijk ook dirty om te zeggen $_POST['key'] = $value; Dat vond ik zelf ook al - dus ben best bereid daar een andere oplossing voor te vinden (en dat is ook mogelijk). Maar wat $_SESSION betreft gaat dat verhaal toch niet op? Dan zou je dus niets meer in of uit je sessie kunnen halen? Wat ik doe is niets meer dan unset($_SESSION); en vervolgens $_SESSION = $new_array; Dat is wat je normaal (PHP < 4.1)met session_register() en session_unregister() gedaan zou hebben...
Ik zou ook niet weten hoe ik dit anders op moet lossen. Ik moet gewoon op een bepaald punt waardes uit m'n sessie verwijderen en er nieuwe in stoppen. Hoe wordt ik dan geacht dit te doen??

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

GEen idee waarom dit niet in het verlengde van de andere topic kon, maar goed:
Ik zou ook niet weten hoe ik dit anders op moet lossen. Ik moet gewoon op een bepaald punt waardes uit m'n sessie verwijderen en er nieuwe in stoppen. Hoe wordt ik dan geacht dit te doen??
Simpelweg een routine schrijven die specifieke waarden naar unset overschrijft of toevoegd... ik snap het probleem niet helemaal?

Anders kun je altijd nog zoiets doen:

$SESSION_NAAR_DB = serialize ($_SESSION['data']);
$_SESSION['data'] = unserialize ($SESSION_UIT_DB);

Het idee is dat je niet werkt met de complete $_SESSION superglobal, maar met de CONTENT daarvan.

Acties:
  • 0 Henk 'm!

Verwijderd

ik snap het niet helemaal..
maar als je sessies op slaat in je DB, en dan later terug haalt, is de sessie verlopen waardoor die niet meer klopt.. toch?

of zie ik et een btje verkeerd?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

Het gaat niet om de sessie zelf, maar om de content van de sessie :) Die kun je makkelijk opslaan en later weer terugplaatsen natuurlijk. Om niet door alle variabelen enzo heen te hoeven lopen kun je een sessie-array serializen en opslaan en later weer unserializen en weer terugplaatsen in de sessie.