一个简单的PHP验证码实现代码

时间:2022-08-25 16:55:56

实现代码:

  1. <?php 
  2.  //将验证码保存到session里,供全局使用 
  3.  session_start(); 
  4.  $nums = ""
  5.  for($i=0;$i<4;$i++){ 
  6.   //产生随机数并转换成十六进制 
  7.   $nums.=dechex(mt_rand(0,15)); 
  8.  } 
  9.  //将验证码写入session 
  10.  $_SESSION['code']=$nums; 
  11.  
  12.  //设置验证码长和宽 
  13.  $_width = 60; 
  14.  $_height = 20; 
  15.  //创建一张图片 
  16.  $_img = imagecreatetruecolor($_width,$_height); 
  17.  //创建一个白色 
  18.  $_white = imagecolorallocate($_img,220,250,250); 
  19.  //填充背景 
  20.  imagefill($_img,0,0,$_white); 
  21.  
  22.  //随机画6条线条 
  23.  for($i=0;$i<6;$i++){ 
  24.   $_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); 
  25.   imageline($_img,mt_rand(0,$_width),mt_rand(0,$_width),mt_rand(0,$_width),mt_rand(0,$_width),$_rnd_color); 
  26.  } 
  27.  
  28.  //随机画出雪花 
  29.  for($i=0;$i<60;$i++){ 
  30.   imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),"*",imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255))); 
  31.  } 
  32.  
  33.  //输出验证码 
  34.  for($i=0;$i<strlen($_SESSION['code']);$i++){ 
  35.   imagestring($_img,mt_rand(6,10),$i*$_width/4+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],imagecolorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200))); 
  36.  } 
  37.  
  38.  //输出和销毁 
  39.  header("Content-Type:image/png"); 
  40.  imagepng($_img); 
  41.  imagedestroy($_img); 
  42. ?>