もちろん、次の保護方法を使用できます。
-グラフィック画像
-文字を置き換えます。 スパムを入力[at] must [dot] die
-フォームのjsを介した出力
var login = 'spammer' ;
var server = 'must.die' ;
var email = login+ '@' +server;
var url = 'mailto:' +email;
document .write( '<a href="' +url+ '">' +email+ ' ' );
-単純な出力を使用できます&#ANSI_symbol_code; PHPの場合:
$email = 'spammer@must.die'; $url = 'mailto:spammer@must.die'; $safe_email=$safe_url=''; for($i=0; $i<strlen($email); $i++){ $safe_email .= '&#'.ord($email{$i}).';'; } for($i=0; $i<strlen($url); $i++){ $safe_url .= '&#'.ord($url{$i}).';'; } print "<a href='$safe_url'>$safe_email</a>";
前回のプロジェクトでprint-com.bizがレイアウトされた石鹸をスパムから保護する必要があったとき、それを探してこの興味深いサービスに出会いました。
コードをいじると、次のようになります。
function encode(email, text, tpl) {
var t = tpl.replace(/{e}/g, email);
var a = t.replace(/{text}/g, text);
t = "" ;
for (i = 0; i < a.length; i++) {
if (a.charCodeAt(i) <= 127) {
t += (String.fromCharCode(Math.floor(a.charCodeAt(i) / 16) + 65))
t += (String.fromCharCode(a.charCodeAt(i) % 16 + 65));
} else {
t += a.charAt(i);
}
}
var to = t;
return t;
}
function decode(a) {
var t = "" ;
for (i = 0; i < a.length; i++) {
t += (a.charCodeAt(i) <= 127) ?
String.fromCharCode((a.charCodeAt(i) - 65 ) * 16 + (a.charCodeAt(++i) - 65))
:
a.charAt(i);
}
return t;
}
* This source code was highlighted with Source Code Highlighter .
論理的な問題が発生します。たとえば、PHPで同様のものを実装してみませんか。
そして、何が起こったのか。
関数encode_email($メール、$テキスト= null、$ tpl = null) { if(empty($ email))falseを返す場合; if($ tpl === null)$ tpl = "<A HREF=\"mailto:{easket\"> {text} </A>"; if($ text === null)$ text = $ email; $ t = str_replace( '{e}'、$ email、$ tpl); $ a = str_replace( '{text}'、$ text、$ t); $ result = ''; for($ i = 0; $ i <strlen($ a); $ i ++){ if(ord($ a [$ i])<= 127){ $ result。= chr(floor(ord($ a [$ i])/ 16)+ 65) 。 (文字列)chr(ord($ a [$ i])%16 + 65); } else { $ result。=(string)$ a [$ i]; } } $ code = ""; $ code。= "<script type = \" text / javascript \ "> 。 "a = \" "。$ result。" \ ";" 。 「for(i = 0; i <a.length; i ++){document.write((a.charCodeAt(i)<= 127)?String.fromCharCode((a.charCodeAt(i)-65)* 16 +( a.charCodeAt(++ i)-65)):a.charAt(i))} " 。 「</」。 「スクリプト>」 。 "<noscript>" .str_replace(配列( '@'、 '。')、配列( '©'、 '・')、$メール)。 "</ noscript>"; $コードを返します。 }
合計で、soap spam [mat.die]の場合、次のようになります。
DMEBCAEIFCEFEGDNCCGNGBGJGMHEGPDKHDHAGBGNEAGNHFHDHECOGEGJGFCCDO CAスパムなしでCAレターを書きますDMCPEBDO。
そして、jsでデコードした後、電子メールへの通常のリンクが表示されます。
キック、あまり痛くない。 私はこの事件に対する批判に感謝するだろう。