Pflichtfelder im Kontaktformular prüfen

Liebe/-r Experte/-in,

Bin gerade dabei, mir eine eigene private Webseite zu erstellen. Unter anderem habe ich ein Kontakt-Formular und wollte in diesem mit der ctype_ - Funktion oder preg_match folgendes bewirken.

– Im Name nur Klein- und Großbuchstaben –

if (ctype_lower($name))
{…}
else
{echo $formular}

oder

if (preg_match(„a-z“, „A-Z“ , $name))
{…}
else
{echo $formular}

Aber irgendwie klappt das bei mir nicht.

Ich würde mich freuen wenn ich auf diesem Wege Hilfe finden könnte.

Vielen Dank und Grüße
René

P.S.: Wenn gewünscht kann ich die PHP-Datei auch via E-Mail zustellen. Zum besseren Verständnis.

Probier mal folgendes:

$zeichenkette = „Ich bin ein Satz“;

if(preg_match("[a-zA-Z\s]", $zeichenkette){
echo „stimmt“;
} else {
echo „stimmt nicht“;
}

Guten Tag,
Ich nehme an Sie wollen verhindern dass Zahlen und Sonderzeichen in dem Textfeld stehen?

Da ist ctype die falsche Funktion für, denn sie prüft ob nur Kleinbuchstaben in dem übergebenden String enthalten sind, Zahlen und Sonderzeichen werden nicht als Buchstaben erkannt und ignoriert. Hier mal die Manual Page von ctype_lower: http://php.net/manual/de/function.ctype-lower.php

Mit preg_match liegen Sie sogar richtig, allerdings wenden sie es falsch an, hier mal die Manual Page zu preg_match: http://php.net/manual/de/function.preg-match.php
Sie müssen (in diesem Fall) ähnlich wie Sie es versucht haben, sogenannte Regular Expressions (kurz. RegEx auch RegExp) als pattern verwenden um das zu erreichen was Sie wollen hier mal der Code um nur Buchstaben zu erlauben:

if(preg_match("/^[a-zA-Z]$/",$name){
//@TODO
}

Ein paar weitere Beispiele für RegEx finden Sie hier:
http://faq.scar4u.de/allgemein/regulaere-ausdruecke

Ich hoffe ich konnte Ihnen helfen,
bei weiteren Fragen einfach Melden.
Gruß Daniel

Hallo,

wenn du im Namen nur Groß- oder Kleinschreibung möchtest kannst du den Namen direkt umwandeln:

$name = strtolower($name); // Kleinschreibung
$name = strtoupper($name); // Großschreibung

Liebe Grüße,
Franz

Hallo Martina,

vielen Dank für deine Unterstützung.

Habe es folgendermaßen umgesetzt:
if (strlen($name) „;
if (eregi(“[0-9]","$name")) $eingabefehler .= "• Bitte geben Sie einen richtigen Namen ein (min. 4 Zeichen)!
";

Viele Grüße
René

Hallo Daniel,

vielen Dank für deine Unterstützung.

Habe es folgendermaßen umgesetzt:
if (strlen($name) „;
if (eregi(“[0-9]","$name")) $eingabefehler .= "• Bitte geben Sie einen richtigen Namen ein (min. 4 Zeichen)!
";

Viele Grüße
René

Hallo Franz,

vielen Dank für deine Unterstützung.

Habe es folgendermaßen umgesetzt:
if (strlen($name) „;
if (eregi(“[0-9]","$name")) $eingabefehler .= "• Bitte geben Sie einen richtigen Namen ein (min. 4 Zeichen)!
";

Viele Grüße
René

Hallo René,

eregi bitte noch durch preg_match ersetzen.
http://php.net/manual/de/function.preg-match.php
preg_match("/[0-9]/","$name")

eregi ist veraltet. Bei neuen PHP-Versionen kommt eine Fehlermeldung.

Liebe Grüße,
Franz

Hallo Franz,

vielen Dank für Ihre Rückantwort:

Hier der abgeänderte Code nur für Buchstaben inkl. Leerzeichen:
if (strlen($name) „;
if (preg_match(“/^[a-zA-Z]$/","$name")) $eingabefehler .= "• Bitte geben Sie einen richtigen Namen ein (min. 4 Zeichen)!
";

Leider funktioniert er nicht. D.h.: ich kann alles reinschreiben (Ziffern, Sonderzeichen, Buchstaben) und genau das wollte ich verhindern.

Könnten Sie mir hier weiterhelfen?

Vielen Dank und Grüße
René

Hallo René,

nur eine Änderung:
(!preg_match("/^[a-zA-Z]$/","$name"))

das ! verneint das Ergebnis von preg_match.
preg_match sucht nach allen a-z und A-Z und Leerzeichen und gibt true zurück, wenn diese vorhanden sind. Mit ! wird das Ergebnis umgekehrt. Wenn jetzt ein nicht definiertes Zeichen angegeben wird funktioniert es.

Liebe Grüße,
Franz

Hallo Franz,

vielen Dank für die Rückantwort.

Anbei der geänderte Code:
if (strlen($name) „;
if (!preg_match(“/^[a-zA-Z]$/","$name")) $eingabefehler .= "• Bitte geben Sie einen richtigen Namen ein (min. 4 Zeichen)!
";

Jetzt kann ich gar nichts eingeben.
Ich bekomme immer die Meldung „Bitte geben Sie einen richtigen Namen ein (min. 4 Zeichen)!“
Es ist egal, ob Kleinbuchstaben, Großbuchstaben, Zahlen oder Sonderzeichen eingebe.

Ich dachte wenn ich jetzt meinen Namen eintrage, das er es erkennt das es nur Buchstaben sind und akzeptiert. :frowning:

Wüssten Sie noch einen anderen Ansatz?

Vielen Dank und Grüße
René

Hallo René,

es ist noch eine Verneinung (^) zu viel:
(!preg_match("/[a-zA-Z]$/","$name"))

Liebe Grüße,
Franz

Hallo Franz,

besten Dank!
Jetzt klappt es. :smile:

Grüße
René