>백엔드 개발 >PHP 튜토리얼 >이미지 처리 기술을 사용하여 인증 코드 생성(PHP 그래픽 이미지의 일반적인 응용 튜토리얼 3)

이미지 처리 기술을 사용하여 인증 코드 생성(PHP 그래픽 이미지의 일반적인 응용 튜토리얼 3)

黄舟
黄舟원래의
2017-04-24 17:25:012160검색

이미지 처리 기술을 사용하여 인증 코드 생성(PHP 그래픽 및 이미지의 일반적인 응용 튜토리얼 3)

인증 코드 기능을 구현하는 방법에는 여러 가지가 있습니다. , 디지털 인증 코드, 그래픽 인증 코드, 텍스트 인증 코드 등 포함 본 절에서는 영상처리 기술을 이용하여 생성된 인증코드를 소개합니다.

이전 기사 "GD2 함수를 사용하여 그림에 텍스트를 추가하는 방법(PHP 그래픽 및 이미지의 일반적인 응용 튜토리얼 2)"에서 그림에 텍스트를 추가하는 방법을 소개했습니다. , 그럼 오늘은 이미지 기술을 사용하여 인증 코드를 생성하는 방법을 계속해서 소개하겠습니다.

다음은 이미지 처리 기술을 사용하여 인증 코드를 생성하는 방법을 소개합니다. 구체적인 코드는 다음과 같습니다.

<?php
session_start();
// 告诉浏览器,这个文件,是一个png图片
header(&#39;Content-type: image/png&#39;);
// 创建图像
$image = imagecreatetruecolor(50,20);
// 填充颜色 - ps里的点击画布填色
imagefill($image,0,0,imagecolorallocate($image,149,188,205));
//加入干扰象素 , 循环100次
for ($i = 0; $i < 100; $i++) {
    $randcolor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
//画像素点函数
    imagesetpixel($image, rand(1, 55), rand(1,18), $randcolor);
}
// 设置颜色
$red = imagecolorallocate($image, 255,255,255);
$code = "";
for( $i=1; $i <=4; $i++){
    $rand_code = rand(1,9); // 生成1-9的随机数
    imagestring($image, 5, 5+($i-1)*10, 2, $rand_code,$red); // 将文字写入图片
    $code .= $rand_code;
}
// 生成图片
imagepng($image);
// 销毁图片, 释放内存
imagedestroy($image);
?>

출력 결과는

이미지 처리 기술을 사용하여 인증 코드 생성(PHP 그래픽 이미지의 일반적인 응용 튜토리얼 3)

위는 가장 간단한 인증코드 생성 예시입니다. 아래에서는 일상적인 개발에서 중요한 예시를 소개합니다. 구체적인 단계는 다음과 같습니다.

(1) checks.php 파일을 생성하고 GD2 함수를 사용하여 파일에 4자리 인증코드를 생성한 후 생성된 인증코드를 세션 변수에 저장합니다. 코드는 다음과 같습니다.

<?php
session_start();          //初始化Session变量
header("content-type:image/png");        //设置创建图像的格式
$image_width=70;                          //设置图像宽度
$image_height=18;                          //设置图像高度
srand(microtime()*100000);                //设置随机数的种子
for($i=0;$i<4;$i++){                      //循环输出一个4位的随机数
    $new_number.=dechex(rand(0,15));
}
$_SESSION[check_checks]=$new_number;       //将获取的随机数验
证码写入到Session变量中
$num_image=imagecreate($image_width,$image_height);    //创建一个画布
imagecolorallocate($num_image,255,255,255);         //设置画布的颜色
for($i=0;$i<strlen($_SESSION[check_checks]);$i++){     //循环读取
    Session变量中的验证码
$font=mt_rand(3,5);                                //设置随机的字体
$x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标
$y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标
$color=imagecolorallocate($num_image,mt_rand(0,100),
    mt_rand(0,150),mt_rand(0,200)); //设置字符的颜色
imagestring($num_image,$font,$x,$y,$_SESSION
[check_checks][$i],$color);   //水平输出字符
}
imagepng($num_image);              //生成PNG格式的图像
imagedestroy($num_image);          //释放图像资源
?>

위 코드에서 인증코드 출력시 각 문자의 위치, 색상, 폰트 등을 난수를 통해 얻어오며, 브라우저에서 다양한 인증이 생성될 수 있는 코드입니다. 또한 악의적인 사용자가 웹사이트 시스템을 공격하는 것을 방지합니다.

(2) 사용자 로그인 양식을 생성하고 checks.php 파일을 호출하여 양식 페이지에 이미지 내용을 출력하고 양식 정보를 제출한 후 if 조건문을 사용하여 입력된 검증 여부를 확인합니다. 코드가 정확합니다. 사용자가 입력한 인증코드가 무작위로 생성된 인증코드와 동일할 경우 "사용자 로그인 성공!" 메시지가 표시되며, 코드는 다음과 같습니다:

<?php
session_start();           //初始化Session
if($_POST["Submit"]!=""){
    $checks=$_POST["checks"];        //获取验证码文本框的值
    if($checks==""){           //如果验证码的值为空,则弹出提示信息
        echo "<script> alert(&#39;验证码不能为空&#39;);window.location.
href=&#39;index.php&#39;;</script>";
    }
//如果用户输入验证码的值与随机生成的验证码的值相等,则弹出登录成功提示
    if($checks==$_SESSION[check_checks]){
        echo "<script> alert(&#39;用户登录成功!&#39;);window.location.
href=&#39;index.php&#39;;</script>";
    }else{            //否则弹出验证码不正确的提示信息
        echo "<script> alert(&#39;您输入的验证码不正确!&#39;);window.
location.href=&#39;index.php&#39;;</script>";
    }
}
?>

자신의 컴퓨터에서 시도해 볼 수 있습니다. 여기에서는 사진을 게시하지 않겠습니다. 확인 코드를 생성하기 위한 이미지 처리 기술을 소개하는 것은 여기까지입니다. 아래에서는 "GD2 기능을 사용하여 기하학적 도형을 그리는 방법(PHP 그래픽 및 이미지 일반적인 응용 프로그램)을 소개합니다. 튜토리얼 4)"!

위 내용은 이미지 처리 기술을 사용하여 인증 코드 생성(PHP 그래픽 이미지의 일반적인 응용 튜토리얼 3)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.