Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Formulier invullen over meerdere pagina's.

Pagina: 1
Acties:

Onderwerpen


  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
Ik heb de volgende vraag, die ik zo goed mogelijk ga proberen uit te leggen, ik hoop dat dit lukt:

Ik ga een iphone app maken die een formulier invult, en vervolgens weg post. Dit opzich is al een hele klus. Het probleem is nu dat het formulier dat de app moet invullen, verspreid staat over meerdere pagina's.

Stap 1:
-Naam
-Postcode
-Huisnummer
Button "Naar de volgende stap"

Stap 2:
-Telefoonnummer
-Leeftijd.
Button "Verstuur formulier."

Na een tijdje te googlen kwam ik erachter dat dit met Objective-C een kut werk is, om een formulier in te vullen, naar de volgende pagina gaan, en dat formulier ook in te vullen.

Nu dacht ik, waarom maak ik zelf geen php script, waar alle velden opstaan, op één pagina, die het vervolgens voor mij invult over de meerdere pagina's in het andere formulier. Ook met PHP snap ik dat dit niet makkelijk is, en heb ik geen idee hoe ik dit moet doen. Want als er een foutcode terugkomt (Bijv. postcode en huisnummer komen niet overeen), dan moet php ook stoppen met het formulier invullen, en een foutcode uitspugen op de pagina, zodat de app dit weer kan verwerken.

Hoe kan ik dit het beste aanpakken?

And that's how one and one makes three.


  • SvMp
  • Registratie: September 2000
  • Niet online
Dit is wel heel basic.

Begrijp ik nou goed dat je een App op een iPhone (IOS-app dus) wilt maken dat een formulier naar een webserver stuurt? Het lijkt mij handig om wel cliënt-side de boel te valideren, zodat een foute invoer gelijk resulteert in feedback aan de gebruiker.

Server-side valideren moet óók. Als je server-side kiest voor PHP, dan is dat helemaal niet zo moeilijk. Je stuurt een code terug, 0=goed, 1=fout, je kunt ook "ok"/"error" doen, wat jij wil. Als je al cliënt-side valideert (wat m.i. een must is in dit geval), hoeft een PHP-script geen details over de fout terug te sturen. Goed of fout is al voldoende, de server-side validatie dient dan enkel om valse invoer tegen te houden. Als je het echt mooi wilt doen, stuur je XML terug. Google eens op REST en PHP.

[ Voor 3% gewijzigd door SvMp op 13-03-2011 14:27 ]


  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
SvMp schreef op zondag 13 maart 2011 @ 14:26:
Dit is wel heel basic.

Begrijp ik nou goed dat je een App op een iPhone (IOS-app dus) wilt maken dat een formulier naar een webserver stuurt? Het lijkt mij handig om wel cliënt-side de boel te valideren, zodat een foute invoer gelijk resulteert in feedback aan de gebruiker.

Server-side valideren moet óók. Als je server-side kiest voor PHP, dan is dat helemaal niet zo moeilijk. Je stuurt een code terug, 0=goed, 1=fout, je kunt ook "ok"/"error" doen, wat jij wil. Als je al cliënt-side valideert (wat m.i. een must is in dit geval), hoeft een PHP-script geen details over de fout terug te sturen. Goed of fout is al voldoende, de server-side validatie dient dan enkel om valse invoer tegen te houden. Als je het echt mooi wilt doen, stuur je XML terug. Google eens op REST en PHP.
Ja, ik ga voor een iPhone app. Als client-side valideren mogelijk is, was ik hier zeker voor gegaan, maar de database van postcodes en huisnummers ga ik niet in mijn iPhone app stoppen, natuurlijk. Dit MOET dus server-side gebeuren. Mijn vraag is vooral hoe ik een formulier post over meerdere pagina's, en de pagina die terugkeert uitlees in php.

And that's how one and one makes three.


  • EvilWhiteDragon
  • Registratie: Februari 2003
  • Laatst online: 27-11 10:01
Nu snap ik dat je heel leuk een iPhone app wil maken, maar is dit niet veel makkelijker/minstens net zo makkelijk gewoon in HTML/PHP te doen? Dan hoef je alleen met wat input type='hidden'te spelen voor het doorschuiven van informatie, of sessies.
Als je je HTML en CSS vervolgens nog optimaliseerd voor kleine schermen hoeft dit m.i. niet af te doen in gebruikservaring en je ding is direct voor iOS, Android, Windows Phone/Mobile en zo verder beschikbaar.

LinkedIn
BlackIntel


  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
De bedoeling is dat het een iPhone app word. Met het formulier kun je namelijk dingen bestellen. En het formulier wat ik wil laten invullen is van mijn leverancier. Vandaar dat mijn vraag blijft:

Hoe laat ik php een formulier op een andere website invullen, dat over meerdere pagina's verspreid staat? En als er foutmeldingen komen, hoe php die dan oppikt, en uitspuugd op de site.

And that's how one and one makes three.


  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 25-11 15:13
