Formular Feldeingabe prüfen ob ein bestimmter Wert vorhanden ist

as333

Erfahrenes Mitglied
Hi,

ich habe ein Formular erstellt, was mit dem folgenden Code überprüft wird,
ob etwas in dem jeweiligen Feld steht.

PHP:
$errorFelder = array();
$error = null;
$felder = array("nachname", "vorname", "eMail");


if(isset($_POST['ueberpruefung'])) {
  $error = false;

  foreach($felder as $feld) {
    if(empty($_POST[$feld])) {
      $error = true;
      $errorFelder[$feld] = true;
    }
  }


}

if($error === false)
{
  echo "Name: $_POST[nachname]";

  echo "<br><br>Vorname: $_POST[vorname]";

  echo "<br><br>E-Mail: $_POST[eMail]";

}
else
{

  if($error === true)
       echo "<b><tr><td width='30%'>Bitte füllen Sie die fehlenden Felder aus.</td><td width='100%'><center></center></td></b>\n";
Jetzt möchte ich aber das bei dem Feld eMail zum Beispiel es nur als richtig ausgefüllt erkannt wird wenn jemand eine E-Mail Adresse zum Beispiel von gmx.de angibt.
Also wenn jemand test@web.de angibt soll es nicht als richtig Eingabe angegeben werden und das Feld soll rot werden.
Wenn jedoch jemand test@gmx.de eingibt soll es als richtig markiert werden.

Ich habe bereits ein anderes Formular erstellt bei dem überprüft wird
ob es sich um eine E-Mail Adresse handelt.
PHP:
if (!ereg("^.+@.+\\..+$", $_POST['eMail']))
{
echo "Die eingegebene Emailadresse ist nicht korrekt!<br>";
}

Jetzt möchte ich alles in einem Formular haben, habe es aber leider nicht hinbekommen.
Wäre super wenn ihr mir hierbei helfen könntet.
 
PHP:
$check = substr('eine@mail.foo', -6)

Noch prüfen ob das gleich gmx.de ist (Hinweis: [phpf]strtolower[/phpf]).
Man kann das auch am @ (per [phpf]explode[/phpf]) auseinander nehmen und dann gucken.
 
Irgendwie stehe ich mal wieder auf dem Schlauch.

Ich kriege es einfach nicht hin,
das die Überprüfung ordnungsgemäßfunktioniert.
 
Ich habe wie ZodiacXP vorgeschlagen hat versucht mit der Funktion substr die letzten 6 Zeichen ausgeben zu lassen.
Und diese dann mit der E-Mail Adressen Endung mit Hilfe einer if-Anweisung zu überprüfen.
Nur leider klappt es nicht.

##EDIT##

Ich habe es jetzt mal probiert erstmal einzeln zu testen,
aber das ging auch nicht.
Mir wird immer angezeigt das die Eingabe "falsch" wäre.

PHP:
$check = substr("$_POST[eMail]", -6);
   if($check=="gmx.de")
   {
   echo"richtig";
   }
   else
   {
   echo"falsch";
   }
 
Zuletzt bearbeitet:
Wieso ist das Thema nun als erledigt markiert? Gibt's eine Lösung von deiner Seite?

Hier noch ein paar Probleme mit deinem Skript:
  1. Wenn jemand "foo@Gmx.DE" schreibt erkennst du es nicht (Gmx.DE != gmx.de)
  2. Setze bitte die Qoutes an die richtige Stelle: substr($_POST['e-mail'], ...)

Zusatz:
Macht jemand aus Versehen ein Leerzeichen ans Ende dann klappt es auch nicht, außer man benutzt [phpf]trim[/phpf]
 
Hi ZodiacXP,

ja ich hatte es gestern Abend hinbekommen.
Deswegen hab ich das Thema auch als erledigt markiert.
 
Ok, dann kehre ich die Appellebene mal zum Sachinhalt:

Es wäre immer schön wenn du deine Lösungen für die Nachwelt hier veröffentlichst. Falls wieder jemand eine Frage wie die deine hat. Sonst wird das Internet langsam voll mit Fragen ohne Antworten und Lösungen ;)
 
Zuletzt bearbeitet:
Hi ZodiacXP,

Dein Hinweis mit trim() würde ich auch noch gerne mit einbauen.

Ich habe es mit dem folgenden versucht, hat aber nicht geklappt.

Wenn ich mir check2 ausgeben lasse und bei der Eingabe Leerzeichen nach gmx.de mache wird bei mir bei einem Leerzeichen das "g" abgeschnitten.

Was habe ich hierbei falsch gemacht?

PHP:
   $check = substr($_POST['eMail'], -6);
   $check1=strtolower($check);
   $check2=trim($check1);

   if($check2=="gmx.de")
   {
   echo"richtig";
   }
   else
   {
   echo"falsch";
   }


Ok kein Problem.
Hier meine Lösung.
PHP:
   $check = substr($_POST['eMail'], -6);
   $check1=strtolower($check);

   if($check1=="gmx.de")
   {
   echo"richtig";
   }
   else
   {
   echo"falsch";
   }
 
Wenn ich mir check2 ausgeben lasse und bei der Eingabe Leerzeichen nach gmx.de mache wird bei mir bei einem Leerzeichen das "g" abgeschnitten.
PHP:
   $check = substr($_POST['eMail'], -6);
   $check1=strtolower($check);
   $check2=trim($check1);

Logisch. Wenn du von "foo@mail.bar????" (vier Leerzeichen am Ende) erst die letzten sechs Zeichen nimmst ("ar????") und dann trim anwendest ergibt das selbstverständlich nur "ar".

Umgekehrt macht es wieder Sinn. So wird aus "foo@mail.bar????" durch trim() ein "foo@mail.bar" wovon man wieder gemütlich die letzten sechs Zeichen nehmen kann.
 
Zurück