Click here to Skip to main content
12,892,015 members (50,791 online)
Rate this:
Please Sign up or sign in to vote.
See more: PHP
Hello everyone this is my first post here so please excuse me if I forget something or don't follow some standard. That being cleared I saw this code for generating captcha somewhere and I modified it to get random color for each character and some other small fixes, here is the code:
header("Content-type: image/png");
function ran_string($length=10){
        $pattern = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        for($i=0; $i<$length; $i++){
            $string .= $pattern[rand(0,61)];
return $string;
function captcha()
$im = imagecreate(100, 50);
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color =array( imagecolorallocate($im, 255, 0, 0),imagecolorallocate($im, 0, 255, 0),imagecolorallocate($im, 0, 0, 255),imagecolorallocate($im, 255, 255, 255));
imagestring($im, 10, $x, 5,  $string[$i], $text_color[rand(0,3)]);
imagestring($im, 10, 10, 5,  $string[0], $text_color[rand(0,3)]);
imagestring($im, 10, 20, 5,  $string[1], $text_color[rand(0,3)]);
imagestring($im, 10, 30, 5,  $string[2], $text_color[rand(0,3)]);
imagestring($im, 10, 40, 5,  $string[3], $text_color[rand(0,3)]);
imagestring($im, 10, 50, 5,  $string[4], $text_color[rand(0,3)]);
imagestring($im, 10, 60, 5,  $string[5], $text_color[rand(0,3)]);*/

But the output for the above is just one character and if I remove the "for loop" and uncomment the commented portion I get the desired result, please can someone help, I am sorry if this is a n00b question!!!
It was quite simple and silly of me, I used count($string) where I should have used strlen() anyways the correct version is this:
        imagechar($im, $font, $x, 5,  $string[$i], $text_color[rand(0,3)]);
Posted 4-Oct-12 14:18pm
Updated 4-Oct-12 15:01pm
Scott Clayton 5-Oct-12 23:26pm
Just as a side note, randomizing colors does very little to thwart automated CAPTCHA solvers. In fact it would take only one line to bypass using my CBL scripting language:

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170424.1 | Last Updated 4 Oct 2012
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100