Foutmelding bij invoer van hoofdletters

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henk Drenth

Henk Drenth

22/03/2018 21:59:02
Quote Anchor link
Beste forumleden,

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?

 
PHP hulp

PHP hulp

29/11/2024 17:36:29
 
Ben van Velzen

Ben van Velzen

22/03/2018 22:06:22
Quote Anchor link
Laat ik mijn glazen bol er eens bij pakken...
Nee, dat wordt niks. Welk script gebruik je? Plaats eens wat relevante code.
 
- Ariën  -
Beheerder

- Ariën -

22/03/2018 22:06:51
Quote Anchor link
Blijkbaar is de controle ergens niet goed. Misschien iets met strtolower, ucfirst of mb_string().
Als je de relevante code code kan tonen kunnen we er meer over zeggen.
 
Henk Drenth

Henk Drenth

22/03/2018 22:18:01
Quote Anchor link
Dank voor jullie snelle reactie. Hier de code:
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
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.

<?
}
?>

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.
Gewijzigd op 22/03/2018 22:37:54 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

22/03/2018 22:31:24
Quote Anchor link
Ik zou liever gewoon kijken i.p.v. een reguliere expressie of er iets is ingevuld.
Want wat als iemand nou een exotische naam heeft met diakritische tekens?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(trim($_POST['naam'])=="") {
    echo "Er is geen naam ingevuld!";
}

?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) {
  echo "Dit mailadres is geldig!";
}
else {
  echo "Dit mailadres is ongeldig!";
}

?>


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 -
 
Henk Drenth

Henk Drenth

22/03/2018 23:21:53
Quote Anchor link
Beste 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
 
- Ariën  -
Beheerder

- Ariën -

22/03/2018 23:26:15
Quote Anchor link
Ik zou zeggen: Probeer het eerst eens, want aldoende leert men ;-)
 
Ben van Velzen

Ben van Velzen

23/03/2018 00:28:29
Quote Anchor link
Je probleem in de huidige opzet bevindt zich op regel 45.
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.
 
- Ariën  -
Beheerder

- Ariën -

23/03/2018 00:30:41
Quote Anchor link
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.
 
Ben van Velzen

Ben van Velzen

23/03/2018 00:48:14
Quote Anchor link
Helemaal waar.
 
Henk Drenth

Henk Drenth

23/03/2018 11:01:29
Quote Anchor link
Beste Ben en Ariën,

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?
 
- Ariën  -
Beheerder

- Ariën -

23/03/2018 14:44:00
Quote Anchor link
een echt goed boek heb ik nooit gevonden, maar menig beginnersboek die PHP 7 beschrijft moet wel de juiste stappen bieden om in de wereld van PHP te stappen.

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 -
 



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.