>  기사  >  백엔드 개발  >  계산 확인 코드 및 한자 확인 코드의 PHP 구현 예제_php 기술

계산 확인 코드 및 한자 확인 코드의 PHP 구현 예제_php 기술

WBOY
WBOY원래의
2016-05-16 20:21:40914검색

PHP 웹사이트 개발에서 인증코드는 악의적인 제출로부터 우리의 양식을 효과적으로 보호할 수 있지만, 산술 인증코드나 한자 인증코드를 사용하지 않고 간단한 알파벳 또는 숫자 인증코드만 사용하는 경우 인증코드 솔루션은 다음과 같습니다. 정말 안전해?

간단한 숫자나 문자 인증코드는 쉽게 해독된다는 사실은 다들 아시겠지만, 산술 인증코드나 한자 인증코드는 쉽게 해독되지 않기 때문에 인증코드 사용 시에는 산술 인증코드나 중국어를 사용하는 것을 권장합니다. 문자 인증 코드.

다음은 제가 작성한 인증코드 2개입니다. 도움이 되실 분들은 참고하시면 됩니다.

1. 계산인증코드 :

코드 복사 코드는 다음과 같습니다.

session_start();
header("콘텐츠 유형: 이미지/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;";
평가($결과);
$_SESSION['authnum_session'] = $verifyCode
}elseif($change==2){
$result = "$verifyCode=$num1$type$num2;";
평가($결과);
$code = $num1.$type."_=".$verifyCode;
$_SESSION['authnum_session'] = $num2
}elseif($change==3){
$result = "$verifyCode=$num1$type$num2;";
평가($결과);
$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);                                       이미지스트링($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. 한자 인증코드 :


코드 복사 코드는 다음과 같습니다.

session_start();
$ch_str="첫 번째는 불화 속에서 학생들을 다양한 연령대의 학생들로 나누기 위해 국내 제품을 사용해야 하는 사람들이 많다는 것입니다. Fang Jin의 동료들은 인터뷰에서 혁명 이후에 다음과 같이 말했습니다. 많은 어린이들이 소셜 네트워크에 추가되었고, 고품질 장기당의 전력선이 달성되었습니다. 반성, 반신체 협력 로드맵은 현재 상황에서 새로운 논의의 내용을 변화시킵니다. 해당 형식, 사고, 사고 및 실천과 같은 두 가지 재능, 요점 변경, 사고 강조 및 내부 원인 제거에 이르기까지 일일 이익 단계는 전체 기 카르마 그룹의 압력에 의해 결정됩니다. , 열매주기, 각 기지의 수준 또는 월간 털을 비교하면 가장 외부적이고 숲의 다섯 가지 해석을 보지 않는 것으로 나타났습니다. 그러나 쌀 그룹의 머리는 4개의 말 인식만을 알고 있습니다. 기사는 상대적으로 문법적이고 공개적이어서 수용석 유입으로 이어지고 원유를 날려 지구 검사 활동 건설을 언급하는 문제를 설정했으며 많은 교육적 결정이 내려졌습니다. 정보는 재선될 것이며, Qimoshan Cheng Baibao는 따뜻하게 유지하고 관리의 변화를 넘겨줄 필요가 있음을 알게 될 것이며, 질병 증상과 6가지 유형의 노인을 식별할 것입니다. 6가지 유형의 재활 벨트는 무엇입니까? 바람을 마친 후 Nanguang, Lunlun, Kebei로 돌아가서 트럭 일정을 계획하고 작업을 통합했습니다. 단계 번호가 나열되고 축이 설치되었습니다. 단색이 단단하고 속도가 느려지며 달력 꽃이 전달되도록 요청되었습니다. 구전 판정을 수집하고 참조 레이어를 중지합니다. 국경에서 완취안(Wanquan)으로 통관되어야 하며, 공장은 바다에서 멀리 떨어져 있어야 하고, 어린이 청소년 재능 자격증은 낮고, 8가지 시험 규정이 멀지 않습니다. 이빨은 제거되고, 이빨은 수천승, 미세한 그림자는 지바이, 효과는 설정되어 비워지고, 칼날 속도로 현재 선택은 덕을 높이고 그 차이를 확인하는 것, 적의 절반, 첫 번째 필름을 적용하고 소리를 수집하고 화쥐에 이름을 붙이고 빨간색을 추가하며 균일한 약 표시를 저장하기 어렵고 군인의 신체를 측정합니다. 단단한 액체 시스템, 정확한 무게 각도, 치수 감소 보드, Xu 깨진 기술, 하단 침대 필드 잠재력 종료 감각, Hecun 건설, 외관, 비 ​​교전, Yamo 가족 화재 섹션, 적절한 가치, 아름다운 외관, Huang Yibiao, 아침 교대 밀 절단 문자 행 대만의 목소리는 Zhang Mi를 공격해야하며 Houcao에 해를 끼칩니다. He Shufei는 오른쪽 도시의 엄격한 경로를 따르고 달팽이 검사를 수행하며 왼쪽 페이지는 Su Xian의 신랄한 영국인에 저항하고 신속하게 나쁜 행동을 말하고 Yorbachi Province Heiwu Pei Zhu는 바늘 만 사용하여 왕의 눈을 돕기 위해 수도를 심는 방법 그녀는 묘목과 그 반대의 경우 신맛과 오래되었지만 충분한 짧은 스트로크를 유발하는 주변 식품 방사성 소스에 대해 이야기합니다. 교사 Li Qu Chunyuan Super Negative Sand Sealing Change Taimo 빈곤 감소 Yangjiang 분석 Mu Mu Yan Qi Chao Medical School Gu Ni Dao Song Ting Wei Shu Hua Station 또 다른 Wei Zi Gu Gang은 Liu Weilue Fan Gong A Kuai A 특정 쿵푸 세트 친구 제한 항목을 썼습니다. Yu는 되감기하여 법비를 생성하고 Gu Yuan은 Chupibo가 데드 독 서클을 차지하도록 돕고 Wei Ji 훈련 및 제어는 Yunhu와 균열을 찾도록 자극합니다. 곡물 어머니 연습 플러그 강철 상단 정책 이중 유지 잘못된 기반 방해물을 흡수하므로 방패가 늦어졌습니다. 비단 소녀 흩어진 용접력 주 친 병원 추위와 철저한 폭격 흩어진 사업 시각 예술 파괴 판 거짓말 제로 방 빛 피 시간 Li 펌프 부족 Cha Juefu 도시 플러시 토양 Jane Fuzhu Li Wangpan 자기 남성이 갇힌 것 같습니다. Gong Yizhou는 배달 노예 측면 실행 덮개를 벗고 거리를 휘두르고 별을 터치하고 그를 독립 관리에게 보냅니다. 넓은 겨울 장은 젖고 부분적이며 광산 마을을 책임지고 있으며 Nufeng Qijia 사전 평가가 보장됩니다. 창은 두꺼웠지만 나니피는 달걀 상자를 고소하고, 야자 산소를 사랑하고, 멈추고, 진영을 해산시켰고, 결국 맹건은 지치기를 기다리고, 러시아는 줄어들고, 모래는 물러났고, 진은 장비에 도전하여 새끼를 운반했습니다. 회전 레비 슬롯, 어깨를 잡고, 여전히 아, 신선한 바 카드, 거친 소개, 뚫고 약한 발을 쫓아 소금의 끝을 두려워 벌이 편집하여 돌진하여 상처를 확장하고 핵심 가장자리를 드러냈습니다. , 중앙 5개 영역에서 매우 빠르게, 진동하고, 진동하고, 종이가 없고, 밤의 마을, 장기 노예, 실린더 클립, 읽기 Lan Yinggou B? 용 타일, 탄소 성능을 보충합니까? , 치아, 용 타일, 비스듬한 관개, 유럽 및 순 돼지, 외국 부패, Si Wei Kuo 맥박을 통과하십시오, 미소 짓는 것이 좋습니다, 꼬리 무리가 강하면 야채 귀, 추한 우는 소를 끌고 가을 내내 염색하고, 여름 옥을 만들어 우물 끝을 치료하고, 비주를 방문하고, 청동 날을 불며, 구르는 손님을 부르고, 가뭄을 불러일으키고, 마음을 깨우친다. 뇌를 뚫고 티베트를 통과하고, 용광로 껍질, 유황 석탄을 주문하고, 주물과 막대기를 환영하고, 얇은 열흘을 탐험하고, 행운을 누리고, 의식에 빠지고, 잔여 천둥을 제압하기를 원하며, 연기를 펴고 순수하고 점진적으로 농사를 짓고 달리고 천천히 심고 육적판의 영역을 건너 조수가 건너고 서치 배가 파괴되고 거짓으로 말하고 곽저화에게 위탁하고 조공을 바치고 강한 부를 바치고 의식을 베풀고 정제하고 죄를 짓는다 , 조상이 쉬고, 마차를 착용하고, 물건을 팔고, 쥐를 끌고, 용을 보관하고, 창고를 지었습니다. Fangge Hanxi, 형제는 쓰레기를 씻어 내고 배를 가져갑니다. 마을은 위험을 없애고, 종을 칭찬하고, 손잡이를 흔들고, 대나무 계곡을 논쟁하고, 혼란을 팔고, 다리, 오버, 수직 도로로 돌진하고, 이마 벽, 야생 유적을 잘라내고, 음모를 꾸미고, 계급을 매달고, 진압합니다. Zha를 도와주고, 열쇠를 생각하고, Fuqing으로 돌아가서, 모이고, 서둘러 춤을 추고, 밧줄을 만나고, Gu Jiaoyang Lake, 못 커널, 깨진 사운드 트랙, 램프를 펴고, 홍수를 피하고, 죽고 용감하게 대답하라 황류하제, 간누오가이, 시안농도 홍수를 맞은 자, 대포 쏟아져, 정보, 영혼의 알 이해 아이를 닫고 가슴을 풀어주는 거대 개인 은행가 이징탄, 피곤한 군복 곰팡이, 두러러 , 곡선으로 분리, Zhao Shao, Hu Hutongfeng, Ling Chai Spring Wu, Shang Ding, Qin Shao로 뛰어 올라 광선을 쫓고 알칼리, 특수 언덕을 부수고 칼날을 파고 드라마, Hengqin 영화 기사가 나왔습니다. 사건 출판물에 게재된 위진의 팔, 갈색 땅, 지안준 두바모, 상포의 바느질 경찰 픽, 캄보디아 입에 어떤 쌀 플라스틱이 조명파에게 보내졌는지, 강준무는 정원에게 사기를 당했다. -옷을 잊어버린 혀가 많은 형제 우 민휘, 손린령은 속이고 빌렸다. 단두의 귀는 깎이고, 호랑이 펜은 가늘고, 쿤랑 사의 차 방울은 얕고, 그녀의 성기는 룬니앙의 수많은 소매 구슬, 그녀의 어머니의 것입니다. 보라색 오페라 타워는 망치로 쳐지고, 그녀는 늙어가고, 외모가 깨끗하고, 그녀는 감옥에 있고, 그녀는 가라앉고, 녹고, 염소, 메마른 줄기, 과육을 낚아채고, 충성스럽고, 노래하고, 잡는 남자들을 의심한다. 자물쇠를 이용하여 반란군 가축 포로가 녹을 만지고 유리를 쓸 수 있도록 허용합니다. Zhu Liken 와인 밧줄 불쌍한 연못 건조 거품 가방 랑 피드 알루미늄 연약한 운하 상습 배설물 포괄적인 벽 추세 잉크 방해 역 하역 안개 왕관 Bing Street Lebei 방사선 장의 시작 Fu Ji see Rui 깜짝 짜기 초 매달려 mu rotsen "Tang Sheng의 오목 도자기시 Chi Can Yi Ju";
$len = mb_strlen($ch_str,"utf-8");//한자 길이
$str = 배열();
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; //세션에 기록
Header("콘텐츠 유형: 이미지/PNG");
//사진의 길이와 높이
$image_x=100;
$image_y=50;
$im = imagecreate($image_x,$image_y);
//여기 사진의 배경색은 흰색입니다
$bkg = ImageColorAllocate($im,255,255,255);
//표시된 글꼴 스타일, 해당 디렉터리에 파일을 배치해야 합니다. 파일이 없으면 창 글꼴 파일로 이동하여 찾습니다.
$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;
//혼란스러운 다양한 문자의 색상
$직사각형_색상=이미지색상할당($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)
}
($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]);

}
이미지PNG($im);
ImageDestroy($im);
?>

글꼴 파일: simhei.rar여기를 클릭이 사이트에서 다운로드하세요.

참고:

한자 인증코드가 별도로 실행되어 세션을 받았을 때 인증코드와 세션 내용이 일치하지 않는 것을 발견하게 됩니다. 그러나 img 태그의 src 속성에서 한자 인증 코드 파일을 참조하여 세션을 획득하면 두 내용이 일치합니다.

관심 있는 친구들은 이를 더욱 개선할 수 있습니다.

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