Toon posts:

Onmogelijk om form data op te slaan met gebruik van SESSION

Pagina: 1
Acties:

Anoniem: 321378

Topicstarter
Hallo,

Ik heb een formulier gemaakt waarbij de gebruiker een aantal stappen moet doorlopen voordat de gegevens van het formulier verzonden worden naar de database (mysql).

Het gebruik van de verschillende stappen in het formulier is essentieel in deze applicatie en ik maak het gebruik van stappen mogelijk door gebruik te maken van SESSION.

Als alle stappen in het formulier juist worden doorlopen dan wordt de data succesvol naar de database verzonden. Het kan voor komen dat de gebruiker na een bepaalde stap in het formulier toch iets wil wijzigen in de voorgaande stap. Hier heb ik een button voor aangemaakt met een javascript link:

code:
1
<a href="javascript:history.go(-1);"><img/></a>


Als ik nu op de button druk en terug ga naar de voorgaande stap in het formulier, zijn alle gegevens die al ingevuld waren verdwenen en moet de gebruiker helemaal opnieuw beginnen met het invullen van het formulier. Als ik de sessies uit zet dan lukt dit zonder problemen maar met sessies aan gaat het mis.

Is er een manier om ervoor te zorgen dat ik terug kan gaan naar een voorgaande stap in formulier zonder de al ingevoerde data kwijt te raken met het gebruik van SESSION?

Mocht er behoefte zijn aan een inzage op de code, let me know!

PS ik heb zelf ook een aantal mogelijkheden uitgeprobeerd waarvan alle niet gelukt/van toepassing zijn binnen mijn code:
bijv:
code:
1
2
<input type="text" name="someInput" value="<?php print $_SESSION['someInput']; ?>"/>
session_cache_limiter(private_no_expire)


Ik hoop dat jullie me kunnen helpen!

Gr

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01-06 22:36

MueR

Moderator Devschuur®

is niet lief

Start je de sessie wel op elke pagina? Wat staat er in $_SESSION op elke pagina? Hoe staat je session lifetime?

Daarbij slaan browsers tegenwoordig page states op, waardoor het best wel eens kan zijn dat hij de pagina gewoon uit z'n geheugen laadt, inclusief alle form values. Waarom heb je specifiek voor die (vrij foutgevoelige) javascript methode gekozen? Waarom geef je mensen niet gewoon een knop waarmee ze echt naar het vorige formulier worden gestuurd?

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!


Anoniem: 321378

Topicstarter
Volgens mij worden de page states door het gebruik van $_SESSION niet meer opgeslagen. Als ik namelijk session_start() uit mijn script verwijder dan werkt de javascript methode prima. Form values worden dan gewoon weergegeven als er op de knop wordt gedrukt. Ik weet niet of dat logisch is? Ik kon eigenlijk geen andere methode vinden voor een back button. Het formulier wordt op één pagina doorlopen door middel van :

code:
1
2
3
4
if(isset($_GET['do'])){
                    if($_GET['do'] == "firstpageform") {   }
                    if($_GET['do'] == "secondpageform") {   }
                    etc


Sessies staan ook eigenlijk constant open, ik heb nergens een destroy of end. Ik wil best de code in het forum zetten maar ik weet niet of jullie er wijs van worden want het is nogal onoverzichtelijk.

Gr.

  • RobIII
  • Registratie: December 2001
  • Laatst online: 10:20

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Anoniem: 321378 schreef op vrijdag 09 september 2011 @ 13:06:
Ik wil best de code in het forum zetten maar ik weet niet of jullie er wijs van worden want het is nogal onoverzichtelijk.
Dan maak je het overzichtelijk door je (o.a.) te beperken tot relevante(!) stukken code, fatsoenlijke indenting, leesbare variabelen en een duidelijk verhaal eromheen ;) Dat is een testcase. Gewoon je code copy/pasten en dumpen hier heeft geen nut inderdaad.

Als je een degelijke testcase hebt kun je die voor jezelf namelijk ook gebruiken om te verifiëren of je conclusie(s) kloppen en om in te "rommelen" om te zien wat een (mogelijke) oplossing kan zijn.

Verder ben ik vooral eens benieuwd naar de (exacte) HTTP headers.

[Voor 22% gewijzigd door RobIII op 09-09-2011 13:14]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 17-04 12:13
Zo te horen laat je PHP niet de form velden invullen, maar hoop je dat de browser dat doet.
In dat geval misschien iets van:
PHP:
1
2
3
<?php
header("Cache-Control: max-age=3600, must-revalidate"); 
?>

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


Anoniem: 321378

Topicstarter
Ik was aan het werken aan een uitgebreide beschrijving maar djexplo heeft DE oplossing gegeven. Nu werkt het! Met gebruik van $_SESSION en de gebruiker kan door middel van de javascript knop terug met het behoud van de ingevulde data. Hartelijk dank. Zou bijna denken wat is het addertje onder het gras?

Gr

Anoniem: 321378

Topicstarter
*nee, dit is niet de bedoeling*

[Voor 197% gewijzigd door MueR op 09-09-2011 13:46]


  • trinite_t
  • Registratie: Maart 2003
  • Nu online
En als een browser de gegevens niet zelf terug zet krijgt de gebruiker een leeg formulier te zien. Niet "the way to go", volgens mij, om je afhankelijk te maken van browsers.

Eigenlijk moet je de gegevens bij een terug actie zelf in je html invullen.

The easiest way to solve a problem is just to solve it.

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee