php 使用GD库生成验证码

GD库是PHP进行图象操作一个很强大的库。

先在php.ini里增加一行引用:extension=php_gd2.dll

重启apache。做一个测试页 var_dump(gd_info());输出数据表明GD库引用成功。

表单auth.html

< html >
< head >
< meta  http-equiv ='Content-Type'  content ='text/html;  charset =utf-8' >
< title > 验证码 </ title >
</ head >
< body >
< h1 > 请输入验证码 </ h1 >
< form  action ="check_auth.php"  method ="post" >
   
< input  name ="auth"  type ="text" >
   
< img  src ="auth.php"  border ="0"   />
   
< input  type ="submit"  value ="提交" >
</ form >
</ body >
</ html >

 

生成验证码 auth.php

<? php
   
session_start ();
   
header ( " Content-type:image/png " );

   
$img_width = 100 ;
   
$img_height = 20 ;

   
srand ( microtime () * 100000 );
   
for ( $i = 0 ; $i < 4 ; $i ++ )
   {
        
$new_number .= dechex ( rand ( 0 , 15 ));
   }

   
$_SESSION [check_auth] = $new_number ;
   
$new_number = imageCreate( $img_width , $img_height ); // 创建图象
   ImageColorAllocate( $new_number , 255 , 255 , 255 );   // 设置背景色为白色

   
for ( $i = 0 ; $i < strlen ( $_SESSION [check_auth]); $i ++ )
   {
       
$font = mt_rand ( 3 , 5 );
       
$x = mt_rand ( 1 , 8 +   $img_width * $i / 4 ;
       
$y = mt_rand ( 1 , $img_height / 4 );
       
$color = imageColorAllocate( $new_number , mt_rand ( 0 , 100 ) , mt_rand ( 0 , 150 ) , mt_rand ( 0 , 200 )); // 设置字符颜色
       imageString( $new_number , $font , $x , $y , $_SESSION [check_auth][ $i ] , $color ); // 输出字符
   }

   ImagePng(
$new_number );
   ImageDestroy(
$new_number );
?>

 

提交页面 check_auth.php

<? php
   
session_start ();
   
$auth = $_POST [ ' auth ' ];

   
if ( empty ( $auth ))
   {
       
echo   ' 错误:验证码不能为空 ' ;
       
die ;
   }

   
if ( $auth == $_SESSION [ ' check_auth ' ])
   {
       
echo   ' 正确 ' ;
   }
   
else
   {
       
echo   ' 错误:验证码输入错误 ' ;
   }
?>

 

你可能感兴趣的:(PHP)