>백엔드 개발 >PHP 튜토리얼 >PHP 알고리즘 인증코드 및 한자 인증코드 구현 방법

PHP 알고리즘 인증코드 및 한자 인증코드 구현 방법

WBOY
WBOY원래의
2016-07-25 08:45:15927검색

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

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

아래는 제가 작성한 인증번호 2개입니다. 도움이 되실 분들은 참고하시면 됩니다.

1. 계산 확인 코드:

  1. session_start();
  2. header("Content-type) : image/png");
  3. $num1 = mt_rand(0,9);//첫 번째 숫자
  4. $num2 = mt_rand(1,9);//두 번째 숫자
  5. $type_str = " -*";//메서드 문자열 수집
  6. $type = substr($type_str,rand(0,2),1);//랜덤 메서드
  7. $change = mt_rand(1,3);
  8. if($change==1){
  9. $code = "$num1$type$num2=?";
  10. $result = "$verifyCode=$num1$type$num2;";
  11. eval( $result);
  12. $_SESSION['authnum_session'] = $verifyCode;
  13. }elseif($change==2){
  14. $result = "$verifyCode=$num1$type$num2 ;";
  15. eval($result);
  16. $code = $num1.$type."_=".$verifyCode;
  17. $_SESSION['authnum_session'] = $num2; 변경==3){
  18. $result = "$verifyCode=$num1$type$num2;";
  19. eval($result);
  20. $code = "_".$num2. "=".$verifyCode;
  21. $_SESSION['authnum_session'] = $num1;
  22. }
  23. $im = imagecreate(68,28)
  24. $black = imagecolorallocate($ im, 0 ,0,0);
  25. $white = imagecolorallocate($im, 255,255,255);
  26. $gray = imagecolorallocate($im, 200,200,200);
  27. $red = imagecolorallocate($im, 255, 0, 0 );
  28. imagefill($im,0,0,$white);
  29. imagestring($im, 5, 10, 8, $code, $black)
  30. for($i= 0;$ i<70;$i ) {
  31. imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $black);
  32. imagesetpixel($im, mt_rand(0, 58 ) , mt_rand (0, 28) , $red);
  33. imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $gray);
  34. }
  35. imagepng($im );
  36. imagedestroy($im);
  37. ?>
코드 복사

