Announcement

Collapse
No announcement yet.

eMail-Adresse prüfen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • eMail-Adresse prüfen?

    Hi zusammen
    gibt es in PHP eine möglichkeit eine vom User in einem Formular eingegebene eMail-Adresse nach absenden des Formulars ... also vor dem Speichern der Daten in der DB zu prüfen?? also sowas wie ein Ping auf ne eMail :-)
    irgendwie scheinen einige leutz zu blöd sein richtig ihre eMail zu schreiben passiert andauernd :-(
    würd mich über jeden tipp freuen

    --Danke

  • #2
    Die Sache mit dem "ping" auf die Mail-Adresse ist eher nicht zu realisieren.<br><br>
    Jedoch sollte eine ausführliche Prüfung mit regulären Ausdrücken genug Schutz vor Fehleingaben bieten.<br><br>
    Mehr Informationen zu regex findest du auf der Linux Enterprise-Seite.<br>
    Da gibts nen online-Artikel über reguläre Ausdrücke, der unter anderem auch auf die eMail-Adress-Validierung eingeht.<br><br>
    Im Zweifelsfall einfach mal die Suchfunktion der Linux-Enterprise-Seite benutzen

    Comment


    • #3
      naja..
      leider reicht eine 'ausführliche Prüfung' (syntaktische Prüfung)
      nicht aus, weil die eMail-Adresse ja trotzdem nicht vorhanden sein kann

      Comment


      • #4
        am besten prüft man das mit einer socketverbindung und schaut nach ob der user überhaupt dem mailserver seiner domain bekannt ist.

        dazu gibts z.b. auf zend.com ein tutorial, hier der link:

        http://www.zend.com/zend/spotlight/ev12apr.php

        grüsse,
        [email protected]

        Comment


        • #5
          Ja,
          so ungefär hab ich mir das vorgestellt.

          --Dank

          Comment


          • #6
            Hallo Andy,<p>
            eine EMail-Adresse wird normalerweise ueberprueft, indem man den MXer der angegebenen Domain ueber einen Nameserver heraussucht. Unter Perl gibt es sicher ein einfaches Modul, um den Resolver anzusteuern (habs schon ne Weile nicht gemacht).<p>
            Der MX-Host ist aber nur der einfache Teil: Dort musst Du mit einer SMTP-Verbindung, die eine eingehene EMail simuliert, pruefen, welche Antwort Du vom Host bekommst. Wenn der Host Dir eine Fehlermeldung schickt, weisst Du: ok, die EMail ist falsch. Wenn der Host aber ein OK schickt, muss die EMail nicht automatisch richtig sein - viele Mailer werfen ungueltige Mails einfach ohne Fehlermeldung in den Reisswolf, und dagegen kannst Du nichts machen. 100%ig kannst Du Dich auf richtige EMail-Adressen nicht verlassen.<p>
            Ciao, Marc

            Comment


            • #7
              Hallo !!
              Gibt es das auch in Deutsch irgendwo ??
              Grüsse
              Tuo

              Comment


              • #8
                Wenn du das ganze auf DB basis machst... wie SQL oder so... kannst du es doch folgendermassen tun...
                Ich nehme ein Gästebuch als beispiel:
                - Jemand erstellt einen Eintrag...
                - Der Typ bekommt eine E-Mail...
                - In der E-mail ist ein Link mit einem einmaligen generieten Code...
                - Durch diesen Code... wird der gästebuch eintrag bestätigt...
                - wenn dies nicht der fall ist... wird der gästebuch eintrag nicht sichtbar...
                - dann kannst du noch eine gültigskeit dauer einbauen... so dass der typ diesen eintrag nicht erst nach einem jahr bestätigt : )

                Ich hoffe es half dir weiter... ansonsten mail mir: [email protected]

                Gruß Hendri

                Comment


                • #9
                  <pre>
                  $regExp="^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$";
                  //evtl. (2,4) schreibe, dass .info auch akzeptiert wird
                  if (!(ereg($regExp,$email)))
                  {
                  echo "<p><b>Du hast eine ung&uuml;ltige E-Mail Adresse angegeben.</b><br>
                  <a href=\"javascript:history.back()\">Zur&uuml;ck</a></p>";
                  exit;
                  }
                  </pre&gt

                  Comment


                  • #10
                    <PRE>
                    $host = split ("@", $Absender);
                    if (checkdnsrr($host[1], "MX"))
                    {
                    print "Mailserver erreichbar";
                    }
                    else
                    {
                    print "Mailserver erreichbar";
                    }
                    </PRE>

                    ich glaube das könnte die Frage beantworten - zusätzlich zur Syntaxüberprüfung

                    Harle

                    Comment


                    • #11
                      ja ja, man soll halt nicht einfach nur kopieren. in der else-Schleif emuß es natürlich stehen: <PRE>print "Mailserver nicht erreichbar";</PRE>
                      Harley ;-

                      Comment


                      • #12
                        Hallo,

                        ich versuche grade dein Skript:

                        $host = split ("@", $Absender);
                        if (checkdnsrr($host[1], "MX"))
                        {
                        print "Mailserver erreichbar";
                        }
                        else
                        {
                        print "Mailserver erreichbar";
                        }

                        zum laufen zu bekommen. Ich erhalte immer folgende Fehlermeldung. Die PHP Version die ich benutze ist PHP Version 4.2.3.

                        Warning: checkdnsrr() is not supported in this PHP build in c:\wampp13cs\htdocs\test\mail_send_2.php on line 19

                        Ich hoffe Du kannst mir weiterhelfen

                        Comment


                        • #13
                          brauchte soetwas in einfacher form selbst mal, falls es dir weiter hilft:
                          <pre>
                          function check_mailadress($mail='',$m=0)
                          {
                          if($mail!='')
                          {
                          $t_mail=explode('@',$mail);
                          if($t_mail[1]=='aol.de'||$t_mail[1]=='aol.com'){return 2;}
                          if(checkdnsrr($t_mail[1],'ANY'))
                          {
                          getmxrr("$t_mail[1]",$mx);
                          $sp=pfsockopen("$mx[0]",25);
                          if($sp)
                          {
                          fputs($sp,"HELO meine_domain.de\r\n");
                          fputs($sp,"MAIL From:<webmster@meine_domain.de>\r\n");
                          fputs($sp,"RCPT To:<$mail>\r\n");
                          fputs($sp,"QUIT\r\n");
                          while(!feof($sp))
                          {
                          $l[]=fgets($sp,100);
                          }
                          fclose($sp);
                          if($m==1){foreach($l as $k=>$v){echo "$k: $v<br>";}}
                          if(ereg('250',"$l[3]"))
                          {
                          return 1;
                          }
                          }
                          }
                          }
                          return 0;
                          }
                          </pre&gt

                          Comment

                          Working...
                          X