PHP実装変色検証コード例

1509 ワード

 
  
header("Content-type: image/png,charset='utf-8'");
$im = imagecreatetruecolor(400, 30);
//
$white = imagecolorallocate($im, 255, 255, 255);
//
$red = imagecolorallocate($im, 255, 0, 0);
//
$black=imagecolorallocate($im, 0, 0, 0);
//
$green=imagecolorallocate($im, 0, 255, 0);
//
$blue=imagecolorallocate($im, 0, 0, 255);
$color_arr=array($green,$blue,$red);
$color=array_rand($color_arr);
$text = ' ';
$textlen=iconv_strlen($text,'utf-8');//
// ,
$p1=rand(1,$textlen)-1;
while(($p2=rand(1,$textlen)-1)==$p1);
$w1=iconv_substr($text,$p1,1,'utf-8');
$w2=iconv_substr($text,$p1,1,'utf-8');
// (PS:T php Q �n:276167802, :csl)
$font = 'simkai.ttf';
imagefilledrectangle($im, 0, 0, 399, 29, $white);
for($i=0;$i{
if($i==$p1||$i==$p2)
{
imagettftext($im, 15, 0, 20*($i-1)+20, 20, $color_arr[$color], $font, iconv_substr($text,$i,1,'utf-8'));
}
else
{
imagettftext($im, 15, 0, 20*($i-1)+20, 20, $black, $font, iconv_substr($text,$i,1,'utf-8'));
}
}
imagepng($im);
imagedestroy($im);
?>

認証コードの文字は同じ色ではありません.ユーザーに指定した色の認証コードを入力させると、セキュリティが向上します.