PHP Contact Validatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ouassim B

Ouassim B

19/08/2012 00:20:04
Quote Anchor link
Nu ben ik aardig ver gekomen met mijn contact formulier process script maar kan iemand mij vertellen hoe ik de telefoon nummer kan laten valideren dus dat het alleen uit cijfers bestaat en dat het 10 nummers zijn?

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
31
32
33
34
35
36
37
<?php

    $naam
= check_input($_POST['naam'], "Gelieve uw (volledige) naam in te vullen ");
    $telefoon = check_input($_POST['telefoon'], "Gelieve een (geldig) telefoonnummer in te voeren!");
    $product = Trim(stripslashes($_POST['product']));
    $EmailFrom = check_input($_POST['EmailFrom'], "Gelieve een (geldig) email in te voeren!");
    $bericht = check_input($_POST['bericht'], "Gelieve een (geldig) bericht in te voeren!");
    $onderwerp = "Kaftan Senna Contact";
  
    $EmailFrom = htmlspecialchars($_POST['EmailFrom']);
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$EmailFrom))
    {

      die("Oeps er is iets fout gegaan. Gelieven een (geldig) email in te voeren!");
    }

    function
check_input($data, $problem='')
    {

      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      if ($problem && strlen($data) == 0)
      {

         die($problem);
      }

      return $data;
    }


    $EmailFrom = urldecode($EmailFrom);
    if (eregi("\r",$EmailFrom) || eregi("\n",$EmailFrom))
    {

      die("Spammer Detected");
    }


    mail( "[email protected]", $onderwerp, $bericht, "From: $naam <$EmailFrom>" );
    header( "Location: http://coremeta.nl/kaftan/contact/ok.html" );

?>
 
PHP hulp

PHP hulp

22/12/2024 21:25:18
 
Leon blabla

Leon blabla

19/08/2012 00:52:15
Quote Anchor link
Dit werkt als het goed is :)
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
<?php
function CheckNummer($nummer)
{

if(is_int($nummmer) && strlen($nummer)==10)
{

return true;
}

else
{
return false;
}

}

?>
Gewijzigd op 19/08/2012 00:53:38 door Leon blabla
 
Ouassim B

Ouassim B

19/08/2012 01:36:12
Quote Anchor link
Zou je misschien mijn code met jouw code kunnen laten zien dus precies wat ik en waar ik het in de code moet stoppen


Leon blabla op 19/08/2012 00:52:15:
Dit werkt als het goed is :)
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
<?php
function CheckNummer($nummer)
{

if(is_int($nummmer) && strlen($nummer)==10)
{

return true;
}

else
{
return false;
}

}

?>
 
Obelix Idefix

Obelix Idefix

19/08/2012 10:10:39
Quote Anchor link
Quoten van een reactie direct boven je is wat zinloos ;-)

Ten aanzien jouw reactie: probeer het zelf. Tip: Het is een functie, die heb je nu ook in je script zitten. Werkwijze is hetzelfde...

Ten aanzien van controle: wat als iemand een buitenlands nummer wil invullen of zonder kengetal? Dat mag dus niet?

Met betrekking tot je code: eregi is oud en vervallen. Zul je moeten vervangen door preg_match. Werkt bijna (!) hetzelfde.

Het versturen van een mail behoeft nog wel wat extra's --> volgens mij missen de nodige headers. Gebruik daarom liever phpmailer of swiftmailer; heb je geen omkijken meer naar het goed instellen. Variabelen horen overigens niet tussen " te staan.

Na header is advies om exit(); te gebruiken.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/08/2012 10:59:58
Quote Anchor link
Allereerst is het heel onprofessioneel om die() te gebruiken. Dit zal je met de aan zekerheid grenzende waarschijnlijkheid bezoekers gaan kosten.
Daarnaast hoef je een invoer maar 1 keer te valideren, als bv een enail veld leeg is voldoet het ook niet aan de preg_match.
Even een aanzetje:
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
31
32
33
34
35
36
37
38
39
40
41
42
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $errors = array();
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$_POST['EmailFrom'))
        $errors['email'] = 'U heeft geen of een onjuist emailadres opgegeven';
    if (!is_int($_POST['telefoon']) || strlen($_POST['telefoon']) != 10)
        $errors['phone'] = 'U heeft geen of een onjuist telefoonnummer opgegeven';
    if (!isset($_POST['naam']) || trim($_POST['naam']) == '')
        $errors['name'] = 'Gelieve uw (volledige) naam in te vullen';
    //dit doe je dan ook voor de rest van je velden
    if (count($errors) != 0) {
        $_SESSION['post'] = $_POST;
        $_SESSION['errors'] = $errors;
        header("Location: http://coremeta.nl/kaftan/contact/contact.php");
    }

    else {
        //hier ga je je mail verzenden
    }
}

//hier kan je dan overschakelen naar het formulier en daar waar nodig de foutmeldingen vertonen
?>

<html>
<head>
....
</head>
<body>
.....
<?php
    if (isset($_SESSION['errors']['email'])) {
        echo '<div class="formerror">' . $_SESSION['errors']['email'] . '</div>';
    }

?>

<div class="formrow">
    <label for="EmailFrom">Emailadress:</label>
    <div class="formfield">
        <input type="text" name="EmailFrom" value="<?php echo (isset($_SESSION['errors']) ? $_SESSION['post']['EmailFrom'] : '') ?>" />
    </div>
......
</div>
</body>
</html>
 



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.