홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
플래쉬를 이용한 게시판 자동등록 방지 알고리즘
14년 전
플래쉬를 이용한 게시판 자동등록 방지 알고리즘입니다.

알고리즘을 쉽게 설명하자면
글입력폼에서 전송버튼을 플래쉬로 만들고 플래쉬에서 Date.getTime()를 이용해 시간(키1값)과 그 시간을 약간 변형(키2값,간단한 암호화)시킨 두 값을 입력값 체크 함수에 넘겨줍니다.
입력값 체크후 폼 전송할때 그 두 값도 같이 넘겨줍니다.
그리고 글 저장하는 곳에서 다시 두값을 비교해 거짓이면 에러를 표시합니다.
참이면 키1값과 현재시간을 비교해 30분(글쓰는데 30분이면 넘치겠죠~)이 넘으면 에러를 표시하고 최근 30분간 등록된 키1값을 불러와 같은 키1값으로 등록시 에러를 표시합니다.
정상적으로 작성된 글들의 키1값은 저장합니다. 그리고 30분이 지난 키1값은 삭제합니다.

이 알고리즘의 핵심은 무조건 플래쉬버튼(전송버튼)을 눌러야만 키값이 생성되어 글이 등록된다는 것에 있습니다.(나 혼자만의 생각인가???)
그러기 위해선 암호화를 잘 시켜야 되는데...
플래쉬는 허접이어서...
그 부분은 아직 미흡한 상태입니다. 고수님들의 도움이 필요한 부분이죠~

아래는 소스예 입니다.
암호화부분 ㅋㅋ 저두 어떻게게 해야 할지 몰라서... 그냥 임의로 적어봤습니다.
_____________________________________________________________________

# 플래쉬 소스(버튼의 액션스크립트)
myDate = new Date;
time = myDate.getTime(); //시간을 구함

on (release) { //버튼을 클릭하면
        myString = new String(time);
        i = myString.split(""); //시간을 한 문자씩 자르구 값을 변형시킴(암호화 같지 않은 암호화)
        s1 =new String(int(i[12])+2);
        s2 =new String(int(i[3])+3);
        s3 =new String(int(i[10])+3);
        s4 =new String(int(i[7])+8);
        s5 =new String(int(i[9])+5);
        s6 =new String(int(i[8])+2);
        time2 = s1+s2+s3+s4+s5+s6;
        getURL("javascript:checkIt('"+time+"','"+time2+"');"); //글입력폼의 입력값체크 함수 호출 키1값과 키2값을 넘겨줌...
}

--------------------------------------------------------------------------

입력폼체크에서
function checkIt(ch_var1,ch_var2) {
...
...

form.ch_auto.value = ch_var1; //hidden 값
form.ch_auto2.value = ch_var2; ////hidden 값
form.submit();
}
이 두값을 같이 넘겨줌...

___________________________________________________________________________

###########################################
###### 게시판 자동등록 방지 ######
###########################################
function auto_error() {
Error("정상적으로 작성하여 주시기 바랍니다~ ");
exit;
}

if(!eregi($HTTP_HOST,$HTTP_REFERER)) {
auto_error();
}

if(getenv("REQUEST_METHOD") == 'GET' ) {
auto_error();
}

if(!$ch_auto OR !$ch_auto2) { //체크값이 없으면 종료
auto_error();
}

$signdate = time(); // DATE
$ch_auto3 = ($ch_auto[12]+2).($ch_auto[3]+3).($ch_auto[10]+3).($ch_auto[7]+8).($ch_auto[9]+5).($ch_auto[8]+2); //키1값은 플래쉬에서 암호화시킨것 처럼 다시 암호화..

if($ch_auto2 != $ch_auto3) {
auto_error();
}

$ch_auto4 = substr($ch_auto,0,10);

$i=intval($signdate) - intval($ch_auto4);

if ($i<10||$i>1800) { //30분이 지난 키값은 에러처리
auto_error();
}

// 먼저 게시판별 30분간 등록키를 처리를 할 manager라는 테이블을 만든다 id:등록게시판,ch_auto:키값저장...

$ch_query = "SELECT ch_auto FROM manager WHERE id = '등록게시판'"; //30분간 등록된 키를 불러온다
$ch_result = mysql_query($ch_query,$dbconn);

$ch_list = mysql_result($ch_result,0,0);
if(!$ch_list) { // 이전 등록된 값이 없으면 ...
$ch_num = 1;
$ch_data[1] = $ch_auto4;
} else { // 있으면 '|' 로 나눠 배열로 저장
$ch_data =explode("|",$ch_list);
$ch_num = 0; //저장된 키 갯수

for($j=1;$j<=$ch_data[0];$j++) { //30분안에 등록된 키로 다시 등록시 에러 처리
if($ch_data[$j] == $ch_auto4) auto_error();
$ch_time = intval($signdate) - intval($ch_data[$j]);
if($ch_time > 1800) {
$ch_data[$j] = ""; //30분이 지난 키값은 삭제
} else {
$ch_num ++;
$ch_data[$j] = $ch_data[$ch_num]; //배열 다시지정
}
}
$ch_num ++;
$ch_data[$ch_num] = $ch_auto4; //지금키값 저장
}

$w_list = $ch_num; // 배열을 조인 후 저장
for($w=1;$w<=$ch_num;$w++){
$w_list = $w_list."|".$ch_data[$w];
}

$ch2_query = "UPDATE manager SET ch_auto = '$w_list' WHERE id = '등록게시판'";
$ch2_result = mysql_query($ch2_query,$dbconn);

###########################################
###### END ######
###########################################
추천추천 : 227 추천 목록
번호 제목
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
3,008
 윈도우10 시스템 파일 및 Dism 검사
3,007
 텍스트 줄바꿈, 글자자르기 CSS
3,006
 jQuery Mobile에서 유용한 코드 10가지.
3,005
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,004
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,003
 [jQuery] jQuery Quick API
3,002
 [ transition ] 링크 hover 색상 변화 속도 조절
3,001
 PHP 5.3.0 에서 사라진 함수들 대체
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.