Vraag & Antwoord

Webprogrammeren & scripting

$_SESSION doet vreemd.

6 antwoorden
  • Hallo, Het probleem is het volgende ik kom op een pagina index.php met een getvar genaamd jobid. Dit ziet er dus als volgt uit: http://blabla/index.php?jobid=PZ-1.20023e4f48fb18443 [code:1:6d679fdeb4] Dit wordt op de volgende manier afgevangen: session_register('acc_jobid','acc_sequence','acc_printjobid'); $_SESSION['acc_jobid'] = $_GET['jobid']; header("Location: default.php"); exit; [/code:1:6d679fdeb4] Het idee is dus dat $_SESSION['acc_jobid'] bekend moet zijn op default.php. Als ik nu (1e keer dat ik op index.php kom) in default.php kom kent hij deze variabelen niet. Als ik nu (zonder scherm te sluiten, dus evt sessie blijft bewaard) nogmaals naar index.php?jobid=sadfsdf ga dan doet hij het wel. Hoe kan dit in default.php ziet het er als volgt uit: [code:1:6d679fdeb4] if(IsSet($_SESSION['acc_jobid'])) { //hier rest code, maar hier komt hij de 1e keer dus niet de 2e en daarop volgende keren wel } [/code:1:6d679fdeb4] Iemand een suggestie? Kan het zijn dat die header sneller is dan het schrijven van een sessie variabele (lijkt met HEEL sterk). Bedankt, Marcel
  • Het probleem komt me idd vaag bekend voor. De reden is waarschijnlijk dat de session ID wordt opgeslagen in een cookie. Omdat deze niet direct geschreven worden wordt de session ID de eerste keer via het adres doorgegeven. (Klopt het tot nu toe?) Kijk even of dit inderdaad het geval is. Zo ja: roep dezelfde sessie nog eens aan met $_GET["sessionid"] oid in default.php indien deze bestaat, anders gewoon uit de cookie uitlezen. Het kan ook zijn dat het laatste automatisch gebeurt en dat je alleen hoeft te controleren of er een session ID via het adres wordt doorgegeven. Succes ermee. - Bas
  • Oke Bas, Naar aanleiding van jouw antwoord ben ik even verder gaan zoeken. Heb nu het volgende ontdekt. 1. Ik sla de sessie waarden in de sessiondata directory op, waar hij het ID laat weet ik niet precies. Zal idd wel een cookie zijn. 2. Dit vond ik op de php pagina: [url] http://www.php.net/manual/en/function.session-write-close.php [/url] [quote:b850fc9955] You MUST use this function before doing redirect to another page with header("Location: ..."); or session variables will NOT be saved! [/quote:b850fc9955] Ok dus ik heb op index.php het volgende gedaan: [code:1:b850fc9955] session_register('acc_jobid','acc_sequence','acc_printjobid'); $_SESSION['acc_jobid'] = $_GET['jobid']; session_write_close(); header("Location: default.php"); exit; [/code:1:b850fc9955] Dit werkt dus nog niet... Stel ik doe dan het volgende header("Location: default.php?PHPSESSID=".session_id()); Dan kent default.php idd de goede sessie waarden maar alle pagina's die door default.php in frames geladen worden beginnen een totaal nieuwe sessie met een nieuw id. Het is eigenlijk geen optie om op deze manier aan alle pagina's PHPSESSID mee te geven omdat het een aanpassing is van een al bestaande applicatie waar dit dus niet mee kan. Nog suggesties? Bedankt, Marcel[/url]
  • Ja, dan wordt het moeilijk... :-? Wat je zou kunnen proberen is je de situatie simuleren waarin het wel werkt, oftewel in default.php controleren of $_SESSION['acc_jobid'] is ingesteld en als het niet het geval is de pagina met een header direct opnieuw laden. Met een beetje geluk telt dit dan als de "tweede keer" die je eerder noemde en kun je de variabele wel aanspreken. Het gevaar is echter dat je in een oneindige loop terecht komt als het niet blijkt te werken, dus eerst even grondig testen. Als dit niet werkt hoor ik het wel, ik heb in ieder geval weer een argument tegen frames gevonden... :roll: - Bas
  • Uit de [url=http://www.php.net/manual/en/function.session-register.php]manual[/url]:[quote:e51b455d0e]If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(),[/quote:e51b455d0e] Misschien dat dat helpt?
  • [quote:a71a6b7948="Mvlstar"]1. Ik sla de sessie waarden in de sessiondata directory op, waar hij het ID laat weet ik niet precies. Zal idd wel een cookie zijn. [/url][/quote:a71a6b7948] Offtopic: Om even snel te kijken wat er allemaal in je cookie zit tik je in je adresbalk het volgende en ram je op enter: [color=blue:a71a6b7948]javascript:alert(unescape(document.cookie))[/color:a71a6b7948]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.