Marktplatz Downloads Tutorials Forum

Designnation bietet auch:

Tutorial hinzufügen

Beliebte Links Weitere Optionen

Tutorial suchen

Titel

Schlüsselwörter

PHP / MySQL Tutorial: Domaincheck für Kontaktformular



Ranking: +3   Kommentare: 1   |   Bewertung: Keine Berechtigung!  

1. Vorwort
Viele haben sich sicher auch schon aufgeregt wenn sie auf ihrer Seite ein Kontaktformular haben, oder ein Anmeldungsformular und sich jemand mit einer Emailadresse wie abc@abcdef.com anmeldet.

Damit ist nun Schluss

2. Was macht die Funktion?
- Sie überprüft ob der eingebene Host existiert (die Domain also)
- Sie gibt einen Fehler aus, wenn kein DNS-Server gefunden wurde.
- Sie gibt eine Meldung aus, wenn Spamverdacht besteht.

3. Zuweisung der Nummern
- 1 = Alles OK
- 2 = Host leer oder falsch
- 3 = DNS nicht gefunden
- 4 = Spamverdacht

4. Start
Man erstellt eine neue Funktion, welche den Wert email mitgeliefert bekommt:

Code:


function domaincheck($email){

// Hier kommt der Rest des Codes hin.

}



Jetzt wird geschaut, ob die Emailadresse auch den erlaubten Werten entspricht:

Code:




if( (preg_match('/(@.*@)|(..)|(@.)|(.@)|(^.)/', $email)) || (preg_match('/^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/',$email)) )



Danach nimmt man die eingegebene Adresse mit dem explode Befehl auseinander, macht also aus dem String ein Array:

Code:


$host = explode('@', $email);



Nun wird überprüft ob die Funktion nicht definiert wurde, wenn nicht geht es in eine neue Funktion rein, welche dann noch überprüft ob der $host auch nicht leer ist, also die auseinander genommene Emailadresse.
Wenn auch dies zutrifft wird per exec einen nslookupbefehl ausgeführt.
Exec führt ein Kommando ohne Rückgabe des Resultates aus.
Wenn alles OK ist, wird der Wert 1 zurück geliefert, dies bedeutet, das alles in Ordnung ist, wenn nicht wird wohl der Host leer gewesen sein, oder er war falsch, wurde nicht gefunden, da gibt es den Wert 2 zurück.

Code:


if (!function_exists('checkdnsrr')){

       function checkdnsrr($host, $type = ''){

       if(!empty($host)){

             if($type == '') $type = "MX";

             @exec("nslookup -type=$type $host", $output);

             while(list($k, $line) = each($output)){

                  if(eregi("^$host", $line)){

                  return "1";

                 }

              }

             return "2";

             }

      }

}




Nun werden noch 3 weitere IF Abfragen durchgeführt, eine die den MX, eine die den A und eine die den CNAME überprüfen.
- Also ob ein Maileintrag besteht (MX)
- Ob ein Hosteintrag besteht (A)
- Und ob ein Alias besteht (CNAME)

5. Schluss
Somit kann man sicher sein das man keine Fantasyeinträge in die DB bekommt.


6. Gesamter Code

Code:


function domaincheck($email){

                    

    if( (preg_match('/(@.*@)|(..)|(@.)|(.@)|(^.)/', $email)) || (preg_match('/^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/',$email)) ){

                

    $host = explode('@', $email);

    if (!function_exists('checkdnsrr')){

        function checkdnsrr($host, $type = ''){

            if(!empty($host)){

                if($type == '') $type = "MX";

                      @exec("nslookup -type=$type $host", $output);

                    while(list($k, $line) = each($output)){

                        if(eregi("^$host", $line)){

                        return "1";

                        }

                    }

                return "2";

            }

        }

    }

    if(checkdnsrr($host[1].'.', 'MX') ) return "1";

    if(checkdnsrr($host[1].'.', 'A') ) return "1";

    if(checkdnsrr($host[1].'.', 'CNAME') ) return "1";

       }

    echo "<table id='mitteilung_false'>

            <tr>

                <td><b>Da ging was schief!</b><br/>Die von Ihnen eingebene Emailadresse ist <b>nicht</b> (mehr) vorhanden, oder <b>ung&uuml;ltig!</b>

                             </td>

            </tr>

        </table>";

}




7. Schlusswort
Dies ist mein erstes Tutorial, habe also noch Verbesserungspotential

Veröffentlicht von: deleted_1286959530
Veröffentlicht am: 16 Jul. 2008
Bookmarks: social bookmarking yigg it Linkarena Technorati Yahoo Mr. Wrong
Schlüsserwörter: domaincheck kontaktformular PHP


Themenverwandte Tutorials


Kommentar(e) (1)


AweSome! sagt:

Find ich gut erklärt und äußerst nützlich ;)


22 Aug. 2008 22:10:28 • Antworten



Anfang

<<

1

>>

Ende

Kommentar eintragen


!! Jetzt kostenlos anmelden oder einloggen und mitdiskutieren!


Partner: • Designer in ActionFlash HilfeTutorials.dePixelio.deFlashstar BlogLizenzfreie Bilder