PHP Classes
Icontem

File: Mailto.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Debugged Interactive Designs  >  Mailto  >  Mailto.php  
File: Mailto.php
Role: Class source
Content type: text/plain
Description: The class source
Class: Mailto
Obfuscate e-mail links using ROT13
 

Contents

Class file image Download
<?php

/**
 * Project:     Mailto: A PHP class for obfuscating e-mail addresses from spam harvesters<br />
 * File:        Mailto.php<br />
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or any later version.<br /><br />
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.<br /><br />
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA<br /><br />
 *
 * Any modifications to the library should be indicated clearly in the source code
 * to inform users that the changes are not a part of the original software.<br /><br />
 *
 * @link http://www.debuggeddesigns.com/open-source-projects/mailto Mailto Link Obfuscator
 * @link http://www.debuggeddesigns.com/open-source-projects/mailto/code Download Latest Version
 * @link http://www.debuggeddesigns.com/open-source-projects/docs Online Documentation
 * @copyright 2008 Debugged Interactive Designs
 * @author debuggeddesigns <info@debuggeddesigns.com>
 * @version 0.0.2 (January 26, 2009)
 *
 */
 
 
/**
 * Mailto Link Obfuscator Class.
 *
 */
class Mailto {
    
    
    
/**
      * The encoding type used for encryption
      *
      * @access public
      * @var string
      */
    
var $encoding_type;
    
    
    
/**
      * Class constructor.<br />
      * Accepts a parameter 
      *
      * <code>
      *   <?php
      *   include 'Mailto.php';
      *   $mailto = new Mailto();
      *   //$mailto = new Mailto('cc8b');
      *   ?>
      * </code>
      *
      * @param string $encoding_type The encoding type used for encryption
      * 
      */
      
    
function Mailto($encoding_type 'rot13') {
        
$this->encoding_type $encoding_type;
    }
  
  
    
/**
      * Create an encrypted mailto link using the e-mail address and content passed as parameters.
      *
      * <code>
      *   <?php
      *   include 'Mailto.php';
      *   $mailto = new Mailto();
      *   //$mailto = new Mailto('cc8b'); 
      *   $mailto->createLink('info@debuggeddesigns.com','Debugged Interactive Designs');
      *   ?>
      * </code>
      *
      * @param string $addr  The e-mail address you want to hide from spam harvesters
      * @param string $content  The term that will be clickable
      * @return string  An encrypted anchor tag 
      */
   
    
function createLink($addr$content) {
        
        
//build this for people with js turned off
        
$noscript_link '<span style="unicode-bidi:bidi-override;direction:rtl;">'.strrev($content.' > '.$addr.' <').'</span>';
        
        
//if encoding type is rot13
        
if($this->encoding_type=='rot13'){
            
//build the mailto link
            
$unencrypted_link '<a href="mailto:'.$addr.'">'.$content.'</a>';
            
//put them together and encrypt
            
$encrypted_link '<script type="text/javascript">Rot13.write(\''.str_rot13($unencrypted_link).'\');</script><noscript>'.$noscript_link '</noscript>';
        }
        
        
//if encoding type is cc8b
        
else if($this->encoding_type=='cc8b'){
            
//get a random number from 10 to 254 
            
$key rand(10254);
            
//encrypt the email address
            
$encrypted_email $this->cc8b_encrypt($key,$addr);
            
//encrypt the link text
            
$encrypted_text $this->cc8b_encrypt($key,$content);
            
//put together the 
            
$encrypted_link "<script type=\"text/javascript\">\n" "Cc8b.write(\"" $key "." $encrypted_email "." $encrypted_text "\");\n" "</script>" "<noscript>" $noscript_link "</noscript>";
        }
        
        
//if encoding type is not recognized
        
else
        {
            
$encrypted_link $noscript_link;
        }
        return 
$encrypted_link;
    }
    
    
/**
      * 
      *
      * @access private
      * @param string $key The random key used to encrypt
      * @param string $plain_text The text to encrypt
      * @return string  Encrypted ascii code from the original plain text
      */
    
private function cc8b_encrypt($key,$plain_text)
    {
        
$cipher_text '';
        
//turn each character in the string into its hexidecimal ascii value
        
$ascii_plain_text = (string) bin2hex($plain_text);
        
//get each acii octet 
        
for ($i 0$i <= strlen($ascii_plain_text) - 2$i += 2) {
            
//get next octet
            
$temp substr($ascii_plain_text$i2);
            
//turn it to decimal
            
$temp hexdec($temp);

            
//add key value to temp
            
$temp += $key;
            
//mod temp by 255 so its value is at most FF
            
$temp $temp 255;
            
            
//concatinate the hex value to ecrypted email
            //check to make sure we have 2 digits
            //if its 1 digit place a leading 0 infront of it (0 -> F)
            
if (strlen((string) dechex($temp)) < 2) {
                
$cipher_text .= '0' . (string) dechex($temp);
            }
            
//else just concate the 2 digit string
            
else {
                
$cipher_text .= (string) dechex($temp);
            }
        }
        
        return 
$cipher_text;        
    }
}
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products