Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to make two different functions from this php class?
    text
    copied!<p>I am having a classes which have function to make random text and captcha image based on that random text all in one function. What I want is to make them apart. I mean I want to have different function which will make random text, I would save it in cookie, and then the captcha making function should run. I want to have function like this:</p> <pre><code>$string = make_text(); //random text setcookie($string); // will write the cookie make_captcha($string); </code></pre> <p>following is the class from where we can make it:</p> <pre><code>class KCAPTCHA{ // generates keystring and image function KCAPTCHA(){ require(dirname(__FILE__).'/kcaptcha_config.php'); $fonts=array(); $fontsdir_absolute=dirname(__FILE__).'/'.$fontsdir; if ($handle = opendir($fontsdir_absolute)) { while (false !== ($file = readdir($handle))) { if (preg_match('/\.png$/i', $file)) { $fonts[]=$fontsdir_absolute.'/'.$file; } } closedir($handle); } $alphabet_length=strlen($alphabet); do{ // generating random keystring while(true){ $this-&gt;keystring=''; for($i=0;$i&lt;$length;$i++){ $this-&gt;keystring.=$allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)}; } if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/', $this-&gt;keystring)) break; } $font_file=$fonts[mt_rand(0, count($fonts)-1)]; $font=imagecreatefrompng($font_file); imagealphablending($font, true); $fontfile_width=imagesx($font); $fontfile_height=imagesy($font)-1; $font_metrics=array(); $symbol=0; $reading_symbol=false; // loading font for($i=0;$i&lt;$fontfile_width &amp;&amp; $symbol&lt;$alphabet_length;$i++){ $transparent = (imagecolorat($font, $i, 0) &gt;&gt; 24) == 127; if(!$reading_symbol &amp;&amp; !$transparent){ $font_metrics[$alphabet{$symbol}]=array('start'=&gt;$i); $reading_symbol=true; continue; } if($reading_symbol &amp;&amp; $transparent){ $font_metrics[$alphabet{$symbol}]['end']=$i; $reading_symbol=false; $symbol++; continue; } } $img=imagecreatetruecolor($width, $height); imagealphablending($img, true); $white=imagecolorallocate($img, 255, 255, 255); $black=imagecolorallocate($img, 0, 0, 0); imagefilledrectangle($img, 0, 0, $width-1, $height-1, $white); // draw text $x=1; $odd=mt_rand(0,1); if($odd==0) $odd=-1; for($i=0;$i&lt;$length;$i++){ $m=$font_metrics[$this-&gt;keystring{$i}]; $y=(($i%2)*$fluctuation_amplitude - $fluctuation_amplitude/2)*$odd + mt_rand(-round($fluctuation_amplitude/3), round($fluctuation_amplitude/3)) + ($height-$fontfile_height)/2; if($no_spaces){ $shift=0; if($i&gt;0){ $shift=10000; for($sy=3;$sy&lt;$fontfile_height-10;$sy+=1){ for($sx=$m['start']-1;$sx&lt;$m['end'];$sx+=1){ $rgb=imagecolorat($font, $sx, $sy); $opacity=$rgb&gt;&gt;24; if($opacity&lt;127){ $left=$sx-$m['start']+$x; $py=$sy+$y; if($py&gt;$height) break; for($px=min($left,$width-1);$px&gt;$left-200 &amp;&amp; $px&gt;=0;$px-=1){ $color=imagecolorat($img, $px, $py) &amp; 0xff; if($color+$opacity&lt;170){ // 170 - threshold if($shift&gt;$left-$px){ $shift=$left-$px; } break; } } break; } } } if($shift==10000){ $shift=mt_rand(4,6); } } }else{ $shift=1; } imagecopy($img, $font, $x-$shift, $y, $m['start'], 1, $m['end']-$m['start'], $fontfile_height); $x+=$m['end']-$m['start']-$shift; } }while($x&gt;=$width-10); // while not fit in canvas //noise $white=imagecolorallocate($font, 255, 255, 255); $black=imagecolorallocate($font, 0, 0, 0); for($i=0;$i&lt;(($height-30)*$x)*$white_noise_density;$i++){ imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $white); } for($i=0;$i&lt;(($height-30)*$x)*$black_noise_density;$i++){ imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $black); } $center=$x/2; // credits. To remove, see configuration file $img2=imagecreatetruecolor($width, $height+($show_credits?12:0)); $foreground=imagecolorallocate($img2, $foreground_color[0], $foreground_color[1], $foreground_color[2]); $background=imagecolorallocate($img2, $background_color[0], $background_color[1], $background_color[2]); imagefilledrectangle($img2, 0, 0, $width-1, $height-1, $background); imagefilledrectangle($img2, 0, $height, $width-1, $height+12, $foreground); $credits=empty($credits)?$_SERVER['HTTP_HOST']:$credits; imagestring($img2, 2, $width/2-imagefontwidth(2)*strlen($credits)/2, $height-2, $credits, $background); // periods $rand1=mt_rand(750000,1200000)/10000000; $rand2=mt_rand(750000,1200000)/10000000; $rand3=mt_rand(750000,1200000)/10000000; $rand4=mt_rand(750000,1200000)/10000000; // phases $rand5=mt_rand(0,31415926)/10000000; $rand6=mt_rand(0,31415926)/10000000; $rand7=mt_rand(0,31415926)/10000000; $rand8=mt_rand(0,31415926)/10000000; // amplitudes $rand9=mt_rand(330,420)/110; $rand10=mt_rand(330,450)/100; //wave distortion for($x=0;$x&lt;$width;$x++){ for($y=0;$y&lt;$height;$y++){ $sx=$x+(sin($x*$rand1+$rand5)+sin($y*$rand3+$rand6))*$rand9-$width/2+$center+1; $sy=$y+(sin($x*$rand2+$rand7)+sin($y*$rand4+$rand8))*$rand10; if($sx&lt;0 || $sy&lt;0 || $sx&gt;=$width-1 || $sy&gt;=$height-1){ continue; }else{ $color=imagecolorat($img, $sx, $sy) &amp; 0xFF; $color_x=imagecolorat($img, $sx+1, $sy) &amp; 0xFF; $color_y=imagecolorat($img, $sx, $sy+1) &amp; 0xFF; $color_xy=imagecolorat($img, $sx+1, $sy+1) &amp; 0xFF; } if($color==255 &amp;&amp; $color_x==255 &amp;&amp; $color_y==255 &amp;&amp; $color_xy==255){ continue; }else if($color==0 &amp;&amp; $color_x==0 &amp;&amp; $color_y==0 &amp;&amp; $color_xy==0){ $newred=$foreground_color[0]; $newgreen=$foreground_color[1]; $newblue=$foreground_color[2]; }else{ $frsx=$sx-floor($sx); $frsy=$sy-floor($sy); $frsx1=1-$frsx; $frsy1=1-$frsy; $newcolor=( $color*$frsx1*$frsy1+ $color_x*$frsx*$frsy1+ $color_y*$frsx1*$frsy+ $color_xy*$frsx*$frsy); if($newcolor&gt;255) $newcolor=255; $newcolor=$newcolor/255; $newcolor0=1-$newcolor; $newred=$newcolor0*$foreground_color[0]+$newcolor*$background_color[0]; $newgreen=$newcolor0*$foreground_color[1]+$newcolor*$background_color[1]; $newblue=$newcolor0*$foreground_color[2]+$newcolor*$background_color[2]; } imagesetpixel($img2, $x, $y, imagecolorallocate($img2, $newred, $newgreen, $newblue)); } } header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', FALSE); header('Pragma: no-cache'); if(function_exists("imagejpeg")){ header("Content-Type: image/jpeg"); imagejpeg($img2, null, $jpeg_quality); }else if(function_exists("imagegif")){ header("Content-Type: image/gif"); imagegif($img2); }else if(function_exists("imagepng")){ header("Content-Type: image/x-png"); imagepng($img2); } } </code></pre> <p>Thank You</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload