PHP Contact Validatie
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)
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
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" );
?>
$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" );
?>
Zou je misschien mijn code met jouw code kunnen laten zien dus precies wat ik en waar ik het in de code moet stoppen
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.
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.
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:
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)
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
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>
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>




