PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
Mathe Nachhilfe
Suchmaschinenoptimierung
PHP Forum

Email bannen und überprüfen (V1.0.3)

Zurück zur Übersicht

Ich habe eine einfache Funktion geschrieben, womit ihr Emails aus euren Gästebüchern bannen könnt.
Zusehen ist die Funktion hier:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
<?php
function isValidMail($email$banList null) {
    
//Reguläre Ausdrücke für Emails
    
$EmailPattern  '#^[a-zA-Z0-9_.-]+@([a-zA-Z0-9_.-]+\.)+[a-zA-Z]{2,4}$#si';
    
$DomainPattern '([a-zA-Z0-9_.-]+\.)+[a-zA-Z]{2,4}';
    
$NamePatter    '[a-zA-Z0-9_.-]+';
    
    
$email trim($email);

    
//Überprüft die Emailadresse
    
if (!preg_match($EmailPattern$email)) {
        return 
false;
    }
    
    
//Wenn die Email richtig war und eine bestimmte Banliste gesetzt wurde.
    
if (!is_null($banList)) {
        if (
is_array($banList)) {
            foreach(
$banList AS $banEmail) {
                
                
//Bereitet die Email auf.
                
$banEmail addcslashes($banEmail".");
                
$banEmail preg_replace('#\{name\}#si'$NamePatter$banEmail);
                
$banEmail preg_replace('#\{domain\}#si'$DomainPattern$banEmail);
                
$banEmail "#^".$banEmail."$#si";
                
                
//Prüft ob die Email gebannt wurde.
                
if (preg_match($banEmail$email)) {
                    return 
false;
                }    
            }
        }
        else {
            
//Bereitet die Email auf.
            
$banEmail addcslashes($banList".");
            
$banEmail preg_replace('#\{name\}#si'$NamePatter$banEmail);
            
$banEmail preg_replace('#\{domain\}#si'$DomainPattern$banEmail);
            
$banEmail "#^".$banEmail."$#si";
            
            
//Prüft ob die Email gebannt wurde.
            
if (preg_match($banEmail$email)) {
                return 
false;
            }
        }        
    }
    return 
true;
}
?>

Diese Funktion überprüft eine Email, ob sie überhaupt existieren kann, und dannach auf, von euch bestimmte Emails, die nicht erwünscht sind. Und das passiert in drei Typen.
1. Die ganze Email:
webmaster@test.de speert auch nur webmaster@test.de oder Webmaster@test.de usw.
2. Nur mit einem bestimmten Namen von allen Anbietern:
webmaster@{domain} speert Emails wie:
webmaster@gmx.de
webmaster@gmail.com
webmaster@web.de

3. Alle von einem bestimmten Anbieter:
{name}@gmx.de speert alle Emails die von gmx.de gesendet werden könnten.

Die Anwendung ist relativ simpel. Der erste Parameter enthält die Email, die überprüft werden soll, die Zweite enthält die Emails die gespeert wurden. Dies kann eine Einzelne sein, oder mehrer.
Ist alles Inordnung mit der Email, gibt die Funktion true (wahr/1) zurück. Ist die Email von euch gebannt worden, oder nicht korrekt, gibt die Funktion false (unwahr/0) zurück.

Beispiel für die Anwendung.
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<?php
$email 
$_POST['email'];

//Eine Email speeren.
if (!isValidMail($email'{name}@ro.tk.ru')) {
    echo 
'Sie haben eine falsche oder gebannte Emailadresse angeben.';
}
//Speert alle emails die auf ro.tk.ru enden.

//Mehrer Emails speeren.
$ban = array('{name}@ro.tk.ru''spammer@{domain}''webmaster@gmx.de');
if (!
isValidMail($email$ban)) {
    echo 
'Sie haben eine falsche oder gebannte Emailadresse angeben.';
}
/* Speert alle emails die mit spammer@ anfangen oder auf @ro.tk.ru enden, oder die Email webmaster@gmx.de */
?>


An diese Funktion muss ein Parameter übergeben werden. Nämlich die Email zum überprüfen. Solltet ihr keine Emails bannen wollen, so lasst den zweiten Parameter leer. Ruft die Funktion in dem Fall in folgender Form auf:
 PHP 
1:
2:
3:
4:
5:
6:
7:
<?php
$email 
$_POST['email'];
if (!
isValidMail($email)) {
    echo 
'Ihre Email kann nicht exestieren';
}
//Die Email ist nicht existentsfähig, da es eine Spaßemail ist, oder ein Text oder sonst was, nur keine Email.
?>


--Update--
1.0.1 Hab vergessen den Punkt zu maskieren für die Regpex, dies wird jetzt gemacht und so steht der Punkt nicht mehr für ein Beliebiges Zeichen.
Unötige Variabel gelöscht.
1.0.2 Emailpattern überarbeitet so das auch - und . erkannt wird.
1.0.3 "#^$banMail$#si" in "#^".$banMail."$#si" geändert. (Kleiner Preformancesunterschied)

Kommentare

Zurück zur Übersicht

Autor GameR

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Prinzip des Kampfsystemes kurz un ...

» Facebook Connect

» Geometrische Formen verlinken







© PHP-Einfach.de 2003 - 2010