[PHP] Form variabelen 2x doorsturen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het betreft hier het bestelformulier van een wijnwebsite tijdelijk op http://www.schravencomputers.nl/vinhos/bestellen.php

Als de gebruiker wijnen heeft opgegeven en enkele verplichte velden heeft ingevoerd dan wordt dynamisch bij submit een controlepagina gegenereerd (bestellen2.php) met behulp van de waarden uit het ingevulde formulier (bestellen.php). Echter bij de verzendbutton op de controlepagina moeten de variabele d.m.v. een nog te schrijven mail script nógmaals worden aangeroepen om de bestelling door te emailen naar de klant en mij, waarna een bedankt pagina moet komen (bestellen3.php).

Heeft iemand tips om dit voor elkaar te krijgen?
-gegevens meezenden in url (nogal slordig)...
-form gegevens in cookie opslaan...
-form gegevens in database zetten...
-hidden form op controlepagina zodat ze nógmaals aangeroepen kunnen worden?

Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 20:52
Misschien in een sessie opslaan?

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Waarom doe je dat niet gewoon in je afhandelpagina waar je alle formvelden tot je beschikking hebt? iets te snel...
Je kunt het idd met de sessie doen, niet vergeten deze leeg te maken aan het einde van de rit, anders worden bestelling vaker dan 1x gesubmit als een gebruiker van zn Back toets gebruik maakt.

[ Voor 53% gewijzigd door bigbeng op 11-11-2005 15:19 ]


Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

persoonlijk zou ik de voorkeur geven aan de hidden form.
je kan dit mss zelfs doen met read-only textboxes

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wow, snelle replies!

is het mogelijk om het gegenereerde deel op de controlepagina als textfile of iets dergelijks op te slaan, zodat dit deel in zijn geheel weer in het email script kan worden aangeroepen?

Acties:
  • 0 Henk 'm!

  • Thunderboy446
  • Registratie: November 2001
  • Laatst online: 09-12-2015
Ik zou voor een hidden form gaan.
Sessie is natuurlijk ook heel goe mogelijk

Je zou het ook in een bestand opkunnen slaan op je server en dit dan weer gebruiken voor het mailscript, maar ik denk dat dit beetje omslachtig is om te maken

Acties:
  • 0 Henk 'm!

  • _Sunnyboy_
  • Registratie: Januari 2003
  • Laatst online: 19-09 14:58

_Sunnyboy_

Mooooooooooooooooo!

Het gebruik van een hidden form is een security risico. Iedereen die wil kan dan namelijk op z'n eigen site een formuliertje maken en dit laten submitten naar bestellen3.php, en dan omzeilen ze dus je validatie in bestellen2.php.

Ik zou daarom de gevalideerde form values in een bestellen2.php in de sessie opslaan. In bestellen3.php gebruik je deze waarden dan, en gooi je vervolgens de sessie leeg. Kunnen ze ook niet per ongeluk 2x bestellen.

[ Voor 22% gewijzigd door _Sunnyboy_ op 11-11-2005 16:13 ]

Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
_Sunnyboy_ schreef op vrijdag 11 november 2005 @ 16:12:
Het gebruik van een hidden form is een security risico. Iedereen die wil kan dan namelijk op z'n eigen site een formuliertje maken en dit laten submitten naar bestellen3.php, en dan omzeilen ze dus je validatie in bestellen2.php.

Ik zou daarom de gevalideerde form values in een bestellen2.php in de sessie opslaan. In bestellen3.php gebruik je deze waarden dan, en gooi je vervolgens de sessie leeg. Kunnen ze ook niet per ongeluk 2x bestellen.
Je kunt natuurlijk ook je controlestukje even copy-pasten, of in een apart bestand zetten en in beide pagina's includen :)

POST gebruiken lijkt me handiger omdat je niets hoeft op te slaan (en te legen) op een machine. Het wordt gewoon allemaal fijn doorgestuurd. Wil je echter aanpassingen maken tussendoor, dan is een sessie misschien wel handiger.

een database kun je ook nog gebruiken :P

edit:
Beetje offtopic misschien: er worden toch ook weleens databases gebruikt waarin dan de sessiestring ofzo wordt gezet met informatie?

[ Voor 8% gewijzigd door pierre-oord op 12-11-2005 01:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou er in dit geval voor kiezen om de bestelling in de sessie op te slaan. Het gaat maar om een paar artikelen en je wilt de bestelling doormailen.

Acties:
  • 0 Henk 'm!

  • Wim-Bart
  • Registratie: Mei 2004
  • Laatst online: 10-01-2021

Wim-Bart

Zie signature voor een baan.

Een combinatie van sessie en hidden form.

Ik doe meestal het volgende, ik genereer een md5 hash van de datum en tijd op de form pagina. Sla dit op twee plaatsen op, namelijk in een <input type="hidden"> veld van het formulier en de sessie.

Op het controle formulier controleer ik of beide, de $_POST en $_SESSION identiek zijn. Zo ja dan is er geen fout. Daarna gaat de gebruiker verder naar de daadwerkelijke bevestiging en doe ik precies het zelfde.

Als de gebruiker nu kwaad wil en het hidden md5 veldje zelf maakt klopt er niets van en komt ie niet verder. Ik kan me niet bedenken waar het fout zou kunnen gaan, maar misschien ziet iemand anders dat wel.

Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.

Pagina: 1