[PHP] Waarde bewaren in sessie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 15:51
Ik probeer om een waarde te bewaren in een sessie om die vervolgens in een andere pagina (iframe) weer om te zetten naar een variabele. Ik heb amper ervaring met PHP en hoop dat iemand mij een zetje in de juiste richting wil geven.

Wat ik doe:
Stap 1: Via een form een waarde (genaamd refresh) naar een pagina (pagina 2) submitten
Stap 2: Op de target pagina (pagina 2) haal ik deze waarde op en stop die in een sessie
code:
1
$_SESSION['refresh'] = $_POST['refresh'];

Stap 3: Pagina 2 bevat tevens een iframe waar pagina 3 inzit. Op pagina 3 probeer ik de waarde die ik in de sessie heb opgeslagen weer uit te lezen.
code:
1
$var_refresh = $_SESSION['refresh'];


Dat laatste gaat dus niet goed (pagina 3, de Iframe). De $var_refresh is leeg.
Kan iemand mij vertellen wat ik fout doe?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Standaard debugging tips: bekijk de inhoud van $_POST en $_SESSION dmv print_r(), of specifieker, bekijk gewoon var_dump($_POST['refresh']) etc.

Let er ook op dat je niet steeds die assignment van die sessie var probeert te doen, want den help je zelf je sessie var omzeep als $_POST['refresh'] niet bestaat.

[ Voor 36% gewijzigd door Voutloos op 08-02-2008 08:25 ]

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

session_start() geroepen aan het begin van het script? (in principe moet het alleen in pagina 3, omdat je daar alleen session ophaald, maar ik heb het meestal standaard in mijn config die ik in elke pagina require zitten)

[ Voor 60% gewijzigd door Verwijderd op 08-02-2008 08:31 ]


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Hoe verhoudt de pagina van het form zich tov de pagina in het iframe? Vallen ze in hetzelfde (sub)domein?

Acties:
  • 0 Henk 'm!

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 15:51
Bedankt allemaal.

code:
1
$var_refresh = $_POST['refresh'];

Als ik $var_refresh echo op pagina 2 dan laat hij braaf de waarde zien, dus de post is nmi goed, toch?

session_start() had ik niet aangeroepen, op geen van de pagina`s. Nadat ik deze heb toegevoegd op de iframe pagina (3) werkt het nog steeds niet.

Alle drie de pagina`s staan op dezelfde webserver en vallen binnen hetzelfde domein

De waarde opslaan in een cookie gaat wel goed maar ik zou natuurlijk graag willen weten waar het fout gaat, anders leer ik het nooit :)

Ik ga met behulp van de php.net documentatie nog even het gehele process doorlopen, ik laat wel weten als ik er echt niet meer uitkom. Nogmaals bedankt

Acties:
  • 0 Henk 'm!

Verwijderd

Simkin schreef op vrijdag 08 februari 2008 @ 09:03:
Bedankt allemaal.

code:
1
$var_refresh = $_POST['refresh'];

Als ik $var_refresh echo op pagina 2 dan laat hij braaf de waarde zien, dus de post is nmi goed, toch?

session_start() had ik niet aangeroepen, op geen van de pagina`s. Nadat ik deze heb toegevoegd op de iframe pagina (3) werkt het nog steeds niet.
Laad session_start() eens op iedere pagina. Dus ook op de pagina waar je de sessie variabele opvult.
(het moet in de meeste gevallen, ook heel van boven in de pagina's staan)

[ Voor 6% gewijzigd door Verwijderd op 08-02-2008 09:13 . Reden: One of many typo's ]


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Volgens mij snap je dan het hele punt aan session_start() niet helemaal als je hem maar op 1 pagina aanroept, of zelfs op geen...

Session_start() zorgt er voor:
• dat er een cookie naar je browser gepompt wordt met een PHPSESSID (dit gaat via een HTTP header, vandaar dat je session_start() moet aanroepen VOOR wát dan ook aan echo's of print's)
• dat eventueel al bestaande sessie variabelen ge-unserialized worden naar $_SESSION
• dat er een shutdown handler geregistreerd wordt die alle $_SESSION variabelen automagisch wegschrijft naar de sessie file op het moment dat je script klaar is.
• dat er een sessie weggepleurd wordt als ie verlopen is.


Snap je nu waarom session_start() best essentieel is? op *elke* pagina? :P

[ Voor 8% gewijzigd door SchizoDuckie op 08-02-2008 09:12 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

Verwijderd

Idd, als je uberhaupt die $_SESSION global wilt gebruiken moet je session_start aanroepen, anders gaat het volgens mij niet werken.

Nu weet ik niet wat je met die var $var_refresh gaat doen, maar je controleert de waarde in elk geval niet, wat eventueel een potential vulnerability in je systeem is.
In het geval dat het een checkbox waarde is of iets dergelijks, dan zou ik zoiezo er een bool van maken bijvoorbeeld.

PHP:
1
2
3
4
session_start();
$_SESSION["refresh"]=($_POST["refresh"]=="on");
// of in het geval van een int
//$_SESSION["refresh"]=intval($_POST["refresh"]);

Acties:
  • 0 Henk 'm!

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 15:51
Nogmaals bedankt allemaal, ik heb wat beter de documentatie doorgelezen nav jullie commentaar en zie idd waar ik de fout in ben gegaan, zeer leerzaam.
Ik moet er idd nog een boolian van maken want veilig is het nog niet.
Pagina: 1