이미지 처리 기술을 사용하여 인증 코드 생성(PHP 그래픽 및 이미지의 일반적인 응용 튜토리얼 3)
인증 코드 기능을 구현하는 방법에는 여러 가지가 있습니다. , 디지털 인증 코드, 그래픽 인증 코드, 텍스트 인증 코드 등 포함 본 절에서는 영상처리 기술을 이용하여 생성된 인증코드를 소개합니다.
이전 기사 "GD2 함수를 사용하여 그림에 텍스트를 추가하는 방법(PHP 그래픽 및 이미지의 일반적인 응용 튜토리얼 2)"에서 그림에 텍스트를 추가하는 방법을 소개했습니다. , 그럼 오늘은 이미지 기술을 사용하여 인증 코드를 생성하는 방법을 계속해서 소개하겠습니다.
다음은 이미지 처리 기술을 사용하여 인증 코드를 생성하는 방법을 소개합니다. 구체적인 코드는 다음과 같습니다.
<?php session_start(); // 告诉浏览器,这个文件,是一个png图片 header('Content-type: image/png'); // 创建图像 $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); ?>
출력 결과는
위는 가장 간단한 인증코드 생성 예시입니다. 아래에서는 일상적인 개발에서 중요한 예시를 소개합니다. 구체적인 단계는 다음과 같습니다.
(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('验证码不能为空');window.location. href='index.php';</script>"; } //如果用户输入验证码的值与随机生成的验证码的值相等,则弹出登录成功提示 if($checks==$_SESSION[check_checks]){ echo "<script> alert('用户登录成功!');window.location. href='index.php';</script>"; }else{ //否则弹出验证码不正确的提示信息 echo "<script> alert('您输入的验证码不正确!');window. location.href='index.php';</script>"; } } ?>
자신의 컴퓨터에서 시도해 볼 수 있습니다. 여기에서는 사진을 게시하지 않겠습니다. 확인 코드를 생성하기 위한 이미지 처리 기술을 소개하는 것은 여기까지입니다. 아래에서는 "GD2 기능을 사용하여 기하학적 도형을 그리는 방법(PHP 그래픽 및 이미지 일반적인 응용 프로그램)을 소개합니다. 튜토리얼 4)"!
위 내용은 이미지 처리 기술을 사용하여 인증 코드 생성(PHP 그래픽 이미지의 일반적인 응용 튜토리얼 3)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!