Foutmelding bij invoer van hoofdletters
Ik heb een PHP script van iemand gekregen voor een contactformulier op de website.
Omdat ik een echte beginner ben, heb ik maar weinig aangepast. Het script werkt overigens wel.
Op een paar dingen na.
Als de bezoeker zijn voor- en achternaam invult en daarna het verzend, krijgt hij de foutmelding dat de invoer niet correct is.
De reden is dat hij de namen met een hoofdletter begint. Als het in kleine letters wordt ingevoerd gaat het goed.
Hoe kan ik dat veranderen?
Nee, dat wordt niks. Welk script gebruik je? Plaats eens wat relevante code.
Als je de relevante code code kan tonen kunnen we er meer over zeggen.
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
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
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
<?php
session_start();
#**********************************************
#***** Contactformulier van DSR Cleaning *****
#**********************************************
if(isset($_POST['email'])) {
// Pas deze twee regels aan. E-mailadres van de ontvanger
$email_to = "**mailknip**";
$email_subject = "E-mailbericht";
function died($error) {
// je foutbericht staat hier
echo "Het spijt ons, vanwege een fout is het formulier niet verzonden. ";
echo "Deze fout(en) tonen zich hieronder.<br /><br />";
echo $error."<br /><br />";
echo "Ga a.u.b. terug om de velden correct in te vullen.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['voornaam']) ||
!isset($_POST['achternaam']) ||
!isset($_POST['email']) ||
!isset($_POST['telefoon']) ||
!isset($_POST['bericht'])) {
died('Het spijt ons, er is een probleem opgetreden bij het verzenden van het formulier.');
}
$first_name = $_POST['voornaam']; // verplicht
$last_name = $_POST['achternaam']; // verplicht
$email_from = $_POST['email']; // verplicht
$telephone = $_POST['telefoon']; // niet verplicht
$comments = $_POST['bericht']; // verplicht
$error_message = "";
$email_exp = "^([a-zA-Z0-9]+[a-zA-Z0-9._%\-\+]*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$";
if(!mb_ereg($email_exp,$email_from)) {
$error_message .= 'Het e-mailadres is niet geldig.<br />';
}
$string_exp = "^[a-z .'-]+$";
if(!mb_ereg($string_exp,$first_name)) {
$error_message .= 'De voornaam is niet geldig.<br />';
}
if(!mb_ereg($string_exp,$last_name)) {
$error_message .= 'De achternaam is niet geldig.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'Het bericht is niet geldig.<br />';
}
$string_exp = "^[0-9 .-]+$";
if(!mb_ereg($string_exp,$telephone)) {
$error_message .= 'Het telefoonnummer is niet geldig.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Gegevens formulier.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "voornaam: ".clean_string($first_name)."\n";
$email_message .= "achternaam: ".clean_string($last_name)."\n";
$email_message .= "email: ".clean_string($email_from)."\n";
$email_message .= "telefoon: ".clean_string($telephone)."\n";
$email_message .= "bericht: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- Creeer je eigen succes pagina hier -->
Bedankt voor uw bericht. U krijgt zo spoedig mogelijk een reactie.
<?
}
?>
session_start();
#**********************************************
#***** Contactformulier van DSR Cleaning *****
#**********************************************
if(isset($_POST['email'])) {
// Pas deze twee regels aan. E-mailadres van de ontvanger
$email_to = "**mailknip**";
$email_subject = "E-mailbericht";
function died($error) {
// je foutbericht staat hier
echo "Het spijt ons, vanwege een fout is het formulier niet verzonden. ";
echo "Deze fout(en) tonen zich hieronder.<br /><br />";
echo $error."<br /><br />";
echo "Ga a.u.b. terug om de velden correct in te vullen.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['voornaam']) ||
!isset($_POST['achternaam']) ||
!isset($_POST['email']) ||
!isset($_POST['telefoon']) ||
!isset($_POST['bericht'])) {
died('Het spijt ons, er is een probleem opgetreden bij het verzenden van het formulier.');
}
$first_name = $_POST['voornaam']; // verplicht
$last_name = $_POST['achternaam']; // verplicht
$email_from = $_POST['email']; // verplicht
$telephone = $_POST['telefoon']; // niet verplicht
$comments = $_POST['bericht']; // verplicht
$error_message = "";
$email_exp = "^([a-zA-Z0-9]+[a-zA-Z0-9._%\-\+]*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$";
if(!mb_ereg($email_exp,$email_from)) {
$error_message .= 'Het e-mailadres is niet geldig.<br />';
}
$string_exp = "^[a-z .'-]+$";
if(!mb_ereg($string_exp,$first_name)) {
$error_message .= 'De voornaam is niet geldig.<br />';
}
if(!mb_ereg($string_exp,$last_name)) {
$error_message .= 'De achternaam is niet geldig.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'Het bericht is niet geldig.<br />';
}
$string_exp = "^[0-9 .-]+$";
if(!mb_ereg($string_exp,$telephone)) {
$error_message .= 'Het telefoonnummer is niet geldig.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Gegevens formulier.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "voornaam: ".clean_string($first_name)."\n";
$email_message .= "achternaam: ".clean_string($last_name)."\n";
$email_message .= "email: ".clean_string($email_from)."\n";
$email_message .= "telefoon: ".clean_string($telephone)."\n";
$email_message .= "bericht: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- Creeer je eigen succes pagina hier -->
Bedankt voor uw bericht. U krijgt zo spoedig mogelijk een reactie.
<?
}
?>
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht. Ook heb ik voor de veiligheid je mailadres weggehaald.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 22/03/2018 22:37:54 door - Ariën -
Want wat als iemand nou een exotische naam heeft met diakritische tekens?
Verder zijn reguliere expressies voor e-mailadres controles ook niet handig, omdat je prima met filter_var() al prima kan controleren of een mailadres bestaat. Met jouw reguliere expressie zou [email protected] niet eens geldig zijn.
De beste oplossing is:
Code (php)
Het komt er op neer dat je het niet te moeilijk voor gebruikers moet maken bij controles.
Gewijzigd op 22/03/2018 22:36:40 door - Ariën -
Dank voor je reactie.
Ik zal kijken of ik het aan kan passen.
Zoals gemeld ben ik een beginner en heb nog geen sikkepit verstand van PHP.
Met vriendelijke groet,
Henk Drenth
Ik zou zeggen: Probeer het eerst eens, want aldoende leert men ;-)
Door hier $string_exp = "^[a-zA-Z .'-]+$"; van te maken worden hoofdletters wel geaccepteerd. Voor e-mailadressen zou ik de route die Ariën uitstippelt inslaan.
Maar met die regexp geldt de naam Ariën helaas weer niet. Dus daarom kan je beter enkel gewoon controleren of er iets ingevuld is.
Helemaal waar.
Heel erg bedankt voor jullie bijdrage. Ik ben goed geholpen.
Ik wil me wat meer verdiepen in PHP. Ben een beginner en weet er niets van.
Kunnen jullie mij een tip geven over een aan te kopen boek?
Wat wel een goede aanrader is, is het PHP Kookboek, en is geschreven door Ward van der Put die hier tevens ook op het forum zit. Dit boek is niet echt het boek voor de directe beginner, maar geeft meer tips voor als je meer uit PHP wilt halen.
Gewijzigd op 23/03/2018 14:44:52 door - Ariën -