Funktion zur Erstellung von "geschützten" Mail-Adressen

Hektik

Erfahrenes Mitglied
Hallo!

Vorerst bitte ich für eventuelle Grammatik zu entschuldigen. Ich muss dazu sagen, dass ich extrem angetrunken von dem Geburtstag meiner Freundin komme...)

Mir kam heute die Idee, eine Funktion zu schreiben... Man übergibt den Parameter als normale Mailadresse und heraus kommt die selbe Adresse, jedoch in Sonderzeichen (ASCII?) formatiert (halt das selbe, als wenn ich "escape_html_special_chars" oder so ähnlich anwende). Ich denke, dass wir jeder kennen, aus einem & wird z.B. ein & und so weiter.

So eine Funktion könnte ich quasi auf jeder Webseite gebrauchen, auf der Mail-Adressen angezeigt werden, denn bisher reagieren die §%"%$$§% Spambots nicht darauf.

Leider weiß ich im Moment nicht, wie man die Übersetzung der Zeichen realisiert und erstelle hier noch einen Thread, damit ich morgen schon auf einen Ansatz treffe, weil sich hier ein schneller oder intelligenter Kerl daran den Kopf zerbrochen hat. Gemein, ich weiß, aber so hab ich dass nun grade mal vor *fg*

Ich falle jetzt ins Bett, hoffe, dass ich morgen früh den Wecker höre, und dann meld ich mich wieder.

Pics gibts natürlich auch (also von grade) im Anhang.... €dig: Natürlich ich rechts, das Geb-Kind links *argh*...

PS: Beitrag noch mal überarbeitet, meine Grammatik ist echt dahin *g* GN8!
 

Anhänge

  • 24445attachment.jpg
    24445attachment.jpg
    107,9 KB · Aufrufe: 32
Zuletzt bearbeitet:
Spam-Harvester sind mittlerweile so intelligent, dass nicht nur Klartext-E-Mail-Adressen erkannt werden, sondern auch viele andere Schreibweisen wie etwa „user[at]example[dot]com“. Der einzig gute Schutz ist die E-Mail-Adresse erst gar nicht zu veröffentlichen oder zusätzliche E-Mail-Adressen neben der eigentlichen zu haben.

Zum Schluss noch etwas zur rechtlichen Lage: Stephan Ott über Impressumspflicht contra Spam-Vermeidung.
 
wie wäre es mit sowas :

PHP:
function EncodeEmail($strEmail) {
   $strMailto = "&# 109;&# 097;&# 105;&# 108;&# 116;&# 111;&# 058;";
   for ($i=0; $i < strlen($strEmail); $i++) {
       $strEncodedEmail .= "&#".ord(substr($strEmail,$i)).";";
   }
       $strDisplay = $strEncodedEmail;
       return $strDisplay;
}

Die Leerzeichen hinter denen Rauten müsst Ihr natürlich entfernen, musste die rein machen da mailto: dran steht . lool

Also wenn ich Party mache und komm nachhause, dann denk ich doch nicht mehr an PHP und so ein Schnick Schnack, ist ja der hammer.
 
Zuletzt bearbeitet:
Man könnte auch ROT13 o. Ä. machen und das dann mit JavaScript ausgeben.

@PHP + Alkohol:
Gerade da hat man die besten Ideen ;)
 
Hab das Ganze mal implementiert, da ich in der Richtung eh schonmal was machen wollte. Ist jetzt nicht ROT13, sondern ich nehme den ASCII-Wert von jedem Zeichen und addiere noch was dazu (nur um ganz sicher zu gehen ;))
Bei der Ausgabe mit JavaScript wird die Email-Adresse dann wieder decodiert.
Ich glaub zum Quelltext brauch ich weiter nichts sagen, ist ja nicht sehr kompliziert.

Kleiner Nachteil ist natürlich, dass JavaScript aktiviert sein muss.

PHP:
<?php
function encode_email($email){
    for($i=0; $i<strlen($email); $i++){
        $email_encoded .= (ord(substr($email, $i, 1))+19)."|";
    }
    return $email_encoded;
}

function show_email($email, $is_link){
    if($is_link)
        echo "<a href=\"javascript:openEmail('".encode_email($email)."')\"><script language=\"JavaScript\">document.write(decodeEmail('".encode_email($email)."'));</script></a>";
    else
        echo "<script language=\"JavaScript\">document.write(decodeEmail('".encode_email($email)."'));</script>";    
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  <script language="JavaScript">
  <!--
  function decodeEmail(email){
    var parts = email.split("|");
    var email_decoded = "";
    for(i=0; i<parts.length-1; i++){
        email_decoded += String.fromCharCode(parts[i]-19);
    }
    return email_decoded;
  }
  
  function openEmail(email){
    var email_decoded = decodeEmail(email);
    if(!email_decoded.match(/^mailto:/i))
        email_decoded = "mailto:" + email_decoded;
    document.location.href = email_decoded;
  }
  //-->
  </script>
  </head>
  <body>
  
<?php show_email("andreaslaemmlein@hotmail.com", true); ?>

  </body>
</html>
 
Alternativ könnte man auch, statt die Adresse als Text auszugeben (ob nun mit verändertem @ oder nicht) auch einfach eine Grafik ausgeben. In dem Impressum meiner privaten Webseite benutze ich das schon seit langem und habe bisher noch keine Spam-Mail bekommen.

Nachteil ist natürlich bei komplizierten Adressen, dass man nicht einfach mit Copy/Paste arbeiten kann um an Denjenigen/Diejenige zu schreiben.


##### EDIT #####
Ich habe mir graden den Artikel von Stephan Ott, den Gumbo weiter oben gepostet hat, durchgelesen. Rein rechtlich gesehen ist die von mir vorgeschlagene Alternative nicht ganz unumstritten! Einfach Mal den Artikel lesen.

Eine weitere Möglichkeit, besonders beim Impressum wäre es noch, zunächst eine Captcha-Funktion vorzuschalten, bevor die eigenen Adressangaben angezeigt werden. Dann wäre es auch egal, ob man Klartext verwendet oder nicht. Aber ich glaube ich weiche vom Thema ab...
 
Zuletzt bearbeitet:
Die Möglichkeiten eine E-Mail-Adresse zu verschleihern/zu verstecken, sind fast unendlich. Die Frage ist dabei immer nur, wo dies eingesetzt werden soll. Denn wer Stephan Otts Artikel über Impressumspflicht contra Spam-Vermeidung gelesen hat, wird feststellen, dass nur die Klartextvariante bei der Angabe der Kontaktmöglichkeiten erlaubt ist. Überall anders dürft ihr aber so viel verschlüsseln/kodieren/verschleihern wie ihr wollt. Am besten noch als unendlich verzerrte und unkenntlich gemachte Grafik im Stile der Captchas, da es ja auch OCR-Programme gibt, die Textgrafiken lesen können.

Mein Tipp: Rückt eure E-Mail-Adresse einfach nicht so gutgläubig heraus oder nur dort, wo sie vom System selbst geschützt wird.
 
Zurück