|
|
|
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
|
|
|
|