【问题标题】:Codeigniter - make email unreadable by botsCodeigniter - 使机器人无法读取电子邮件
【发布时间】:2016-09-05 13:33:39
【问题描述】:

codeigniter 中是否有一种方法可以使机器人无法读取电子邮件链接?如果没有,有人推荐一个体面的简单解决方案吗?

【问题讨论】:

  • 使用辅助函数将 html 编码的字符用于电子邮件地址中的字符。
  • 那是哪个助手?在电子邮件助手中看不到它
  • 不,我建议扩展电子邮件助手并添加此功能以将普通字符更改为 html 编码字符。

标签: codeigniter security email bots


【解决方案1】:

哎呀..

Codeigniter 在 URL 助手中有一个函数 safe_mailto()

【讨论】:

    【解决方案2】:

    有人告诉我这适用于谷歌搜索设备

    <!--googleoff: index-->
    <a href="mailto:abc@stackoverflow.com">my email</a>
    <!--googleon: index-->
    

    来源:http://perishablepress.com/tell-google-to-not-index-certain-parts-of-your-page/

    如有错误请告知。

    【讨论】:

    • 这种方法并不能保护您免受任何伤害。机器人不需要谷歌来接收电子邮件。
    【解决方案3】:

    这里可能没有任何完美的解决方案,尤其是如果您不想给用户带来不便。

    一种简单的方法(可以与 ajreal 提到的 google cmets 结合使用)是使用实体编码来混淆其来源。这将阻止简单的机器人。

    详情请看这里:http://www.wbwip.com/wbw/emailencoder.html

    【讨论】:

      【解决方案4】:

      CodeIgniter 在 URL Helper 类中有一个 safe_mailto() 方法,可以混淆 HTML 源代码中的电子邮件地址,而不影响最终用户。

      https://codeigniter.com/userguide3/helpers/url_helper.html#safe_mailto

      示例模板代码:

      <p>My e-mail address is <?php $this->load->helper('url'); echo safe_mailto('abc@gmail.com'); ?>.</p>
      

      示例 HTML 输出:

      <p>My e-mail address is <script type="text/javascript">
      //<![CDATA[
      var l=new Array();
      l[0] = '>';
      l[1] = 'a';
      l[2] = '/';
      l[3] = '<';
      l[4] = '|109';
      l[5] = '|111';
      l[6] = '|99';
      l[7] = '|46';
      l[8] = '|108';
      l[9] = '|105';
      l[10] = '|97';
      l[11] = '|109';
      l[12] = '|103';
      l[13] = '|64';
      l[14] = '|99';
      l[15] = '|98';
      l[16] = '|97';
      l[17] = '>';
      l[18] = '"';
      l[19] = '|109';
      l[20] = '|111';
      l[21] = '|99';
      l[22] = '|46';
      l[23] = '|108';
      l[24] = '|105';
      l[25] = '|97';
      l[26] = '|109';
      l[27] = '|103';
      l[28] = '|64';
      l[29] = '|99';
      l[30] = '|98';
      l[31] = '|97';
      l[32] = ':';
      l[33] = 'o';
      l[34] = 't';
      l[35] = 'l';
      l[36] = 'i';
      l[37] = 'a';
      l[38] = 'm';
      l[39] = '"';
      l[40] = '=';
      l[41] = 'f';
      l[42] = 'e';
      l[43] = 'r';
      l[44] = 'h';
      l[45] = ' ';
      l[46] = 'a';
      l[47] = '<';
      
      for (var i = l.length-1; i >= 0; i=i-1) {
          if (l[i].substring(0, 1) === '|') document.write("&#"+unescape(l[i].substring(1))+";");
          else document.write(unescape(l[i]));
      }
      //]]>
      </script>.</p>
      

      【讨论】:

        猜你喜欢
        • 2015-09-06
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 2013-06-15
        • 2012-10-31
        相关资源
        最近更新 更多