PHP 는 산식 인증 코드 와 한자 인증 코드 인 스 턴 스 를 실현 합 니 다.
간단 한 숫자 나 알파벳 인증 코드 는 쉽게 풀 리 는 것 을 잘 알 고 있 지만 산식 인증 코드 나 중국어 한자 인증 코드 는 쉽게 풀 리 지 않 기 때문에 인증 코드 를 사용 할 때 산식 인증 코드 나 중국어 한자 인증 코드 를 사용 하 는 것 을 권장 합 니 다.
다음은 제 가 쓴 두 가지 인증 코드 입 니 다.유용 한 친 구 는 참고 하 실 수 있 습 니 다.
1.산식 인증번호:
<?php
session_start();
header("Content-type: image/png");
$num1 = mt_rand(0,9);//
$num2 = mt_rand(1,9);//
$type_str = "+-*";//
$type = substr($type_str,rand(0,2),1);//
$change = mt_rand(1,3);
if($change==1){
$code = "$num1$type$num2=?";
$result = "$verifyCode=$num1$type$num2;";
eval($result);
$_SESSION['authnum_session'] = $verifyCode;
}elseif($change==2){
$result = "$verifyCode=$num1$type$num2;";
eval($result);
$code = $num1.$type."_=".$verifyCode;
$_SESSION['authnum_session'] = $num2;
}elseif($change==3){
$result = "$verifyCode=$num1$type$num2;";
eval($result);
$code = "_".$type.$num2."=".$verifyCode;
$_SESSION['authnum_session'] = $num1;
}
$im = imagecreate(68,28);
$black = imagecolorallocate($im, 0,0,0);
$white = imagecolorallocate($im, 255,255,255);
$gray = imagecolorallocate($im, 200,200,200);
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im,0,0,$white);
imagestring($im, 5, 10, 8, $code, $black);
for($i=0;$i<70;$i++) {
imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $black);
imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $red);
imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $gray);
}
imagepng($im);
imagedestroy($im);
?>
2.중국어 한자 인증 코드:
<?php
session_start();
$ch_str=" ";
$len = mb_strlen($ch_str,"utf-8");//
$str = array();
for($i=0;$i<4;$i++){
$pos = mt_rand(0,$len-5);//
$str[] = mb_substr($ch_str,$pos,1,"utf-8");
}
$authnum_session = implode("",$str);
$_SESSION['authnum_session'] = $authnum_session; // session
Header("Content-type: image/PNG");
//
$image_x=100;
$image_y=50;
$im = imagecreate($image_x,$image_y);
//
$bkg = ImageColorAllocate($im,255,255,255);
// , , window 。
$fnt = "simhei.ttf";
//
$white=ImageColorAllocate($im,234,185,95);
// ,
imagearc($im, 150, 8, 20, 20, 75, 170, $white);
imagearc($im, 180, 7,50, 30, 75, 175, $white);
// ,
imageline($im,20,20,180,30,$white);
imageline($im,20,18,170,50,$white);
imageline($im,25,50,80,50,$white);
//
$noise_num=3000;
$line_num=50;
//
$rectangle_color=imagecolorallocate($im,0xAA,0xAA,0xAA);
$noise_color=imagecolorallocate($im,0x00,0x00,0x00);
$font_color=imagecolorallocate($im,0x00,0x00,0x00);
for($i=0;$i<$noise_num;$i++)
{
// , , 。
//imagesetpixel($im,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color);
}
for($i=0;$i<$line_num;$i++)
{
$line_color=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
// ,
imageline($im,mt_rand(0,$image_x),mt_rand(0,$image_y),mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color);
}
for ($i=0;$i<4;$i++)
{
ImageTTFText($im, rand(18,20), rand(0,20), rand(($image_x/4)*$i+$image_x/100,($image_x/4)*$i+$image_x/8), rand($image_y/2+$image_y/10,$image_y/2+$image_y/5), $font_color, $fnt, $str[$i]);
}
ImagePNG($im);
ImageDestroy($im);
?>
글꼴 파일:simhei.rar 여 기 를 클릭 하 십시오본 사이트 다운로드.주의:
중국어 한자 인증 코드 를 단독으로 실행 한 후 session 를 가 져 오 면 인증 코드 와 session 내용 이 일치 하지 않 음 을 발견 할 수 있 습 니 다.그러나 img 태그 에서 src 속성 에서 이 중국어 한자 인증 코드 파일 을 참조 한 다음 session 을 가 져 옵 니 다.이 때 두 내용 은 일치 합 니 다.
관심 있 는 친 구 는 이것 에 대해 더욱 완벽 하 게 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.