Het makkelijkste lijkt mij om de website aan te pakken. Desnoods maak je een nieuwe pagina die alleen door je app gebruikt gaat worden. Gewoon dezelfde pagina verbonden met dezelfde database, alleen dan alles op één pagina. Maakt het een stuk makkelijker.

People who live in glass houses shouldn't throw stones.


  • SvMp
  • Registratie: September 2000
  • Niet online
Blue-cola schreef op zondag 13 maart 2011 @ 14:31:
[...]

Ja, ik ga voor een iPhone app. Als client-side valideren mogelijk is, was ik hier zeker voor gegaan, maar de database van postcodes en huisnummers ga ik niet in mijn iPhone app stoppen, natuurlijk. Dit MOET dus server-side gebeuren. Mijn vraag is vooral hoe ik een formulier post over meerdere pagina's, en de pagina die terugkeert uitlees in php.
Het is niet "of" maar altijd "en". Je moet altijd een volledige validatie doen aan de server kant, los van het wel of niet hebben van een postcodedatabase, omdat je nooit 100% zeker weet dat de invoer vanuit jouw app komt. In PHP geldt de gouden regel dat alle inkomende data (GET, POST en COOKIE) als onbetrouwbaar moet worden beschouwd.

Postcode en huisnummer valideren kan voor een groot deel op de cliënt. Postcode heeft altijd dezelfde eigenschappen.
Als je op de server een postcode-database hebt, dan kun je die inderdaad gebruiken. Zorg er wel voor dat deze up-to-date is, en volgens mij kost dat wel wat, anders kun je dat beter achterwege laten.


@Werner: Kan inderdaad. Ik weet niet in hoeverre je in een iOS-app een webbrowser-component hebt. Als Safari apart geopend moet worden, vind ik het minder mooi dan een formulier in de app zelf. Ik denk dat als je in staat bent om een iOS-app te bouwen, dat een formuliertje schrijven en een POST-request doen ook geen probleem moet zijn.

[ Voor 15% gewijzigd door SvMp op 13-03-2011 15:08 ]


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Saeverix schreef op zondag 13 maart 2011 @ 14:52:
Het makkelijkste lijkt mij om de website aan te pakken. Desnoods maak je een nieuwe pagina die alleen door je app gebruikt gaat worden. Gewoon dezelfde pagina verbonden met dezelfde database, alleen dan alles op één pagina. Maakt het een stuk makkelijker.
Ik gok zo dat de site waarnaar gepost wordt niet van de TS is. Het zal een Just-Eat of vergelijkbaar iets zijn.

Je moet gewoon de gebruiker naar jouw php-site laten posten, en met iets als CURL één voor één de juiste velden POST'en naar de uiteindelijke site. Foutmeldingen die je terugkrijgt zul je uit de HTML moeten zien te peuteren en deze vervolgens weer doorgeven aan jouw PHP-pagina.

Dus, semi-usecase:
code:
1
2
3
4
5
6
7
Vraag invoer gebruiker op
Post benodigde velden naar pagina 1 op website
Vraag foutmeldingen op, indien aanwezig, toon deze en stop use case
Post benodigde velden naar pagina 2 op website
Vraag foutmeldingen op, indien aanwezig, toon deze en stop use case
...?
Profit!

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 22:29

AW_Bos

Liefhebber van nostalgie... 🕰️

Dan blijft alleen dat dit niet de nette weg is. De externe website die je aanroept hoeft maar iets in zijn applicatie of HTML-code aan te passen en je App zal niet meer werken.

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • SvMp
  • Registratie: September 2000
  • Niet online
AW_Bos schreef op zondag 13 maart 2011 @ 15:27:
Dan blijft alleen dat dit niet de nette weg is. De externe website die je aanroept hoeft maar iets in zijn applicatie of HTML-code aan te passen en je App zal niet meer werken.
Daarom bieden sommige websites webservices aan. Als die niet aangeboden worden, houdt het wat mij betreft op.

  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
CodeCaster schreef op zondag 13 maart 2011 @ 15:10:
[...]

Ik gok zo dat de site waarnaar gepost wordt niet van de TS is. Het zal een Just-Eat of vergelijkbaar iets zijn.

Je moet gewoon de gebruiker naar jouw php-site laten posten, en met iets als CURL één voor één de juiste velden POST'en naar de uiteindelijke site. Foutmeldingen die je terugkrijgt zul je uit de HTML moeten zien te peuteren en deze vervolgens weer doorgeven aan jouw PHP-pagina.

Dus, semi-usecase:
code:
1
2
3
4
5
6
7
Vraag invoer gebruiker op
Post benodigde velden naar pagina 1 op website
Vraag foutmeldingen op, indien aanwezig, toon deze en stop use case
Post benodigde velden naar pagina 2 op website
Vraag foutmeldingen op, indien aanwezig, toon deze en stop use case
...?
Profit!
Jij snapt het. Zoals ik al zei, was de site van de leverancier. Ik weet van de leverancier dat het formulier nooit zal veranderen. Het formulier is bedoeld voor dit soort doeleinden. En nu is mijn vraag dus: posten over 1 pagina, dat lukt prima, maar hoe doe ik dat over 2 pagina's die met elkaar verbonden zijn? Snapt cURL dat? Als hij op een button drukt, dat er dan nieuwe velden tevoorschijn komen? En met welke functie haal ik de foutcodes uit de html?

