Source for file AntiSpam.class.php
Documentation is available at AntiSpam.class.php 
 * This work is hereby released into the Public Domain.  
 * To view a copy of the public domain dedication,  
 * visit http://creativecommons.org/licenses/publicdomain/ or send a letter to  
 * Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.  
require_once dirname(__FILE__ ). "/Image.class.php";  
 * String printed on the images are case insensitive.  
 * @package linea21.externals  
     * Construct a new awAntiSpam image  
     * @param string $string A string to display  
        $this->string = (string) $string;  
     * @param int $length String length  
     * @return string String created  
        $letters =  'aAbBCDeEFgGhHJKLmMnNpPqQRsStTuVwWXYZz2345679';  
        for($i =  0; $i <  $length; $i++ ) {  
     * @param int $nois Noise intensity (from 0 to 10)  
        $this->noise = (int) $noise;  
     * Save string value in session  
     * You can use check() to verify the value later  
     * @param string $qName A name that identify the anti-spam image  
        $session =  'artichow_'.(string) $qName;  
        $_SESSION[$session] =  $this->string;  
     * @param string $qName A name that identify the anti-spam image  
     * @param string $value User-defined value  
     * @param bool $case TRUE for case insensitive check, FALSE for case sensitive check ? (default to TRUE)  
     * @return bool TRUE if the value is correct, FALSE otherwise  
     function check($qName, $value, $case =  TRUE) {  
        $session =  'artichow_'.(string) $qName;  
                ($_SESSION[$session] === (string) $value)  
        $sizes =  array(12, 12.5, 13, 13.5, 14, 15, 16, 17, 18, 19);  
        // Set up a temporary driver to allow font size calculations...  
                $fonts[$fontKey], $sizes[$sizeKey]  
            $widths[] =  $driver->getTextWidth($text);  
            $heights[] =  $driver->getTextHeight($text);  
        // ... and get rid of it.  
        $width =  array_sum($widths);  
        $totalWidth =  $width +  10 +  count($texts) *  10;  
        $totalHeight =  $height +  20;  
        $this->setSize($totalWidth, $totalHeight);  
        for($i =  0; $i <  strlen($this->string); $i++ ) {  
                    5 +  array_sum(array_slice($widths, 0, $i)) +  $widths[$i] /  2 +  $i *  10,  
                    10 +  ($height -  $heights[$i]) /  2  
        $points =  $this->noise *  30;  
        for($i =  0; $i <  $points; $i++ ) {  
        // Start session if needed  
 
 
        
       |