| 
<?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 <[email protected]>
 * @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('[email protected]','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(10, 254);
 //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, $i, 2);
 //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;
 }
 }
 ?>
 |