eMail überprüfen

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

  • eMail überprüfen

    Hallo alle zusammen

    Ich habe in meiner Homepage eine Seite auf der sich User regestrieren können. Dabei müssen sie auch ihre eMail-Adresse angeben. Um die zu Überprüfen hab ich mir ein Script aus dem Internet gesucht und das eingbaut.

    Es läuft auch super, nur einige Adressen erkennt es nicht, kann mir wer sagen woran das leigen könnte?

    Hier meine Funktion zum eMail-check
    PHP-Code:
    function checkEmail($email) {
     
    // checks proper syntax
     
    if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" $email)) {
      
    // gets domain name
      
    list($username,$domain)=split('@',$email);
      
    // checks for if MX records in the DNS
      
    if(!checkdnsrr($domain'MX')) {
       return 
    false;
      }
      
    // attempts a socket connection to mail server
      
    if(!fsockopen($domain,25,$errno,$errstr,30)) {
       return 
    false;
      }
      return 
    true;
     }
     return 
    false;


  • #2
    Es läuft auch super, nur einige Adressen erkennt es nicht, kann mir wer sagen woran das leigen könnte?
    Am rgulären Ausdruck oder daran dass kein Mailserver Eintrag exisitert oder der Verbindungsaufbau zum Mailserver scheitert.
    Gib mal ein Bsp einer Email die nicht funzt.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Ich hätte es auch online testen sollen
      Habe gerade feststellen müssen das keine eMail-Adresse funzt.
      Woran kann das denn liegen?
      Zuletzt geändert von Ceene; 28.09.2007, 13:44.

      Kommentar


      • #4
        was muss ich denn hier eintragen ?
        Na zum Debuggen könntest du ja mal die Fehler ausgeben, die fsockopen() meldet. Wäre ein Anfang
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Hab die Funktion mal so weit aufgebohrt, aber es wird mir nichts ausgegeben.
          PHP-Code:
          function checkEmail($email) {
           
          // checks proper syntax
           
          error_reporting(E_ALL);
           if(
          preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9._-] +)+$/" $email)) 
           {
            
          // gets domain name
            
          list($username,$domain)=split('@',$email);
            
          // checks for if MX records in the DNS
            
          if(!checkdnsrr($domain'MX')) 
            {
             return 
          false;
            }
            
          // attempts a socket connection to mail server
            
          if(!fsockopen($domain,25,$errno,$errstr,30)) 
            {
             echo 
          '$errstr';
             return 
          false;
            }
            echo 
          '$errstr';
            return 
          true;
           }
           echo 
          '$errstr';
           return 
          false;

          Kommentar


          • #6
            Der Reguläre Ausdruck kann ja nicht funktionieren, der sucht ja überall nach Leerzeichen, und die sind - im Gegensatz zu z.B. Umlauten, die hier nicht erkannt werden - nicht erlaubt.
            Und wenn du error_reporting richtig eingestellt hättest, gäbe es auch eine Fehlermeldung, dass $errstr nicht definiert ist.
            Zuletzt geändert von H2O; 28.09.2007, 14:07.
            Gruss
            H2O

            Kommentar


            • #7
              Habe gerade feststellen müssen das keine eMail-Adresse funzt.
              Und da du nix von einer Fehlermeldung sagst, kanns nur der RegExp sein, der nicht matched. Kennst du den RegExp-Evaluator?
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Der Reguläre Ausdruck kann ja nicht funktionieren, der sucht ja überall nach Leerzeichen, und die sind - im Gegensatz zu z.B. Umlauten, die hier nicht erkannt werden - nicht erlaubt.
                Wie muss es denn aussehen damit es funktioniert?

                Und wenn du error_reporting richtig eingestellt hättest, gäbe es auch eine Fehlermeldung, dass $errstring nicht definiert ist.
                Wie muss ich es denn einstellen, dachte immer mehr als E_ALL geht nicht.

                Nein, den RegExp-Evalutor kenn ich nicht, was kann man damit machen, bzw. wozu ist der gut?

                Kommentar


                • #9
                  Sorry, mit dem $errstr habe ich mich getäuscht, der steht ja immer in (einfachen) Anführungszeichen, und wird hiermit nie ausgewertet, sondern als String ausgegeben.
                  Und der Regex müsste z.B. so
                  PHP-Code:
                   if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)\\.[[:alpha:]]{2,6}$/" $email)) 
                  aussehen. Damit erkennt er aber immer noch keine Umlaute. Damit tun sich diese Ausdrücke generell schwer.
                  was kann man damit machen, bzw. wozu ist der gut?
                  Hast du die Seite überhaupt angeschaut?
                  Zuletzt geändert von H2O; 28.09.2007, 14:17.
                  Gruss
                  H2O

                  Kommentar


                  • #10
                    Ja hab ich mir angeschaut, aber schlau draus geworden bin ich nicht. Man kann sich da einen bestimmten php-Coder erzeugen lassen ...

                    Kommentar


                    • #11
                      Man kann dort seine regulären Audrücke testen und das würde ich dir mal wärmstens empfehlen.

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Original geschrieben von Ceene
                        Man kann sich da einen bestimmten php-Coder erzeugen lassen ...

                        frankenstein???????????????
                        **********
                        arkos
                        **********

                        Kommentar

                        Lädt...
                        X