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.
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 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.
Duidelijk, dank je!
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.
@Randy, mogelijk bevat $_POST['data'] HTML, JavaScript of andere ongein. Los daarvan, dit is USER DATA, deze dien je NOOIT te vertrouwen. Daartoe dien je de mogelijk speciale betekenis van deze data binnen de HTML-context onschadelijk te maken door middel van output escaping. Denk hierbij aan htmlentities() of (wellicht beter) htmlspecialchars().
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:
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]
@thomas, k vertrouw nooit user input, was alleen als voorbeeld bedoeld dat het ook zonder sessies kan.
Verder vind ik het wel een mooie toevoeging van je aan dit topic ^^
@Ozzie
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.