Ik ben bezig met een simpele website met een contactformulier. Heb in een ver verleden (8 jaar terug) wat vaker met ASP gewerkt. Server waar de website op komt draait echter alleen PHP, en dat lukt me maar met moeite. Inmiddels wel een random background in php werkend. Contactformulier met foutcontrole werkt eigenlijk prima, en komt ook nog aan
Heb een op het web ronddwalend voorbeeld gebruikt.
Ik heb werkende foutcontrole op alle velden werkend. Inmiddels ook zover dat de velden e-mail en telefoonnummer niet alletwee hoeven worden ingevuld (of/of is dus voldoende).
Het enige dat ik nog zou willen is dat de bedrijfsnaam niet vereist is, maar dat als de bedrijfsnaam is ingevuld, dat dan ook alleen de door mij gespecificeerde tekens daarin mogen voorkomen.
Heeft er misschien mee te maken dat ik niet precies snap wat de volgende code doet:
Als ik het logisch lees zou dat laatste blok ervoor moeten zorgen dat het altijd fout gaat indien ik 1 veld niet invul?
Ik hoop dat iemand een toelichting kan geven. Heeft al een behoorlijke tijd geduurd om uberhaubt een contactformulier te krijgen dat ook nog een e-mail wil verzenden. Laatste puntje op de i kom ik echter niet meer uit (kan ook tijdstip zijn;) )
Ik heb werkende foutcontrole op alle velden werkend. Inmiddels ook zover dat de velden e-mail en telefoonnummer niet alletwee hoeven worden ingevuld (of/of is dus voldoende).
Het enige dat ik nog zou willen is dat de bedrijfsnaam niet vereist is, maar dat als de bedrijfsnaam is ingevuld, dat dan ook alleen de door mij gespecificeerde tekens daarin mogen voorkomen.
code:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
| <?php
if(isset($_POST['email'])) {
$email_to = "naam@mailadres.nl";
$email_subject = "contactgegevens"; //onderwerp van email
function died($error) {
echo "Het spijt ons, maar er is iets misgegaan.<br />";
echo "Het volgende ging fout:<br /><br />";
echo $error."<br /><br />";
echo "Ga een pagina terug om deze fouten te herstellen.<br />";
echo "Mocht het verzenden van het formulier onverhoopt niet werken, neem dan telefonisch contact met mij op via telefoonnummer.
<br /><br />";
die();
}
// Controle of verplichte velden niet leeg zijn
if(
!isset($_POST['bedrijfsnaam']) || //niet verplicht
!isset($_POST['contactpersoon']) || //niet verplicht
(!isset($_POST['email']) & !isset($_POST['telefoonnummer'])) || //een van de twee is verplicht
!isset($_POST['opmerking'])) //verplicht
{
died('Het spijt me, maar het lijkt erop dat er iets fout gaat. <br /> Neem contact met mijop via telefoonnummer.');
}
$bedrijfsnaam = $_POST['bedrijfsnaam']; // niet verplicht
$contactpersoon = $_POST['contactpersoon']; // verplicht
$email = $_POST['email']; // verplicht tenzij telefoonnummer is ingevuld
$telefoonnummer = $_POST['telefoonnummer']; // verplicht tenzij email is ingevuld
$opmerking = $_POST['opmerking']; // verplicht
//onderstaand de foutafhandeling indien velden met onjuiste tekens worden ingevuld
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
$string_exp = "/^[0-9 -]+$/";
if((!preg_match($email_exp,$email)) & (!preg_match($string_exp,$telefoonnummer))) {
$error_message .= 'U dient een geldig telefoonnumer of e-mail adres in te vullen.<br />';
}
// $string_exp = "/^[0-9 -]+$/"; //foutafhandeling voor alleen telefoonnummer
// if(!preg_match($string_exp,$telefoonnummer)) {
// $error_message .= 'Het ingevoerde telefoonnummer is ongeldig.<br />';
// }
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$bedrijfsnaam)) {
$error_message .= 'De ingevoerde bedrijfsnaam is ongeldig.<br />';
}
if(!preg_match($string_exp,$contactpersoon)) {
$error_message .= 'De ingevoerde contactpersoon is ongeldig.<br />';
}
if(strlen($opmerking) < 2) {
$error_message .= 'De ingevoerde opmerking/vraag is ongeldig.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "contactgegevens:\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Bedrijfsnaam: ".clean_string($bedrijfsnaam)."\n";
$email_message .= "Contactpersoon: ".clean_string($contactpersoon)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Telefoonnummer: ".clean_string($telefoonnummer)."\n";
$email_message .= "Opmerking: ".clean_string($opmerking)."\n";
// aanmaken email headers
$headers = 'From: '.$email."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- hieronder de melding bij correcte verzending -->
Bedankt voor het invullen van het formulier, we nemen snel contact met u op. Klik hier om terug te gaan naar onze site.
<?php
}
?> |
Heeft er misschien mee te maken dat ik niet precies snap wat de volgende code doet:
code:
1
2
3
4
5
6
7
8
9
| // Controle of verplichte velden niet leeg zijn
if(
!isset($_POST['bedrijfsnaam']) || //niet verplicht
!isset($_POST['contactpersoon']) || //niet verplicht
(!isset($_POST['email']) & !isset($_POST['telefoonnummer'])) || //een van de twee is verplicht
!isset($_POST['opmerking'])) //verplicht
{
died('Het spijt me, maar het lijkt erop dat er iets fout gaat. <br /> Neem contact met mij op via telefoonnummer.');
} |
Als ik het logisch lees zou dat laatste blok ervoor moeten zorgen dat het altijd fout gaat indien ik 1 veld niet invul?
Ik hoop dat iemand een toelichting kan geven. Heeft al een behoorlijke tijd geduurd om uberhaubt een contactformulier te krijgen dat ook nog een e-mail wil verzenden. Laatste puntje op de i kom ik echter niet meer uit (kan ook tijdstip zijn;) )
And now the most interresting part of deze grot