메뉴 건너뛰기

프로그램언어

조회 수 26945 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

스팸성 게시물이 많아 보안단어 입력을 받는 방식으로 차단해보았습니다.
스팸성 게시물 차단하는 방법은 여러가지 방법이 있습니다.

스팸성 게시물은 프로그램으로 돌아 Agent 정보가 익스플로러가 아니고 다른 정보일때는
Agent 정보로 차단하면 차단할 수 있습니다.

하지만 Agent 정보로 차단이 되지 않는 게시물들이 요즘 많이 올라와서 차단해보았습니다.

다음(daum.net)카페에 가입해보신분이라면 한번쯤 보았을 것입니다.
가입할때 그림에 나오는 단어를 입력해야 가입이 완료됩니다.

이때 그림에 단어를 출력하는 부분과 단어를 입력해서 submit 을 날렸을때 그 단어가 맞는지 채크하는 부분이 주요부분인데요.
이방법어 쿠키를 사용할 수도 있고 또는 세션을 이용해서 그림에 나온 단어와 submit 을 날렸을때 단어를 체크 할 수 있습니다.
또 다른 방법도 많이 있겠지요.

여기서는 세션을 이용했습니다.

개발순서

1. 보안단어가 있는 그림을 GD를 이용해서 출력한다.
- 출력되는 단어는 세션에 넣어둔다.
2. 게시물 작성할때 보안단어를 입력하고 submit 을 한다.
3. 게시물 저장단계에서 보안단어가 맞는지 체크한다.
- 그림에서 출력될때 보안단어가 세션에 생성되었기 때문에 세션의 단어와 submit으로 넘어온단어가 일치하는지 체크한다.
- 일치하면 게시물 저장하고 보안단어 세션을 null 로 바꾼다.
- 일치하지 않으면 back 한다.

※ GD한글 출력을 위한 라이브러리는 본 게시판에서 검색해보기 바란다. gdlib.php

소스는 다음과 같습니다.
부가적인 소스 설명은 하지 않겠습니다. 딱 보면 딱 보일것입니다.


<? 
header ("Content-type: image/png"); 
session_start(); 
if (!session_is_registered("bbs_security")) { // bbs_security 라는 세션이 없으면 세션을 만든다. 
session_register("bbs_security"); 
} else { 
$bbs_security=null; 
} 

// $dan 이 보안단어 이다. |를 구분으로 2~3자리 한글로 만든다. 계속 추가하면 된다. 
$dan = "말미잘|미나리|개나리|미꾸리|해삼|멍게|문어|오징어|붕어|붕어빵|초가집|아줌마|인터넷|사랑방|손님|색상|설정|이미지|가게부|엔카페|위자드|삽입|로그|오후|오전|시작|강남|컴퓨터|서적|바인더|대리|대리석|본부|연구소|말미잘|고객|사랑해|염소|지렁이|일정|전자|지도|삼촌|회사|성남시|도움말|게시판|텍스트|메신저|카페|문서|도구|똥개|부패|국민|축구|장미|카라|올인|고스톱|카드|디카|뿡뿡이|다람쥐|아리랑|당구|감자|뻥도사|정준하|악어|하마|코끼리|오락실|쟁반|노래방|책가방"; 

$bbs_dan = explode("|",$dan); // $dan을 explode 함수를 이용해서 배열로 만든다. 

$bbs_security = $bbs_dan[rand(0,count($bbs_dan)-1)]; // rand함수를 이용해서 임의의 배열값을 보안단어로 설정한다. 세션이 설정된다. 

include "./gdlib.php"; // GD 한글 출력을 위한 라이브러리를 Include 한다. 

$width = "67"; 
$height = "25"; 

$im=ImageCreate($width,$height); // 이미지의 크기를 정합니다. 

$wgray = ImageColorAllocate ($im, 240, 240, 240); 
$green = ImageColorAllocate ($im, 0, 128, 0); 

ImageFilledRectangle($im, 0, 0, $width, $height, $wgray); 

if (strlen($bbs_security)==4) { // 단어가 두글자일때 
$x = 16; 
$y=20; 
} else { // 단어가 세글자 일때 
$x=8; 
$y = 23; 
} 

ImageTTFText($im,13,10,$x,$y,$green,"./gd/fonts/H2PORL.TTF",str2kor($bbs_security)); 

ImagePNG($im); 
ImageDestroy($im); // 이미지에 사용한 메모리 제거 
?> 




<? 
session_start(); // 저장하는 프로그램 첫줄에 넣는다. 

... 중략 ... 

if (!$security) { 
error("보안 글자를 입력하세요."); 
} 
if ($security!=$bbs_security) { // 보안단어를 체크한다. 
error("보안 글자가 일치하지 않습니다."); 
} 
$bbs_security=null; // 세션을 null로 설정한다. 

... 중략... 

// 에러멧세지 출력 
function error($msg) { 
echo("<script language="javascript">n"); 
echo(" alert("$msg");"); 
echo(" history.back();"); 
echo("</script>"); 
exit; 
} 

?> 


List of Articles
번호 제목 날짜 조회 수
160 PHP 파일크기 단위 붙이기 (용량 변환) file size conversion source code 2018.07.04 5793
159 AJAX를 활용하여 JSON 댓글 처리하기 (PHP) 2018.07.04 8454
158 날짜, 시간 포맷하기 (PHP) 2018.07.04 5230
157 쿠폰번호 발행 업데이트판. (간단한 클래스화[PHP4 기준] 등...) 2018.07.19 6020
156 fcm 푸시 알림 php 테스트 2018.07.19 6044
155 PHP 특정 디렉토리에 있는 파일 갯수 구하기 2018.07.19 5450
154 gcm 푸시 알림 php 테스트 2018.07.19 5582
153 PHP 소스코드 인코딩(암호화)하기 2018.07.19 6643
152 마우스 오버시 사진변환, 파일에러시 대체이미지 적용(소스일부) 2018.07.24 4584
151 게시판 내용 숨김 클릭시 내용 출력 [ 참고 ] 2018.07.24 4767
150 날짜계산 몇일까지.. [ ex)4 일전 new 표시 ] 2018.07.24 4523
149 MySQL테이블의 내용을 엑셀파일(xls)로 다운로드 하기 2018.07.24 4798
148 키를 이용한 암호화/복호화 함수입니다. 2018.07.24 5741
147 헤더이용 다운로드 받을시 바로열기부분 소스 2018.07.24 7320
146 웹서버조회 소스 2018.07.24 4543
145 날짜/시간함수 정리 2018.08.29 2429
144 한글이 깨져서 나올 때 - iconv 2018.08.29 3933
143 PHP에서 모든 세션 정보를 화면에 출력하는 방법 2018.08.29 2693
142 PHP에서 자료, 데이터의 타입을 확인하는 방법, gettype() 2018.08.29 2447
141 PHP에서의 대칭 암호화/복호화 ― 간단한 예제에서 DB 입/출력까지 2018.09.14 3548
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved