Ankündigung

Einklappen
Keine Ankündigung bisher.

regex - Problem..?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • regex - Problem..?

    Hallo, ihr Lieben!
    Ich habe seit einigen Tagen ein Problem mit meiner Regex-Funktion.
    Sie soll eine E-Mail-Adresse im Formular nur zulassen, wenn sie mindestens 6 Zeichen enthält, nicht leer ist (beides schon geschafft) und ein @ und einen . enthält.

    Der Quellcode zu diesem Teil meiner Programmierung ist folgender:

    PHP-Code:
    if(preg_match("/([0-9a-zA-Z])@(0-9a-zA-Z).(a-zA-Z)/"$email)){TRUE;}
        else {
    $errormsg5_email="Dies ist keine gültige E-Mail-Adresse!";} 
    Er sendet mir allerdings IMMER $errormsg5_email. Ab 6 Zeichen aufwärts, egal ob mit oder ohne @/. oder mit beidem oder gar keinem.

    Code im Formular:

    PHP-Code:
    <p>E-Mail-Adresse:<br /><input name="email" type="varchar" size="30"value="<?php if (isset($email)) {echo $email;} ?>"  maxlength="255">
         
    <?php
    if (isset($errormsg_email)) {echo $errormsg_email;} //email == 0 
    if (isset($errormsg2_email)) {echo $errormsg2_email;} //email <5
    if (isset($errormsg3_email)) {echo $errormsg3_email;} //email enthält schimpfwort
    if (isset($errormsg5_email)) {echo $errormsg5_email;} //enthält @ und . 
    ?></p>

    Könnt ihr mir vielleicht weiterhelfen? Bevor das nicht stimmt, trägt er die Daten ja nicht in die Datenbank ein :/

    Liebe Grüße und Danke schon einmal,
    Maike


  • #2
    1. Anstatt Variablen durchzunummerieren solltest du Arrays verwenden.
    2. Teste deinen Regex mal auf www.regexr.com oder regexpal.com. Manche Dinge fallen sofort auf: keine Quantifizierer und der "." ist nicht escaped, du matcht also nicht einen Punkt, sondern ein beliebiges Zeichen. Außerdem sei der Hinweis angebracht, das E-Mail-Adressen theoretisch wesentlich komplexer aussehen dürfen. Such dir den entsprechenden RFC und lies dort nach, wie genau.

    Als genereller Tipp sei auch filter_var() mit FILTER_VALIDATE_EMAIL genannt.

    Kommentar


    • #3
      http://php-de.github.io/jumpto/stand...il-validation/
      have fun.

      Kommentar


      • #4
        Ja, bevor wir hier zum 10567-en mal über Regex und EMail Validierung diskutieren, solltest du den link von moma genau studieren und dann einige eigene Tests mit filter_var machen.
        PHP-Klassen auf github

        Kommentar

        Lädt...
        X