將字串繪製成圖像是一種方便的方法,可以偽裝電子郵件地址,使垃圾郵件嗅探器無法輕易獲取它。使用電子郵件建立動態圖像的唯一問題是,要顯示的電子郵件必須透過查詢字串傳遞,以使靜態 HTML 可以使用它。因此,必須稍微加密電子郵件,以免破壞不直接鍵入電子郵件地址的目的。我編寫了以下腳本來做到這一點
將以下內容另存為 email.php
<?php
if ($_GET['addr'] != "") {
$msg = $_GET['addr'];
$msg = preg_replace("/\[dot]/",".",$msg);
$msg = preg_replace("/\[at]/","@",$msg);
$final = "";
for ($i=0; $i<=strlen($msg); $i++) {
$final .= substr($msg, strlen($msg)-$i, 1);
}
$msg = $final;
$char_width = 8;
$char_height = 17;
$padding = 3;
$width = $padding*2+strlen($msg)*$char_width;
$height = +$padding*2+$char_height;
$im = imagecreatetruecolor($width,$height);
imagealphablending($im, FALSE);
imagesavealpha($im, TRUE);
$bg = imagecolorallocatealpha($im, 255, 255, 0, 100);
$text = imagecolorallocatealpha($im, 0, 0, 0, 0);
imagefilledrectangle ($im, 0, 0, $width, $height, $bg); imagestring($im, 4, $padding, $padding, $msg, $text);
} else {
$im = imagecreatetruecolor(1,1);
imagealphablending($im, FALSE);
imagesavealpha($im, TRUE);
$bg = imagecolorallocatealpha($im, 255, 0, 0, 125);
imagefilledrectangle ($im, 0, 0, 1, 1, $bg); }
header('Content-type: image/jpg');
imagepng($im);
imagedestroy($im);
?>
如果腳本在沒有電子郵件地址的情況下被呼叫,它會輸出一個 2x2 的透明圖像。
要呼叫腳本產生電子郵件 "user@home.com",HTML 標籤會是
<img src="email.php?addr=moc[dot]emoh[at]resu">
為了「加密」要傳遞給腳本的電子郵件地址,請將地址反向寫入,並將「.」替換為「[dot]」,將「@」替換為「[at]」。這不是最堅不可摧的保護,但它可以阻止大多數隨意的電子郵件嗅探器。