PHP verwerken van formulieren

artikel details Artikel details
In Artikels » PHP
Door BigSmoke
30-01-2008 15:34
Bron
PHP, formulieren, valideren
share Share
Toevoegen aan eKudos Toevoegen aan NUjij Toevoegen aan Technorati Toevoegen aan Del.icio.us facebook E-mail naar een vriend Plaatsen/stemmen op MSN Reporter Blig it! Voeg toe op netjes.be
artikels Soortgelijke artikels
Volledig artikel Cronjobs
Volledig artikel Cheat Sheets
Volledig artikel Mysql Injectie
Volledig artikel Informatie opvragen zonder...
Volledig artikel PHP variabelen en operatoren


Adverteren bij Daisycon



Het verwerken van formulieren in PHP lijkt moeilijker dan het is. Indien je deze kennis beheerst kun je gemakkelijk een interactie uitvoeren met bezoekers. Informatie van de bezoeker opvragen en vervolgens verwerken. Hierover zal deze tutorial gaan.

<?
if(isset($_POST['submit'])){
    print 'Hallo '.$_POST['jenaam'];
}else{
    print '<form method="post" action="">
        Naam: <input type="text" name="jenaam" value="" /><br />
        <input type="submit" name="submit" value="Verzend" />
    </form>';
}
?>

Dit korte voorbeeld stelt je instaat om eerst de naam van de bezoeker te vragen en vervolgens als op de submit knop is gedrukt de naam weer te geven. Merk op dat we in dit script gebruik maken van POST. Je kan ook gegevens van de ene pagina naar de andere sturen door gebruik te maken van GET. Hierbij zal in de form tag het attribuut method niet op post maar op get staan. Alle opvragingen zullen dan ook met $_GET gebeuren in plaats van $_POST.

Zoals je ziet kun je met $_POST de verstuurde gegevens opvragen en verwerken. De syntax is eigenlijk $_METHOD['naamformtag']. (Hetgeen dat tussen enkele quotes staat is dus de naam van je tag waar de bezoeker informatie kan invullen). Als we deze methode gebruiken om formulieren te verwerken zal het formulier enkel zichtbaar zijn als het nog niet eerder werd verzonden. Dit controleren we door na te gaan of de input submit tag werd verzonden met isSet. Deze functie gaat na of hetgeen wat tussen de haakjes staat bestaat en zal als het zo is de naam tonen en zo niet het formulier weergeven. Merk wel op dat we dit script moeten beveiligen voor mogelijke aanvallen (Mysql Injectie). Om dit te doen zullen we rond de opgevraagde gegevens een speciale PHP functies, addslashes zorgen dat quotes als ' en " niet meer voor problemen zorgen.


<?
if(isset($_POST['submit'])){
    print 'Hallo '.addslashes($_POST['jenaam']);
    /*Addslashes werd toegevoegd om problemen met verdere verwerking van gegevens door middel van vb MySQL te vergemakkelijken.*/
}else{
    print '<form method="post" action="">
        Naam: <input type="text" name="jenaam" value="" /><br />
        <input type="submit" name="submit" value="Verzend" />
    </form>';
}
?>

We kunnen er ook voor zorgen dat de bezoeker zijn ingevulde naam pas te zien krijgt als hij daadwerkelijk iets heeft ingevuld. Want nu kan deze zonder iets in te vullen op de submit knop duwen en zal een lege superglobal 'jenaam' worden verzonden.

<?
if(isset($_POST['submit'])){
    $error = '';#var om later te controleren of er fouten zijn.
    if($_POST['jenaam'] == '' || empty($_POST['jenaam'])){#kijken of naam is ingevuld
        $error = 'Je naam werd niet ingevuld!';#naam werd niet ingevuld, gevolg er wordt iets in de $error var geschreven
        #en de naam zal niet worden weergegeven.
    }
    if($error == ''){#als er geen errors zijn
        print 'Hallo '.addslashes($_POST['jenaam']);#toon de naam
    }else{
        print $error;#error gevonden, toon hem
    }
}else{
    print '<form method="post" action="">
        Naam: <input type="text" name="jenaam" value="" /><br />
        <input type="submit" name="submit" value="Verzend" />
    </form>';
}
?>

Nu zal het niet meer mogelijk zijn om een lege naam in te vullen. Het systeem zal hierop controleren en pas het welkomsbericht tonen als er daadwerkelijk iets werd ingevuld.

Je bent nu instaat om formulieren te maken waar bezoeker informatie moeten invullen waarna deze informatie kan worden verwerkt. Je zou deze informatie kunnen opslagen in een database of in een bestand op de server kunnen schrijven om deze later terug te gebruiken.


Er zijn nog geen reacties op dit artikel.
Om op dit artikel te reageren dient u een account aan te maken.


webhog