Sessie gebruiken in formulier
Ik heb een formulier en php script(je) gemaakt die een simpele berekening doet: waarde 1 x waarde 2 / 1000.
Waarde 1 en waarde 2 zijn invoervelden en wanneer je op submit drukt wordt middels method="POST" de berekening gedaan.
Werkt prima, maar ik dacht in eerste instantie dat ik een sessie zou moeten gebruiken om de ingetypte waardes (tijdelijk) op te slaan. Maar dat blijkt niet te hoeven.
Ik vraag me af waarom? De pagina wordt immers ververst na het drukken op submit.
Guido
opzet is in principe netter (zorgt voor een betere scheiding van acties en voorkomt "dubbelposten"), maar vereist wel dat je deze data moet opslaan in een sessie om deze nog verder te onthouden aan de gebruikerskant.
De POST data is alleen beschikbaar aan de serverkant, en die kun je weer (direct) terugsturen in de response daarop via het weergeven van $_POST data. Daarna is deze informatie niet meer beschikbaar. Daar komt nog bij dat er meestal een tussenstap aan de serverkant zit waar je niets van merkt waarin het formulier wordt verwerkt. Die Direct na het drukken op submit wordt de uitkomst onder het formulier getoond (via een $_post / echo). Formulier zelf is dan weer leeg, maar dat komt dus doordat ik geen sessie gebruik.
Guido
Bij de inputs kan je het value attribute hiervoor gebruiken.
Gewijzigd op 18/01/2016 10:37:46 door Randy vsf
Dan heb je nog te maken met de character encoding van je data. Escaping van data kan alleen veilig gebeuren als je hierbij de juiste (en bij voorkeur overal dezelfde) character encoding gebruikt. Er vanuitgaande dat je overal UTF-8 gebruikt zou dit een veilige variant zijn:
Code (php)
1
<input type="text" name="data" value="<?php echo htmlspecialchars($_POST['data'], ENT_QUOTES, 'UTF-8') ?>">
Omdat dit elke keer nogal een mondvol is zou je hier een functie voor kunnen introduceren:
Waarmee bovenstaande code gereduceerd wordt tot simpelweg:
@Thomas:
In een objectgeoriënteerde omgeving zie je dergelijke globale functies ook wel eens ondergebracht worden in een object, bijv. een Tools object. Dan krijg je bijvoorbeeld:
Offtopic:
Ben jij hier een voorstander van? Of juist niet? Of hangt het er vanaf of je procedureel of OOP programmeert?
Gewijzigd op 18/01/2016 15:03:24 door Ozzie PHP
Verder vind ik het wel een mooie toevoeging van je aan dit topic ^^
Zelf heb ik voor mijn systeempje een Helper class met allerhande functies die niet echt ergens anders ondergebracht kunnen worden. Op het moment dat je veel (soortgelijke) functionaliteit hebt zou je deze kunnen bundelen in een aparte class, maar tot die tijd kun je wat mij betreft prima volstaan met één helper class met static methoden, al was het maar om de functienamen uit de globale scope te halen zodat deze niet conflicteren met code van "third parties".
Ik had hier gemakshalve het object georiënteerde aspect even achterwege gelaten om het voorbeeld niet verder te compliceren dan nodig, maar het zou wel mijn voorkeur hebben ja. Hangt natuurlijk ook af van de omvang van je applicatie, als je een kleine simpele website hebt is een hybride of zelfs procedurele vorm ook niet zo'n probleem. OOP is een middel, geen doel.
/offtopic
Allright, thanks! ;-)