Email prüfen mit filter_var

  • Hallo zusammen,


    gibt es in Joomla eine Möglichkeit ganz schnell zu testen, ob eine Email-Addresse gültig ist oder nicht? Natürlich kann ich mir mit den Regulären-Ausdrücken was bauen aber vielleicht gibts ja was alternatives. Übrigens, dieser Code funktioniert bei mir irgendwie nicht:



    Code
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format";
    }


    Gibts hierzu irgendwelche Gründe?

    Danke schon im voraus, Tobi

  • Ich hab meinen Fehler auch gerade gefunden.

    Wenn ich eine Email-Adresse über AJAX an mein Modul schicke, dann verschwindet das '@' Zeichen im String. Hab jetzt im Javascript das ersetzt und dann im PHP code re-ersetzt :P Jetzt gehts.

  • Dass Joomla

    Code
    FILTER_VALIDATE_EMAIL

    nicht verwendet, liegt daran, dass leider Emails mit punktlosem Domainnamen rausgefiltert werden, was z.B. bei punktlosen Intranetzen zu Problemen führt.

    Code
    peter@unser-interner-server

    geht z.B. nicht durch. Deshalb verwendet Joomla leider weiterhin einen ekelhaft komplizierten regulären Ausdruck.

  • Ich hab meinen Fehler auch gerade gefunden.

    Wenn ich eine Email-Adresse über AJAX an mein Modul schicke, dann verschwindet das '@' Zeichen im String. Hab jetzt im Javascript das ersetzt und dann im PHP code re-ersetzt :P Jetzt gehts.

    Ajax filtert definitiv nicht, das liegt wahrscheinlich eher an deinem angewendeten Filter...


    Danke Re:Later dass du die Joomla!-Methode vorschlägst, machen/können nur noch die wenigsten.

  • Hallo zusammen,


    also ich weiß nicht wo das »@« Zeichen verscheindet. Im Javascript ist es noch da:



    Und im Modul ist der Aufruf wie folgt:


    Code
        public static function getAjax()                                            
        {                                                                           
            $input = JFactory::getApplication()->input;                             
            $function = $input->get('function');                                    
            $email = $input->get('email');
            return $email;
        }              


    In der Konsole erhatle ich die Email, dann als Alert die Email ohne besagtes @ Zeichen.