php 数学运算验证码实现代码

复制代码 代码如下:

  <?php

  //-------------------------------------

  // 文件说明:数学运算验证码

  // 文件作者:Jesse Lee

  // 最后更新:2008-09-07

  //-------------------------------------

  session_start();

  $sessionvar = 'vdcode'; //Session变量名称

  $width = 150; //图像宽度

  $height = 20; //图像高度

  $operator = '+-*'; //运算符

  $code = array();

  $code[] = mt_rand(1,9);

  $code[] = $operator{mt_rand(0,2)};

  $code[] = mt_rand(1,9);

  $code[] = $operator{mt_rand(0,2)};

  $code[] = mt_rand(1,9);

  $codestr = implode('',$code);

  eval("\$result = ".implode('',$code).";");

  $code[] = '=';

  $_SESSION[$sessionvar] = $result;

  $img = ImageCreate($width,$height);

  ImageColorAllocate($img, mt_rand(230,250), mt_rand(230,250), mt_rand(230,250));

  $color = ImageColorAllocate($img, 0, 0, 0);

  $offset = 0;

  foreach ($code as $char) {

  $offset += 20;

  $txtcolor = ImageColorAllocate($img, mt_rand(0,255), mt_rand(0,150), mt_rand(0,255));

  ImageChar($img, mt_rand(3,5), $offset, mt_rand(1,5), $char, $txtcolor);

  }

  for ($i=0; $i<100; $i++) {

  $pxcolor = ImageColorAllocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));

  ImageSetPixel($img, mt_rand(0,$width), mt_rand(0,$height), $pxcolor);

  }

  header('Content-type: image/png');

  ImagePng($img);

  ?>