2. 한자 인증번호 :

  1. session_start();
  2. $ch_str="먼저 메인인 분들은 우리 시간이 많다는 점입니다. 학생들을 낮은 수준의 학생들로 나누는 국내 방법이 필요합니다. 사람들은 같은 종류의 삶을 변화시키는 혁명을 수행할 수 있고 더 많은 자녀를 가질 수 있습니다. 정치, 삼선, 10대 전쟁, 비농업, 반사회적, 반사회적 로드맵을 실현하기 위한 물, 물리, 화학적 투쟁을 통해 이 두 가지를 결론에서 새로운 결론으로 ​​검토합니다. 요인, 요인, 일상의 이익에 따라 사고와 시대의 핵심 포인트를 중심으로 다양한 방식으로 형상화하고, 생각하고, 작업하는 방법을 전시와 비교하면 그렇지 않았습니다. 5급 린미 그룹 리더에 대한 5가지 해결책은 사방향 말이 하위 텍스트를 인식한다는 것을 의미할 뿐이지만 기사는 더 그램적이고 공개적이어서 리더가 수신 좌석으로 흘러 들어가 조잡하게 날아간다는 것을 알았습니다. 지역 건설 점검 활동을 통해 많은 사람들이 결정을 내릴 수 있도록 교육했으며 이에 따라 지역 지도자인 장시창(Chang Shiqiang)은 통일된 시스템을 구축하고 관리 부서에서 아픈 코끼리를 수리하고 식별할 것입니다. , 노인들은 6 가지 유형의 재활 안전 벨트를 전문적으로 늘리고 바람은 남쪽, 광저우로 돌아가고 북부 지역의 노동력을 수집합니다. 알 수 없음, 축 연구는 단색, 속도가 높음, Shila Shidar 필드 직조 달력 꽃이 전달되어야 함, 상황이 수집됨, 금 경계 제품이 판단됨, 레이어가 중지됨, 가장자리가 명확함, 그리고 공장은 Wanquan 연구 도서에서 분리되어야합니다. 다시 바다의 힘이 넘겨지고 어린이의 젊은 재능 인증서가 최근에 발표되었습니다. Yangde 단어는 적의 첫 번째 영화 Shi Xiangshou Hua Jue의 이름 빨간색 연속 유니폼 약 표시를 확인하기가 어렵습니다. 테스터의 신체 조임 액체 시스템 정확한 무게 각도 치수 감소 보드 Xu Poshu 기술은 바닥 침대 Tian의 종말 감각을 제거하고 신에게갑니다. 축하합니다. 마을 구조의 모습에 따르면 야모 부족의 불 부분에 참여하는 것은 적합하지 않습니다. 아름다움의 가치에 따라 황이표는 아침 교대를 맡아 무대 소리를 공격해야 합니다. Zhang Mi, Hou Cao, He Shuhe 및 도시의 오른쪽은 달팽이에 의해 엄격하게 검사됩니다. 왼쪽 페이지는 Su Xiankuying이 Yorba Cai Province의 Heiwu Peihu River 황제에 의해 발생했다고 빠르게 저항합니다. 왕의 눈을 돕기 위해 수도를 심기 위해? 첫 번째 파도 Chengfen Jianfu 물고기가 시험을 따랐고 남자는 그것을 덮고 가지를 홍보할 만큼 충분했고, 송정위는 슬립 스테이션을 잃었습니다. Liu Weilue, Fan Gong, A 블록, 특정 기술, 친구 세트, 한정 아이템, 되감기 롤, 법칙 및 비를 쓰고 Guyuan이 Chupi 방송을 돕고 데드 독 서클을 차지하도록 Wei Ji Xun 구름과 금이 간 곡식을 찾기 위해 흥분을 조절하십시오 어머니 연습 소 강철 상단 정책 더블 스테이 오류 기초 흡입 저항 그래서 인치 쉴드 늦은 실크 여성 분산 용접 발전소 친 기관 감기 철저한 폭격 분산 비즈니스 시각 예술 파괴 버전 치열한 제로 룸 라이트 . 피의 시대 리 펌프 실종 차주 푸 시가 흙을 돌진한다 지안 푸주 리 왕판 시옹이 갇힌 것 같다 공 이저우가 노예 편을 벗는다 런 가이가 거리를 휘둘러 별을 풀어 독립 관료를 보내기 위해 훈지는 여전히 예상치 못한 프레임이다 넓고 겨울 장은 젖고 부분 곡물은 막대기를 먹는다. 밸브 광산 마을은 가격이 안정적이고 가격이 단단하지만 Nufeng Qijia 사전 작업 평가 및 역 협력 손상, 면화 침입 및 먼지가 발생합니다. 두껍고 진흙이 두껍고 계란 상자가 고소되고 손바닥 산소가 사랑스럽고 캠프가 용해되고 돈이 다 ​​사용되기를 기다리고 있으며 러시아가 줄어들고 모래가 후퇴하고 Chen 도구에는 세포가 가득합니다 강제로 회전시켜 여물통을 잡고 어깨를 거꾸로 잡고 신선한 바 카드가 거칠고 약한 발로 드릴이 구동되는 것은 소금 가루, 음봉, 인쇄, 벌을 두려워합니다. 서문 종이없는 밤 마을 Jiuli 실린더 Nian Lan Ying Gou B Do 유교 죽이기 증기 인 단단한 결정 삽입 엘라스틴 화재 기쁨 철 우리 새싹 용 타일 붓기 탄소 성능 웨이 부착 치아 새싹 용 타일 경사 관개 Ou Xian Shun 돼지 외국 썩음. 위험한 맥은 꼬리다발이 강렬하고 강렬하여 웃어야 하며, 초한대에는 녹색을 질질 끌며 여름을 낫게 한다. 깨진 용광로 껍질, 유황 석탄은 주물과 막대기를 환영하고, 얇은 열흘을 탐험하고, 행운을 탐하고, 남은 천둥을 숨기고 싶어하고, 연기를 퍼뜨리고, 순수하고, 점차 쟁기질하고, 늪 위로 달리고, 천천히. 심기, 육적판, 조수가 교차함, 원뿔, 연못, 배, 거짓 밝음, 남편의 지원, Zhehuai 잘라서 공물을 바치고 강력한 재정 의식을 제시하고 대마를 정제하고 죄, 조상, 휴식, 착용 자동차, 물건 팔기, 쥐 끌기, 그림 그리기, 용 먹이기, 건물 지키기, 노래 부르기, 한자, 쓰레기 씻어 내기, 배 받기, 거울 기록하기, 여자, 사악한 지방, 위험 비비기, 찬양하기, 손잡이 흔들기 종 변주곡은 혼돈을 팔고, 서교, 오베르, 길로 돌진하고, 어비망, 야생 유적을 가로채고, 음모를 꾸미고, 수업을 중단하고, 성, 돌진, 견디고, 도와주고, 걱정하고, 열쇠, 돌아오고, 푸칭, 모여들고, 탈, 춤을 춘다. , 케이블 조우, 구자오양 호수, 딩런 사운드 트랙, 깨기, 범사를 피하기 위해 램프 확장 응답 용풍 황제 유하지에 간누오 귀현농도 공격 대포가 넘쳐나고 현장이 침수됨 정보 영적 알을 이해함 아이들을 닫고 가슴을 풀어줌 개인 은행 Yi Jingtan Lei Yun Du Lele이 결과를 분리하고 Zhao Shao Huhu Tongfeng Lingchaihuangwu가 Shangding Qin Shao로 점프하여 광선을 쫓고 알칼리 특수 언덕을 소비하여 칼날 드라마 더미를 파헤칩니다. Hehe 가슴 Hengqin 영화 기사가 벼 모종 천천히 출판되는 경우에 게재됩니다. 튀어나온 서비스 절단 사천 스노우 체인 낚시 라 얼굴 Hu Luo Fu Bo League 구매 Yang Zongjiao Saiqi 필터 실리콘 탄소 재고, 증기 응축에 앉아 실제로 총 리 구출 위험에 처한 다크 홀 및 튜브를 범합니다. Tu Weijin, Arm Barrier, Brown Land, Jianzun Doubamo, Sangpo Seam Police, 얼음과 캄보디아 입에 쌀 플라스틱을 Zhao Mingtian에게 보냈고 Kang Zunmu는 정원 악센트가있는 고기 조각을 주문했습니다. 민희 집은 옷을 잊고 단두의 귀를 빌려 곤랑 사의 차를 묽게 만들었다. 보라색 극장 망치는 반항적인 가축 죄수들이 녹슬었던 것을 닦아 냈다. , Baoxinye, Jianmiji, Jiang Calcium 어깨, Teng 건조, 홀에 레일 던지기, 혼합 아빠, 격려, 격려, 와인 밧줄, 불쌍한 연못, 마른 거품 가방, 알루미늄 연약한 운하 곡물 공급, 배설물 종합 벽 거래에 사용, 경향 그 기간 Mo Yu Qi 역 하역, 안개 왕관 Bing 거리, Lebei 방사 창자, Fu Ji, Rui, 충격, 초 동안 압착, 매달린 뮬란센, 설탕, 성스러운 오목 도자기, 늦은 누에, 억 순간";
  3. $len = mb_strlen($ch_str,"utf -8");//한자 길이
  4. $str = array();
  5. for($i=0;$i<4;$i ){
  6. $pos = mt_rand(0,$len -5);//시작 위치
  7. $str[] = mb_substr($ch_str,$pos,1,"utf-8");
  8. }
  9. $authnum_session = implode("",$str);
  10. $_SESSION['authnum_session'] = $authnum_session; //세션에 기록
  11. Header("콘텐츠 유형: 이미지/PNG");
  12. //이미지의 길이와 높이
  13. $image_x=100;
  14. $image_y=50;
  15. $im = imagecreate($image_x,$image_y);
  16. //가져오기 여기 이미지 하단 색상은 흰색
  17. $bkg = ImageColorAllocate($im,255,255,255);
  18. //표시된 글꼴 스타일입니다. 파일이 없는 경우 해당 디렉터리에 파일을 배치해야 합니다. , 창 글꼴 파일로 이동하여 찾으세요.
  19. $fnt = "simhei.ttf";
  20. //이미지에 일부 색상 지정
  21. $white=ImageColorAllocate($im,234,185,95);
  22. //이미지에 타원형 호 그리기 image, 하위 좌표점 지정
  23. imagearc($im, 150, 8, 20, 20, 75, 170, $white);
  24. imagearc($im, 180, 7,50, 30, 75, 175 , $white );
  25. //사진에 선분을 그리고 아래쪽 좌표점 지정
  26. imageline($im,20,20,180,30,$white);
  27. imageline($im,20 ,18,170,50, $white);
  28. imageline($im,25,50,80,50,$white);
  29. //임의의 점 개수
  30. $noise_num=3000;
  31. $line_num=50;
  32. //헷갈리는 다양한 문자의 색상
  33. $retangle_color=imagecolorallocate($im,0xAA,0xAA,0xAA);
  34. $noise_color=imagecolorallocate($im,0x00,0x00,0x00 );
  35. $font_color=imagecolorallocate($im,0x00,0x00,0x00);
  36. for($i=0;$i<$noise_num;$i )
  37. {
  38. //그림 그리기 단일 좌표점 위에서 정의한 점인 Pixel은 검은색입니다.
  39. //imagesetpixel($im,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color);
  40. }
  41. for($i=0;$i<$line_num; $i )
  42. {
  43. $line_color=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
  44. //두 좌표점 사이에 선을 그립니다. 색상은 위에서 정의합니다.
  45. imageline($im,mt_rand(0,$image_x),mt_rand(0,$image_y),mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color)
  46. }
  47. for ($i=0;$i<4;$i )
  48. {
  49. 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]);
  50. }
  51. ImagePNG($im);
  52. ImageDestroy($im);
  53. ?>
코드 복사


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

참고:

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

출처: http://www.phpxs.com/post/3083
인증코드, PHP


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