And that's how one and one makes three.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:48

MueR

Admin Devschuur® & Discord

is niet lief

Heb je al eens wat geprobeerd? Heb je al eens naar cURL's mogelijkheden gekeken?

Anyone who gets in between me and my morning coffee should be insecure.


  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
MueR schreef op maandag 14 maart 2011 @ 12:50:
Heb je al eens wat geprobeerd? Heb je al eens naar cURL's mogelijkheden gekeken?
Ik heb nu vrij veel tut's gelezen, en snap cURL al een stuk beter. Alleen staat er nergens of het volgende mogelijk is:

Veld A
Veld B
Button

Zodra je veld A en B hebt ingevuld, en je drukt op de button, komt het volgende tevoorschijn:

Veld C
Veld D
Button.

Kan ik dit dan invullen door het stukje code:

code:
1
2
curl_setopt($ch, CURLOPT_POSTFIELDS, "A=" .$A."&B=".$B"");  
curl_setopt($ch, CURLOPT_POSTFIELDS, "C=" .$C."&D=".$D"");

And that's how one and one makes three.


  • fsve
  • Registratie: November 2006
  • Laatst online: 17-11 20:13
Waarom zou je het überhaupt over 2 pagina's willen verdelen? Zoals je zelf aan geeft zijn dit je vragen:
Stap 1:
-Naam
-Postcode
-Huisnummer
Button "Naar de volgende stap"

Stap 2:
-Telefoonnummer
-Leeftijd.
Button "Verstuur formulier."
Dit kan toch prima op 1 pagina onder elkaar?

Be reasonable.... do it my way


  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 25-11 15:13
SvMp schreef op zondag 13 maart 2011 @ 15:05:
[...]
@Werner: Kan inderdaad. Ik weet niet in hoeverre je in een iOS-app een webbrowser-component hebt. Als Safari apart geopend moet worden, vind ik het minder mooi dan een formulier in de app zelf. Ik denk dat als je in staat bent om een iOS-app te bouwen, dat een formuliertje schrijven en een POST-request doen ook geen probleem moet zijn.
Ik zat nog niet eens te denken aan het weergeven van die pagina in de app zelf. Ik had meer de gedachte om diezelfde stappen onder elkaar te zetten op één pagina in plaats van meerdere pagina's zoals nu het geval is.
Op die manier kun je gemakkelijk alles invoeren met één POST actie zoals de TS graag wil.

Daarom zou ik dus eerst de website aanpassen, en vervolgens verder gaan met de app...

People who live in glass houses shouldn't throw stones.


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

@de twee hierboven: de site die TS probeert aan te spreken is niet van de TS zelf, dus niet aan te passen.
Blue-cola schreef op maandag 14 maart 2011 @ 14:24:
[...]

Alleen staat er nergens of het volgende mogelijk is:
Waarom is dat denk je? Waarom moet het mechanisme om twee pagina's achter elkaar op te vragen expliciet beschreven staan? En waarom dan niet voor drie, vijf, of oneindig veel?

Je kunt toch wel eerst de POST-velden voor de eerste pagina vullen, het verzoek versturen, het antwoord uitlezen en vervolgens de velden voor de tweede pagina versturen?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
fsve schreef op maandag 14 maart 2011 @ 14:32:
Waarom zou je het überhaupt over 2 pagina's willen verdelen? Zoals je zelf aan geeft zijn dit je vragen:

[...]

Dit kan toch prima op 1 pagina onder elkaar?
Als je het topic en de reacties dieper inleest zie je dat dit formulier van mijn leverancier is, en dat ik dus één pagina wil maken met al deze gegevens.
CodeCaster schreef op maandag 14 maart 2011 @ 15:10:
@de twee hierboven: de site die TS probeert aan te spreken is niet van de TS zelf, dus niet aan te passen.

[...]

Waarom is dat denk je? Waarom moet het mechanisme om twee pagina's achter elkaar op te vragen expliciet beschreven staan? En waarom dan niet voor drie, vijf, of oneindig veel?

Je kunt toch wel eerst de POST-velden voor de eerste pagina vullen, het verzoek versturen, het antwoord uitlezen en vervolgens de velden voor de tweede pagina versturen?
Correct.

Ja, niet per see 2, maar het is wel handig als er ergens beschreven staat hoe je meerdere pagina's achter elkaar in kunt vullen. Werkt dat, wat ik had staan?

And that's how one and one makes three.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Doe eens gek en probeer eens wat voordat je vraagt? ;)

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

Je eigen tweaker.me redirect

Over mij

Pagina: 1