간편인증코드는 실제로 이미지에 몇 글자만 출력하는데, 이는 이미지스트링 기능을 통해 얻을 수 있습니다.
그러나 처리 측면에서 인증코드를 보다 안전하게 만들고 다른 프로그램이 이를 자동으로 인식하는 것을 방지하기 위해 인증코드에 대해 일부 간섭 처리를 수행해야 하는 경우가 많습니다. 간섭선 세그먼트가 그려지고 출력 문자가 기울어지며 비틀기 및 기타 작업이 수행됩니다.
imagesetpixel을 사용하여 점을 그려 노이즈 간섭을 얻을 수 있지만 한 점만 그리는 것은 거의 쓸모가 없으므로 루프를 사용하여 무작위로 그리는 경우가 많습니다.
<br>例子:
$img = imagecreatetruecolor(100, 40);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolorallocate($img, 0x00 , 0xFF, 0x00);
$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img,0,0,$white);
//임의 인증 코드 생성
$code = '';
for($i = 0; $i < 4; $i++) { //4자리 인증 코드
$code .= rand(0, 9) ;
}
imagestring($img, 5, 10, 10, $code, $black);
//잡음 간섭 추가
for($i = 0;$i<50;$i++) {
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black) //imagesetpixel — 단일 픽셀 그리기, 구문: bool imagesetpixel ( resources $image , int $x , int $y , int $color )
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green);
}
//인증 코드 출력
header("content-type: image/png");
imagepng($img); //이미지를 PNG 형식으로 브라우저나 파일에 출력합니다.
imagedestroy($img); //이미지 처리가 완료된 후 imagedestroy() 명령을 사용하여 이미지 리소스를 파기합니다. 메모리 해제. 이 기능은 필수는 아니지만 사용하는 것이 좋습니다.
?>
<br><br><br>