piep: eMail Adresse prüfen

Habe gerade im Forumsarchiv folgenden Tag gefunden, mit dem man angeblich eine vom Benutzer eingegebene eMail auf ihre Korrektheit prüfen kann:

#Sonderzeichen aus Mail-Adr entfernen, zugelassen: a-z, A-Z, _-+*$.@
$email    =~ s/[^a-zA-Z0-9_-+\*$.@]//g;

#SyntaxCheck

ein oder mehr Zeichen vor @

ein oder mehr Zeichen nach @

2 oder mehr Zeichen nach .

if ($email !~ /(.+)@(.+).(.{2,})/)
{
#Syntax falsch
$emailok = 0;
}
else
{
#Syntax OK
$emailok = 1;
}

Leider bekomme ich keinen Wert, weder 1 noch 0, zurück.
Woran könnte das liegen?
Ist der oberste Teil überhaupt korrekt so?

MfG, piep

  1. Hi,

    Habe gerade im Forumsarchiv folgenden Tag gefunden, mit dem man angeblich eine vom Benutzer eingegebene eMail auf ihre Korrektheit prüfen kann:

    echt? Und es hat damals (wann immer das war) niemand darauf hingewiesen, dass diese Prüfung kompletter Humbug ist? Schade.

    #Sonderzeichen aus Mail-Adr entfernen, zugelassen: a-z, A-Z, _-+*$.@

    Schon hier beginnt das Script, völlig falsch zu sein.

    Ist der oberste Teil überhaupt korrekt so?

    Nicht mal im Ansatz. Konsultiere

    perldoc perlfaq9, "How do I check a valid mail address?"

    wo das Problem ausführlich behandelt wird.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. echt? Und es hat damals (wann immer das war) niemand darauf hingewiesen, dass diese Prüfung kompletter Humbug ist? Schade.

      *lol*  Nö, hat keiner!

      Konsultiere perldoc perlfaq9, "How do I check a valid mail address?"

      Was meinst du mit "perldoc perlfaq9" bzw. woher bekomme ich die sog. Perldocumentation?
      Hab hier zwar diverse Perl-Bücher, aber anscheinend nicht die offizielle!

      (jetzt kommt bestimmt sowas wie -> siehe perl.net oder so) ;)

      1. Hi,

        Konsultiere perldoc perlfaq9, "How do I check a valid mail address?"
        Was meinst du mit "perldoc perlfaq9" bzw. woher bekomme ich die sog. Perldocumentation?

        die ist bei Perl mitgeliefert und befindet sich also auf Deiner Festplatte als lauffähiges Programm. Ansonsten bei einschlägigen Sites wie http://www.perl.com/ oder http://www.perldoc.com/.

        (jetzt kommt bestimmt sowas wie -> siehe perl.net oder so) ;)

        Naja, das ist doch naheliegend, oder? :-)

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Konsultiere perldoc perlfaq9, "How do I check a valid mail address?"
          Was meinst du mit "perldoc perlfaq9" bzw. woher bekomme ich die sog. Perldocumentation?
          die ist bei Perl mitgeliefert und befindet sich also auf Deiner Festplatte als lauffähiges Programm. Ansonsten bei einschlägigen Sites wie http://www.perl.com/ oder http://www.perldoc.com/.

          Arbeit hier anner Firma auf anderen Server wo Perl vorinstalliert ist. Deshalb hab ich nicht unbedingt ne Ahnung, wo die Docus liegen.
          In der perldoc FAQ9 steht aber nur lol-Kram. Ich will einfach nur checke, ob in der Mail-Adresse nen @ Zeichen und danach nen . vorkommt!
          Mehr will ich nicht!

          gruß, piep

          1. Hi,

            Arbeit hier anner Firma auf anderen Server wo Perl vorinstalliert ist. Deshalb hab ich nicht unbedingt ne Ahnung, wo die Docus liegen.

            das brauchst Du auch nicht. Gib einfach "perldoc perlfaq9" ein - das System macht den Rest.

            In der perldoc FAQ9 steht aber nur lol-Kram.

            Mitnichten. Unter anderem steht dort ein Link zu einem Script, das eine korrekte Prüfung vornimmt. Was willst Du mehr?

            Ich will einfach nur checke, ob in der Mail-Adresse nen @ Zeichen und danach nen . vorkommt!
            Mehr will ich nicht!

            Dann mach auch nicht mehr. Deine bisherige Prüfung sorgt dafür, dass am Ende mit hoher Wahrscheinlichkeit etwas falsches herauskommt. Zur Prüfung auf die Existenz eines Teilstrings (also auch eines Zeichens) bietet sich index() an, siehe

            perldoc -f index

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Dann mach auch nicht mehr. Deine bisherige Prüfung sorgt dafür, dass am Ende mit hoher Wahrscheinlichkeit etwas falsches herauskommt. Zur Prüfung auf die Existenz eines Teilstrings (also auch eines Zeichens) bietet sich index() an, siehe
              perldoc -f index
              Cheatah

              Die alte Prüfung habe ich längst rausgeschmissen!
              Aber anstatt immer so perldoc zu posten, wäre es viel hilfreicher, wenn du mir mal eben nen Beispiel gegeben hättest und fertig.

            2. hi Cheatah

              das brauchst Du auch nicht. Gib einfach "perldoc perlfaq9" ein - das System macht den Rest.

              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 klappt bei mir leider nicht  :-((((   auchso hab ich schon gesagt das ich vor einer winblöd-dose sitze

              bis bis roman

              --
              P.S. manchmal wundere ich mich schon über die postings (fragen u. antworten) die man hier geboten bekommt(meine eigenen [leider] mit eingenommen)
              => ich denke mir meinen teil und ziehe das beste daraus :-)
              ss:( zu:) ls:} fo:) de:> va:) ch:] sh:( n4:° rl:( br:^ js:| ie:( fl:( mo:)
              http://emmanuel.dammerer.at/selfcode.html
    2. Hi,

      echt? Und es hat damals (wann immer das war) niemand darauf hingewiesen, dass diese Prüfung kompletter Humbug ist? Schade.

      Hm... du weisst aber viel davon was der Fragesteller will.
      Für eine vollständige Syntaxprüfung ist die RegExp sicher viel zu kurz;
      Aber der in der perldoc9 empfohlene Weg über ein PIN-Verfahren oder gar doppelte Eingabe der Daten ist in Bezug auf Usability bloedsinnig.

      IMHO reicht eine Prüfung der Syntax laut RFC aus um eine Adresse
      zu validieren. Und dahin ist die obere RegExp ein erster Schritt
      in die richtige Richtung.
      (Es ist jedenfalls besser als ein   ~= /@/i; )

      Die Prüfung über DNS MX -Abfragen oder PIN-Methoden lohnt nur bei
      wichtigen Dingen und bei Servern wo Zeitverhalten nicht wichtig ist.

      Die Perlfaq9 ist schon technisch IMHO wirklich fein und toll (Sieht man von dem Verstoss gegen eine RFC zu sendmail ab, womit das
      angegebene Beispiel unter "How do I send mail?" schlicht
      ungueltig ist), aber in der Realität braucht man (leider) keine technisch perfekte Lösung, sondern eine, die klappt und schnell machbar ist.

      Für die Mailadressenüberprüfung reicht mir persönlich jedenfalls eine
      RegExp, welche sich weitgehend an die RFC hält.
      Zum beispiel das Modul CheckRFC von Andre Malo;
      http://cvs.sourceforge.net/viewcvs.py/selfforum/selfforum-cgi/shared/CheckRFC.pm

      Ciao,
        Wolfgang