A-A+

换上新验证码,附代码

2008年11月25日 PHP 暂无评论 阅读 1 次

最近博客老是被垃圾评论骚扰。之前的验证码开启后又有群众反映评论不了。前些天在小O的博客上看到他用了简单数学运算的验证码,于是自己也写了个。刚刚换了上来,大家看看如何,欢迎提出建议。

代码:

PHP代码
  1. <?php   
  2. //-------------------------------------   
  3. // 文件说明:数学运算验证码   
  4. // 文件作者:Jesse Lee   
  5. // 作者主页:http://www.lisijie.com.cn   
  6. // 最后更新:2008-09-07   
  7. //-------------------------------------   
  8.   
  9. session_start();   
  10.   
  11. $sessionvar = 'vdcode'//Session变量名称   
  12. $width = 150;   //图像宽度   
  13. $height = 20;   //图像高度   
  14.   
  15. $operator = '+-*';  //运算符   
  16.   
  17. $code = array();   
  18. $code[] = mt_rand(1,9);   
  19. $code[] = $operator{mt_rand(0,2)};   
  20. $code[] = mt_rand(1,9);   
  21. $code[] = $operator{mt_rand(0,2)};   
  22. $code[] = mt_rand(1,9);   
  23. $codestr = implode('',$code);   
  24. eval("$result = ".implode('',$code).";");   
  25. $code[] = '=';   
  26.   
  27. $_SESSION[$sessionvar] = $result;   
  28.   
  29. $img = ImageCreate($width,$height);   
  30. ImageColorAllocate($img, mt_rand(230,250), mt_rand(230,250), mt_rand(230,250));   
  31. $color = ImageColorAllocate($img, 0, 0, 0);   
  32.   
  33. $offset = 0;   
  34. foreach ($code as $char) {   
  35.     $offset += 20;   
  36.     $txtcolor = ImageColorAllocate($img, mt_rand(0,255), mt_rand(0,150), mt_rand(0,255));   
  37.     ImageChar($img, mt_rand(3,5), $offset, mt_rand(1,5), $char$txtcolor);   
  38. }   
  39.   
  40. for ($i=0; $i<100; $i++) {     
  41.     $pxcolor = ImageColorAllocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));   
  42.     ImageSetPixel($img, mt_rand(0,$width), mt_rand(0,$height), $pxcolor);   
  43. }   
  44.   
  45. header('Content-type: image/png');   
  46. ImagePng($img);   
  47. ?>  

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录