Ankündigung

Einklappen
Keine Ankündigung bisher.

eMail-Adresse auf Korrektheit überprüfen

Einklappen

Neue Werbung 2019

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

  • #16
    Meine Funktion:

    PHP-Code:
    function checkEmail($email,$mxcheck true)
    {
        
    $teile explode('@'$email);
        if ( 
    $teile[1] == 'test.de' ) {
            return 
    false;
        }

        if ( 
    function_exists('filter_var') ) { 
            
            if ( 
    filter_var($emailFILTER_VALIDATE_EMAIL ) === FALSE ) {
                return 
    false;
            }
            
        } else {
            
    $regex_email '/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/';
            if ( !
    preg_match($regex_email$email) ) {
                return 
    false;
            }
        }
        
        if ( 
    $mxcheck ) {
            if (  !
    checkdnsrr($teile[1], "MX") and !checkdnsrr($teile[1], "A" ) ) {
                return 
    false;
            } 
        }
        return 
    true;

    Aufgerufen wird das so:
    PHP-Code:
    $emailok1 checkEmail($email_1); 
    Oder so:
    PHP-Code:
    $emailok2 checkEmail($email_2,false); 
    [PHP]if ($var != 0) {
    $var = 0;
    }[/PHP]

    Kommentar


    • #17
      @Wolla: Die dutzenden Maskierungen beim regulären Ausdruck im else-Block kannst du dir ersparen. Innerhalb von Zeichenklassen muss für das jeweilige Zeichenliteral nur "]" und "\" escaped werden, sowie "^" wenn es am Anfang der Zeichenklasse steht und "-" wenn es nicht am Anfang oder Ende der Zeichenklasse steht. Das macht den Ausdruck dann gleich wesentlich übersichtlicher.

      Kommentar


      • #18
        mh schade eigentlich eine schöne neue funktion eigebaut aber leider nicht brauchbar

        Damit prüfst du nicht, ob $val mit "www" beginnt, sondern ob irgendwo in $val die Zeichenkette "www" vorkommt. Das ist etwas anderes. Ausserdem beginnen viele Domains nicht mit www. Daher ist der Ansatz schon falsch.
        mhh ich bin davon ausgegangen das jede webseite von einer firma so oder so immer mit www. aufgerufen werden kann.

        was würdest du vorschlagen wie ich die url validieren kann? bis auf die endung .de o.ä. müsste ich mich ja sonst auf den benutzer verlassen (von dem in diesem fall ausgegangen werden kann das er seine angaben gewissenhaft macht...) http:// kommt nicht in frage... theoretisch würde ich gar keine validierung brauchen da ich denjenigen sowieso manuell freischalten muss.. nur möchte ich ungern noch alle daten auf korrektheit prüfen sondern nur ob der angemeldte benutzer tatsächlich aus der firma komtm die sich anmelden darf. zu sehen an der email adresse.

        du hast eigentl recht wenn der benutzer die eingabe falsch macht hat er pech gehabt.. nur tippfehler wollte ich vermeiden

        @wolla. auf sondezeichen muss ich wohl nicht prüfen, ebenso nicht auf test.de am sinnvollsten ist wohl wenn ich den string einfach nach mindestens einem "." und einem "@" durchsuche.. da wäre ich was tippfehler angeht auf der sicheren seite... sprich ich nutzte etwas wie folgendes..
        PHP-Code:
        mb_strpos($val'@'0) === false 
        vielen danke für eure anregungen

        Kommentar


        • #19
          Zitat von taurus Beitrag anzeigen
          mh schade eigentlich eine schöne neue funktion eigebaut aber leider nicht brauchbar


          mhh ich bin davon ausgegangen das jede webseite von einer firma so oder so immer mit www. aufgerufen werden kann.

          was würdest du vorschlagen wie ich die url validieren kann?
          Ggf. mit einem regulären Ausdruck je nach Anwendungsfall. I.d.R. reicht es aus, wenn man auf ungültige Zeichen prüft und ob mindestens ein . im URL steht. Sicher gehen kannst du sowieso erst dann, wenn du die Resource wirklich abrufst.

          Zitat von taurus Beitrag anzeigen
          bis auf die endung .de o.ä. müsste ich mich ja sonst auf den benutzer verlassen (von dem in diesem fall ausgegangen werden kann das er seine angaben gewissenhaft macht...) http:// kommt nicht in frage... theoretisch würde ich gar keine validierung brauchen da ich denjenigen sowieso manuell freischalten muss.. nur möchte ich ungern noch alle daten auf korrektheit prüfen sondern nur ob der angemeldte benutzer tatsächlich aus der firma komtm die sich anmelden darf. zu sehen an der email adresse.
          Das kannst du ja automatisieren. Erstelle einfach eine Liste mit den Domains der Firmen die sich anmelden können und vergleiche dann den Host der E-Mailadresse damit. Ob die E-Mailadresse grundsätzlich gültig ist spielt dabei doch gar keine Rolle.

          Kommentar


          • #20
            das wäre zu aufwendig ich müsste mich erstmal hinsetzten und alle 100.000 firmen dieses typ eingeben.. von denen ich nichtmal weiß wer sich anmelden wird und unserem vertrag zustimmt

            ungültige zeichen und ein . das sollte für die url und email( + @) genügen.

            danke!

            Kommentar


            • #21
              mhh.
              ich hab mir von selfhtml einen regex zusammengebaut der wie folgt aussieht
              PHP-Code:
              preg_match("/^(?:[a-zA-Z0-9][a-zA-Z0-9_.-]*|\"(?:[^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")\@(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}$/",$value
              meint ihr nich der wäre schon zu groß und exakt? oder wäre eine prüfung nur auf . und @ nicht sinnvoller?

              Kommentar


              • #22
                Benutzt doch was fertiges wie Pear Validate. O.a.Zend_Validate_EmailAddress.
                I like cooking my family and my pets.
                Use commas. Don't be a psycho.
                [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

                Kommentar


                • #23
                  das wäre ja langweilig
                  ich nehm den code oben und für url prüfe ich eben nur auf a-zA-Z . und domainende sprich mit diesem hier
                  PHP-Code:
                  preg_match("#^([a-z0-9-_.]{2,}\.[a-z]{2,6})$#i",$val
                  das sollte soweit ok sein

                  Kommentar


                  • #24
                    Naja, zumindest variabel kann man doch diverse Protokolle noch unterstützen. SOnst sind ja korrekte Angaben mit http:// bei Dir ungültig! Und an sich kann eine URI natürlich auch mehr abbilden, als die reine Domain.
                    Pfade
                    Sriptnamen
                    Parameter
                    Sprungziele mit #
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #25
                      mhh ich wollte erst die url ohne http:// in die db speichern.. aber das is eigentl ungünstig.. eine firmendomain sollte im Normalfall so aussehen "(http://)kanzlei-muenchen.de" angaben wie index sind fehl am platz. das eine firmenadresse "muenchen.de/startseite/login/ lautet kommt in diesem fall sicher nicht vor.

                      ich werde also erst den string auf http:// prüfen und wenn nicht davorsetzten. und dann erst die eingabe prüfen
                      PHP-Code:
                      preg_match("#^(http://|https://)+([a-z0-9-_.]{2,}\.[a-z]{2,6})(/)?#i",$val

                      bin ich gut "aufdieschulterklopf" diese regex geschichte is gar nich so schwer wies aussieht

                      das ende lass ich offen und prüfs auch nicht weiter. die firma muss selbst auf korrekte eingaben achten da sonst deren werbe link nicht funktioniert..

                      Kommentar

                      Lädt...
                      X