Form validatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kev Rama

Kev Rama

17/01/2013 21:06:30
Quote Anchor link
Hey mensen,
Ik heb een vraagje. Op een website gebruik ik javascript (jQuery) om een formulier te valideren. Werkt prima. Ik gebruik de ‘Post’ methode om de data met een php bestand te verwerken – so far so good. Alleen, als de URI van het php bestand verstuurd wordt (dus bijv door de link rechtstreeks in de browser in te vullen) dan wordt er een lege e-mail verstuurd (de javascript validatie wordt immers overgeslagen). Dit komt natuurlijk omdat ik in het php bestand geen validatie heb – mijn kennis ervan is echt nagenoeg nul, ik schaam me er ook diep voor. Dit is het script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
    //we need to get our variables first
    
    $email_to =   '[email protected]'; //the address to which the email will be sent
    $email    =   $_POST['email'];
    $name     =   $_POST['name'];
    $tel      =   $_POST['tel'];
    $comments =      $_POST['comments'];      
    
        
    $message = "\nNaam = $name\nE-mailadres = $email \nTelefoonnummer = $tel \nBericht = $comments";
    // Echo "Name: $FirstNam . \tEmail Address: $Email " ;
    
    
 
    /*the $header variable is for the additional headers in the mail function,
     we are asigning 2 values, first one is FROM and the second one is REPLY-TO.
     That way when we want to reply the email gmail(or yahoo or hotmail...) will know
     who are we replying to. */

     $headers =  "MIME-Version: 1.0" . "\r\n";
     $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
     $headers  = "From: ".$email ."\r\n";
     $headers .= "Reply-To: $email\r\n";
    
    if(mail($email_to, $name, $message, $headers)){
        echo 'ok'; // we are sending this text to the ajax request telling it that the mail is sent..      
    }else{
        echo 'failed';// ... or this one to tell it that it wasn't sent    
    }
?>


Kan iemand me uitleggen hoe ik hier een validatie op toepas? Zodat dit er geen e-mail wordt verstuurd als de link van het php bestand rechtsstreeks (om wat voor reden dan ook) gevolgd zou worden.
Gewijzigd op 17/01/2013 21:09:26 door Kev Rama
 
PHP hulp

PHP hulp

22/12/2024 12:49:36
 
Nick Dijkstra

Nick Dijkstra

17/01/2013 21:11:49
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        // Hier al je code
    }
?>
 
Kev Rama

Kev Rama

17/01/2013 21:39:36
Quote Anchor link
Okay, dat heb ik gedaan. En nu krijg ik een blanco pagina - als ik de URI volg. De Firebug console laat zien dat er niks verstuurd wordt. Ik ben hier echt heel erg mee geholpen. Moet toch super zijn om die dingen gewoon uit je mouw te schudden ;D

Uhm, maar wat heb ik nu precies gedaan - natuurlijk moet ik hetzelf uitpluizen, dat begrijp ik. Maar ja, ik denk ik vraag het even goed. Okay, IF dat houdt dus in ALS de volgende conditie/voorwaarde is vervult. In dit geval selecteren we de Server en dan zeggen we dat de request methode Post moet zijn. Maar wat doet dat? Als er geen datastring wordt verstuurd via de Post methode op de site dan werkt het php script niet?

Overigens dit is de site: http://risicobesef.nl
Er zit geen cms achter. Maar in de nabije toekomst wil ik van de site een Wordpress sjabloon maken - die WordPress php tags daar kan ik wel enigsinds mee overweg - de 'Loop' en zo. Misschien kan iemand eens een kijkje nemen en in de site wroeten, of hij veilig is. Want laatst had ik dus zo'n lege e-mail ontvangen. En via de site kun je volgens mij geen leeg formulier versturen (of Javascript moet uitstaan in de browser... hmm dat moet ik eens ff uitproberen). Ik wil natuurlijk niet dat de site onveilig is.
Nou ja, in ieder geval echt bedankt Nick. Ik waardeer dit echt.
Gewijzigd op 17/01/2013 21:40:20 door Kev Rama
 
Nick Dijkstra

Nick Dijkstra

17/01/2013 21:55:17
Quote Anchor link
Klop, hij kijkt inderdaad of er een formulier gepost is.
Mijn tip is ook om in php te kijken of de velden zijn ingevuld en of het e-mailadres correct is.
 
Bernhard Flokstra

Bernhard Flokstra

18/01/2013 11:50:17
Quote Anchor link
Misschien is het ook handig om validatie in php in te bouwen. Mocht er iets mis gaan in je validatie met jQuery dan word je formulier toch nog gevalideerd.

Als ik letterlijk de betekening van onderstaande code zou uitschrijven dan krijg je dit:

Als de formmethode POST is dan wordt de volgende code uitgevoerd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        // Hier al je code
    }
?>
 
Kev Rama

Kev Rama

18/01/2013 12:34:44
Quote Anchor link
Bernhard Flokstra op 18/01/2013 11:50:17:
Misschien is het ook handig om validatie in php in te bouwen. Mocht er iets mis gaan in je validatie met jQuery dan word je formulier toch nog gevalideerd.

Als ik letterlijk de betekening van onderstaande code zou uitschrijven dan krijg je dit:

Als de formmethode POST is dan wordt de volgende code uitgevoerd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        // Hier al je code
    }
?>


En de Post methode wordt alleen uitgevoerd vanuit de website. Dus als ik de URI naar het php verwerkingsformulier in de adresbalk van de browser in tik dan is er geen Post methode gebruikt? Klopt dat?

Ja, als ik Javascript in mijn browser uitzet dan werkt de validatie (en eigenlijk het hele formulier) niet. Dus een goed idee zou inderdaad zijn om terug te vallen op php. Binnenkort maar eens wat tutorials gaan doornemen.
 
Bernhard Flokstra

Bernhard Flokstra

21/01/2013 10:27:04
Quote Anchor link
Dat klopt inderdaad. POST krijg je alleen als je een formulier verstuurd (al zijn er manieren om POST na te bootsen), niet als je naar een pagina toe surft. Dus als je naar www.domein.nl/verwerkFormulier.php gaat dan is dit geen POST. Als je dat adres bij action neer zet in de form tag dan krijg je een POST request.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.