Aktuelles
PHP & JS: E-Mails verschlüsseln.
0 Kommentare - Link news - Related Link: none
in PHP von Fabsn geschrieben am 03.12.2009
Um E-Mails auf Webseiten effektiv vor Spam zu schützen und das automatische Auslesen zu erschweren, greife ich auf folgende Methode zurück:
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
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
<?php
function scrambleMailto($adresse, $name = "") {
//Link erstellen.
$adresse_old = $adresse;
if ($name == "") $name = $adresse;
$adresse = "<a href=\"mailto:".$adresse."\">".$name."</a>";
//An jeder 3. Position den String "##" einfügen.
$temp = chunk_split($adresse,2,"#|#");
//String unterteilen
$temp_array = explode("#|#",$temp);
$scrambled = "";
//String zusammensetzen
foreach($temp_array as $stueckchen) {
$scrambled.= "+'".$stueckchen."'";
}
//Erstes Zeichen abschneiden (+)
$scrambled = substr($scrambled, 1, strlen($scrambled));
//Verschlüsselte eMail mit Name und Link per JavaScript einfügen
$result = "<script type=\"text/javascript\">\n document.write($scrambled); \n</script>";
//Ausgabe des JavaScripts
return $result;
}
?>
Diese Funktion erstellt den passenden HTML-Code für einen E-Mail-Link, teilt den String und setzt ihn anschließend so zusammen, dass er über Javascript per document.write geschrieben werden kann.
Die Übergabe für einen $name-Wert ist optional.
Eine automatische Umwandlung aller gültigen E-Mail-Adressen in einem Text kann über folgende RegEx geschehen:
PHP:
1
2
3
2
3
<?php
$text = preg_replace("#([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}#esi", "scrambleMailto(\"$0\")", $text);
?>


Top