找回密码
 立即注册
查看: 1437|回复: 0

[php]加密防止网页上的 email 地址被程序扫描

[复制链接]

6782

主题

8

回帖

2万

积分

管理员

积分
21777
发表于 2019-5-20 20:53:04 | 显示全部楼层 |阅读模式
方案一:
< php
function maskEmail($email)
{
   $me = '';      
   $length = strlen($email);      

   for ($i = 0; $i < $length; $i++) {
       $me .= "&#".ord($email[$i]).";";
   }

   return $me;
}

$me = maskEmail("[email protected]");
echo '<a href="mailto:'.$me.'">'.$me.'</a>';
>

上面那个仍有 mailto 字符, 还是会被扫, 下面的更好
方案二:
< PHP // -*- php -*-

function HideEmail($user, $host, $subject = '') {
   $MailLink = '<a href="mailto:' . $user . '@' . $host;
   if ($subject != '')
     $MailLink .= ' subject=' . urlencode($subject);
   $MailLink .= '">' . $user . '@' . $host . '</a>';
   
   $MailLetters = '';
   for ($i = 0; $i < strlen($MailLink); $i ++)
   {
   $l = substr($MailLink, $i, 1);
   if (strpos($MailLetters, $l) === false)
   {
       $p = rand(0, strlen($MailLetters));
       $MailLetters = substr($MailLetters, 0, $p) .
         $l . substr($MailLetters, $p, strlen($MailLetters));
   }
   }
   
   $MailLettersEnc = str_replace("\", "\\", $MailLetters);
   $MailLettersEnc = str_replace(""", "\"", $MailLettersEnc);

   $MailIndexes = '';
   for ($i = 0; $i < strlen($MailLink); $i ++)
   {
   $index = strpos($MailLetters, substr($MailLink, $i, 1));
   $index += 48;
   $MailIndexes .= chr($index);
   }
   $MailIndexes = str_replace("\", "\\", $MailIndexes);
   $MailIndexes = str_replace(""", "\"", $MailIndexes);
   
><SCRIPT LANGUAGE="javascript"><!--
ML="< = $MailLettersEnc  >";
MI="< = $MailIndexes  >";
OT="";
for(j=0;j<MI.length;j++){
OT+=ML.charAt(MI.charCodeAt(j)-48);
}document.write(OT);
// --></SCRIPT><NOSCRIPT>Sorry, you need javascript to view this email address</noscript>< PHP
}

function HideEmailWithName($name, $user, $host) {
   print $name . " &lt;";
   HideEmail($user, $host);
   print "&gt;";
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表