Ga naar inhoud

$_SESSION doet vreemd.


Aanbevolen berichten

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
Link naar reactie
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
Link naar reactie
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]
Link naar reactie
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
Link naar reactie
[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]
Link naar reactie
Hmmm bedankt voor de tips. Ik heb het 'opgelost' (voor zover je dit een oplossing kunt noemen) Heb in default.php botweg een extra case toegevoegd en roep default.php aan ipv index.php. Slordig... maar doet niks af aan de functionaliteit :oops: Zal morgen nog eens even kijken naar de opmerking van bill. Toch bedankt allemaal! Groet, Marcel
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...