space picture
That's me, folks

Partnerprogramme



quality content
Firefox - Autobilder odge - PHP




space picture space picture

How To: Spamstopper in UserTalk

Die hochgeschätzten Bloggerkollegen haben natürlich völlig recht: Ein richtiges Programm nur um eine Email-Adresse in ihre Entities zu codieren ist ein wenig mit Kanonen auf Spatzen geschossen. Bei p3k kann man es hier online erledigen lassen.

Auch in UserTalk - der integrierten Skriptsprache von Frontier und Radio UserLand ist das in wenigen Zeilen erledigt. Der eigentliche Algorithmus für das Codieren eines characters in sein numerisches HTML-Entity sieht so aus:

on decodeEntity(c){
  return "&#" + string.padWithZeros(number(c), 3) + ";"}

Die Funktion string.padWithZeros() sorgt dafür, daß der zurückgegebene Zahlenwert mir führenden Nullen auf drei Stellen aufgefüllt wird und number() übersetzt einen Character in seinen ASCII-Wert. Das ist alles.

Jetzt wollen wir das aber für einen ganzen String - nämlich eine Email-Adresse - und nicht nur für einen Buchstaben haben. Also erweitern wir unsere Funktion wie folgt:

on spamStop(s) {
  local (i, t = "");
  for i = 1 to sizeof(s) {
    t = t + ("&#" +
      string.padWithZeros(number(string.nthChar(s,i)), 3) + ";")};
  return "<a href=\"mailto:" + t + "\">" + t + "</a>"}

Im Grunde ist es die gleiche Funktion wie decodeEntity(), nur daß string.nthChar() in der Schleife dafür sorgt, daß das Ganze Buchstabe für Buchstabe durchlaufen wird. Und wir geben den codierten String zweimal zurück: Einmal innerhalb des mailto-Tags und einmal zwischen dem Ankertag, damit hier nicht doch wieder die verräterische Email-Adresse im Klartext steht.

Wenn man sich das Ergebnis mit dialog.notify() einmal vorab anschauen will, sieht es mit meiner Email-Adresse so aus:

Codierte Email als Spam-Stopper

So, wenn Ihr dieses Macro nun in den Ordner Macros innerhalb Eures Radio UserLand-Verzeichnisses packt oder als Outliner irgendwo innerhalb einer root (z.B. workspace in Radio.root - was ich bevorzuge, dann fallen die geschweiften Klammern und die Semicolon weg und das Script sieht fast wie Python-Code aus "smile"), dann könnt Ihr es an jeder Stelle in Eurem Radio-Weblog aufrufen, an der ihr Email codieren wollt: <% workspace.spamStop("der@schockwellenreiter.de") %> ergibt {workspace.spamStop("der@schockwellenreiter.de")}.

[Update]: Auch bei diesem Makro wurde mir von dem hier beobachteten Phänomen berichtet, daß ein via copy und paste von dieser Seite gezogene Datei nicht funktioniert. Also gibt es auch dieses Makro zum Download.


space picture space picture space picture space picture

Werbung
Suchen in:
Suche:
In Partnerschaft mit Amazon.de
Aktueller Monat
Archiv