Login   Register  
PHP Classes
elePHPant
Icontem

File: crypt.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Stanga Razvan  >  Anti-Spam  >  crypt.class.php  >  Download  
File: crypt.class.php
Role: Auxiliary script
Content type: text/plain
Description: Crypt class by Michael Dransfield <mike@blueroot.net> for Advanced Anti-Spam
Class: Anti-Spam
Protection against e-mail address harvesting
Author: By
Last change:
Date: 2003-04-22 21:15
Size: 5,019 bytes
 

Contents

Class file image Download
<?php 
//
// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license,      |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Authors: Michael Dransfield <mike@blueroot.net>                      |
// +----------------------------------------------------------------------+
//


/**
 * PEAR::HTML_Crypt
 *
 * The PEAR::HTML_Crypt provides methods to encrypt text, which 
 * can be later be decrypted using JavaScript on the client side
 *
 * This is very useful to prevent spam robots collecting email
 * addresses from your site, included is a method to add mailto 
 * links to the text being generated
 * 
 *  a basic example to encrypt an email address
 *  $c = new HTML_Crypt('yourname@emailaddress.com', 8);
 *  $c->addMailTo();
 *  $c->output();
 *
 * @author  Michael Dransfield <mike@blueroot.net>
 * @package HTML_Crypt
 * @version $Revision: 1.1 $
 */
 
 
class HTML_Crypt{

    
// {{{ properties

    /**
     * The unencrypted text
     *
     * @access public
     * @var    string
     * @see    setText()
     */
     
     
var $text '';
     
    
/**
     * The full javascript to be sent to the browser
     *
     * @access public
     * @var    string
     * @see    getScript()
     */
     
     
var $script '';
     
     
    
/**
     * The text encrypted - without any js
     *
     * @access public
     * @var    string
     * @see    cyrptText
     */
     
     
var $cryptString '';
     
     
    
/**
     * The number to offset the text by
     *
     * @access public
     * @var    int
     */
     
     
var $offset;
     
    
// }}}
    // {{{ HTML_Crypt()

    /**
     * Constructor
     *
     * @access public
     * @param string $text  The text to encrypt
     * @param int $offset  The offset used to encrypt/decrypt
     */
     
    
function HTML_Crypt($text=''$offset=3){
        
$this->offset $offset;
        
$this->text $text;
        
$this->script '';
    }
    
    
// }}}
    // {{{ setText()

    /**
     * Set name of the current realm
     *
     * @access public
     * @param  string $text  The text to be encrypted
     */
    
function setText($text){
        
$this->text $text;
    }
    
    
// }}}
    // {{{ addMailTo()

    /**
     * Turns the text into a mailto link (make sure 
     * the text only contains an email)
     *
     * @access public
     */
    
function addMailTo(){
    
$email $this->text;
    
$this->text '<a href="mailto:'.$email.'">'.$email.'</a>';
    }
    
    
// }}}
    // {{{ cryptText()

    /**
     * Encrypts the text
     *
     * @access private
     */
    
function cryptText(){
        
$length strlen($this->text);        
        for (
$i=0;$i<$length;$i++)
        {
        
$current_chr substr($this->text$i1);
        
$inter ord($current_chr)+$this->offset;
        
$enc_string .= chr($inter);
        }
        
$this->cryptString $enc_string;
    }
    
    
// }}}
    // {{{ getScript()

    /**
     * Set name of the current realm
     *
     * @access public
     * @return string $script The javascript generated
     */
    
function getScript(){
    if (
$this->cryptString=='' && $this->text != ''){
    
$this->cryptText();
    }
            
// get a random string to use as a function name
            
srand ((float) microtime() * 10000000);
            
$letters = array('a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''r''s''t''u''v''w''x''y''z');
            
$rnd $letters[array_rand($letters)] . md5(time());
            
// the actual js (in one line to confuse)
            
$script "<script language=\"JavaScript\" type=\"text/JavaScript\">var a,s,n;function $rnd(s){r='';for(i=0;i<s.length;i++){n=s.charCodeAt(i);if(n>=8364){n=128;}r+=String.fromCharCode(n-".$this->offset.");}return r;}a='".$this->cryptString."';document.write ($rnd(a));</script>";
            
$this->script $script;
            return 
$script;
    }
    
    
// }}}
    // {{{ output()

    /**
     * Outputs the full JS to the browser
     *
     * @access public
     */
    
function output(){
        if (
$this->script == ''){
        
$this->getScript();
        }
        return 
$this->script;
    }
}
    
    
?>