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 >
< 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 );
?>
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 ' 错误:验证码输入错误 ' ;
}
?>
session_start ();
$auth = $_POST [ ' auth ' ];
if ( empty ( $auth ))
{
echo ' 错误:验证码不能为空 ' ;
die ;
}
if ( $auth == $_SESSION [ ' check_auth ' ])
{
echo ' 正确 ' ;
}
else
{
echo ' 错误:验证码输入错误 ' ;
}
?>