PHP Contact Validatie
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" );
?>
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.
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>