③PHP는 GD 라이브러리를 사용하여 그래픽 검증 코드를 구현합니다.

프로젝트 코드 소스 : https://github.com/LVQINGDONG/learn_php/ 다운로드 할 PHPGD_numberIMG 브랜치를 찾습니다.

1. PHP GD 라이브러리 설치 및 구성

php 서버 구성 폴더에서 php.ini를 찾아 파일을 열고 "; extension = php_gd2.dll"코드를 찾은 다음 ";"앞의 세미콜론을 제거합니다.

여기서는 wamp 서버를 사용하고 php.ini 파일은 wamp → bin → php → php7.0.4 디렉토리에 있습니다.

구성이 완료된 후 구성이 성공했는지 테스트합니다.

새 PHP 파일을 만들고 테스트 할 코드를 입력합니다.

// GD 라이브러리를 사용할 수 있는지 테스트
 if (extension_loaded ( 'gd' )) {
 echo "can be used" ;
 foreach (gd_info () as $ cate => $ value )
 echo " $ cate : $ value <br> " ;
 }
 else {
 echo "gd를 사용할 수 없음 " ;
 }                    
성공하면 브라우저에 다음이 표시됩니다.

2. PHP GD 라이브러리 사용 지침

PHP GD 라이브러리를 사용하여 이미지를 만드는 네 단계가 있습니다.

① 캔버스를 만듭니다. 모든 그리기는 배경 레이어에서 완료해야하며 그래픽의 후속 처리는이 배경 레이어를 기반으로합니다.

원리 : 캔버스는 실제로 이미지 정보를 저장하기 위해 메모리에 임시 메모리 영역을 엽니 다.

② 이미지를 그립니다. 이전 캔버스에서 생성 된 배경 레이어를 기반으로 php 이미지 기능을 사용하여 이미지 색상을 설정하고 그래픽을 그립니다.

③ 출력 이미지. 이미지를 그린 후에는 이미지를 특정 형식으로 서버에 저장하거나 표시 할 페이지에 직접 출력해야합니다.

④ 자원을 공개한다. 이미지가 출력 된 후에는 메모리에 저장된 캔버스 정보 영역이 존재하지 않으며,이 영역이 차지하는 메모리 리소스를 제때 지워야합니다.

셋, 그래픽 검증 코드를 실현

① image_create1.php 입력 코드를 만들고 먼저 PHP GD 라이브러리를 사용하여 출력을 시도하고 코드의 특정 기능에 대한 주석을 참조하십시오.

<? php
 / **
 * 작성자 : PhpStorm.
 * 사용자 : lenovo
 * 날짜 : 2018/6/3
 * 시간 : 20:44
 * /
 GD 라이브러리 사용 가능 여부 테스트
 // if (extension_loaded ( 'gd')) {
 / / echo "사용 가능";
 // foreach (gd_info () as $ cate => $ value)
 // echo "$ cate : $ value <br>";
 //}
 // else {
 // echo " gd ";
 //}
 header ( "Content-type : image / png " ) ; // 생성 된 그림의 형식 설정
 $ im = imagecreate ( 120 , 30 ) ;    // 새 캔버스
 $ bg = imagecolorallocate ( $ 메신저 , 0 ,0 ,
255 ) ;   // 배경 설정
 $ sg = imagecolorallocate ( $ im , 255 , 255 , 255 ) ;   // 전경 설정
 imagefill ( $ im , 120 , 30 , $ bg ) ;   // 배경 이미지 문자열 채우기
 ( $ im , 7 , 8 , 5 , "image create" , $ sg ) ;   // fill string
 imagepng ( $ im ) ;   // output image
 imagedestroy ( $ im ) ;// 이미지 리소스 삭제


효과를 보려면 브라우저를 엽니 다.

② 사용 방법을 알고 나서 image_create2.php를 생성하고 인증 코드를 생성하면 다음과 같은 코드가 생성됩니다.

<? php
 / **
 * PhpStorm 제작.
* 사용자 : lenovo
 * 날짜 : 2018/6/3
 * 시간 : 21:08
 * /
 header ( "Content-type : image / png" ) ;
$ im = imagecreate ( 80 , 20 ) ;
$ bg = imagecolorallocate ( $ im , 255 , 255 , 0 ) ;
$ sg = imagecolorallocate ( $ im , 0 , 0 , 0 ) ;
$ ag = imagecolorallocate ( $ im , 231 ,104,50);
imagefill($im,120,30,$bg);
$str="qwertyuipasdfghjklxcvbnm123456789QWERTYUIPASDFGHJKLXCVBNM";
$len=strlen($str)-1;
for ($i=0;$i<4;$i++){
    $str1=$str[mt_rand(0,$len)];
    imagechar($im,7,16*$i+7,2,$str1,$sg);
}
for($i=0;$i<100;$i++){
    imagesetpixel($im,rand()%80,rand()%20,$ag);
}
imagepng($im);
imagedestroy($im);

打开浏览器看效果:

到这里PHP GD验证码就做好了。

---------------------------------------------------------------------------------------------------

用到的函数及其功能:

  



추천

출처blog.csdn.net/li__po/article/details/80560603