자동 글 등록기 방지요 정보
그누보드 자동 글 등록기 방지요본문
어떤원리로 구현한건지 질문드립니다 ;;;
효과는 다음이나 야후만큼 효과가 있는지.. ^^;;;;
효과는 다음이나 야후만큼 효과가 있는지.. ^^;;;;
댓글 전체
아.. 역시 분석하긴 힘들군요..
그값을 db에서 가져온다면.. 쿼리만 많아질텐데..
그냥 나중에 더 편한방법을 생각해봐야 겠네요..
답변 고맙습니다 (__)
그값을 db에서 가져온다면.. 쿼리만 많아질텐데..
그냥 나중에 더 편한방법을 생각해봐야 겠네요..
답변 고맙습니다 (__)
HTTP_POST_VARS[wr_key] 이 값은 어디서 저장되어있는 값인가요? ;;;
---------------------------------------------------------------------------------
저도 아직 구루 완전히 분석을 못햇거든요 ㅡㅡ; 아직 시작도 안했지만. ....
아마 데이타 베이스에 들어갈것입니다.
---------------------------------------------------------------------------------
저도 아직 구루 완전히 분석을 못햇거든요 ㅡㅡ; 아직 시작도 안했지만. ....
아마 데이타 베이스에 들어갈것입니다.
디스님 답변 고맙습니다 (__)
역시 그누보드 소스를 분석 못해서 이해는 잘 안가지만..
대략 보기에
숫자 만든후 세션에 저장하고 그 값이 일치하는지 보는거같은데
if ($key != $HTTP_POST_VARS[wr_key]) {
alert("정상적인 등록이 아닌것 같습니다.");
}
요부분이요...
$HTTP_POST_VARS[wr_key] 이 값은 어디서 저장되어있는 값인가요? ;;;
역시 그누보드 소스를 분석 못해서 이해는 잘 안가지만..
대략 보기에
숫자 만든후 세션에 저장하고 그 값이 일치하는지 보는거같은데
if ($key != $HTTP_POST_VARS[wr_key]) {
alert("정상적인 등록이 아닌것 같습니다.");
}
요부분이요...
$HTTP_POST_VARS[wr_key] 이 값은 어디서 저장되어있는 값인가요? ;;;
mbform.php 내용중 제일 아래!!!!
// 자동등록방지
include "./$cfg[bbs_dir]/norobot.php";
include "$member_skin/mbform.skin.php";
##################################################################
norobotcheck.php 파일을 보면 아래와 같은 내용입니다.
<?
/*
##
## norobot.php 가 선행된 후 사용
##
*/
// 자동등록방지 검사
if ($default[de_use_norobot]) {
// 우선 이 URL 로 부터 온것인지 검사
$parse = parse_url($HTTP_SERVER_VARS[HTTP_REFERER]);
if ($parse[host] != $HTTP_SERVER_VARS[HTTP_HOST]) {
alert("올바른 접근이 아닌것 같습니다.", "./");
}
$key = $HTTP_SESSION_VARS[ss_norobot_key];
if ($w == '' && !$member[mb_id]) { //아이디 체크
if ($key) {
if ($key != $HTTP_POST_VARS[wr_key]) {
alert("정상적인 등록이 아닌것 같습니다.");
}
} else {
alert("정상적인 접근이 아닌것 같습니다.");
}
}
}
?>
#####################################################################################
norobot.php 파일의 내용 !!!!!!!!!!!!!!!!!!!!!!!!
아래보시면 md5 로 만들어서 (md5 는 패스워드만드는 함수)
$tmp_str = substr(md5(time()),0,10); md5 에 안에다가 시간함수을 넣어서 변환하고요..
substr <-- 뭐더라 ? 뭐 바꿔주는것으로 알고 있는데? 정수로 바꾸어 주던것이던가??
strlen 함수는 길이을 나타내는 함수입니다.
--------------------------
$a=strlen("abcd");
echo $a;
답 : 4
--------------------------
<?
/*
** $norobot_str 와 $HTTP_SESSION_VARS[ss_norobot_key] 을 반환함
*/
// seed with microseconds
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
// 자동등록기를 막아볼까요?
$is_norobot = false;
if ($default[de_use_norobot]) {
// 임의의 md5 문자열을 생성
$tmp_str = substr(md5(time()),0,10);
// 난수 발생기
srand(make_seed());
$keylen = strlen($tmp_str);
$div = (int)($keylen / 2);
while (count($arr) < 3) {
unset($arr);
for ($i=0; $i<$keylen; $i++) {
$rnd = rand(1, $keylen);
$arr[$rnd] = $rnd;
if ($rnd > $div) { break; }
}
}
// 배열에 저장된 숫자를 차례대로 정렬
sort($arr);
$norobot_key = "";
$norobot_str = "";
$m = 0;
for ($i=0; $i<count($arr); $i++) {
for ($k=$m; $k<$arr[$i]-1; $k++) {
$norobot_str .= $tmp_str[$k];
}
$norobot_str .= "<font size=3 color=#FF0000><b>{$tmp_str[$k]}</b></font>";
$norobot_key .= $tmp_str[$k];
$m = $k + 1;
}
if ($m < $keylen) {
for ($k=$m; $k<$keylen; $k++) {
$norobot_str .= $tmp_str[$k];
}
}
// 세션에 생성
session_register("ss_norobot_key");
// 입력이면서 회원이 아닐 경우만 자동등록방지 사용
if ($w == '' && !$member[mb_id]) {
$ss_norobot_key = $norobot_key;
$is_norobot = true;
} else {
$ss_norobot_key = "";
}
}
?>
###############################################################
위에보시고 이리저리만저보세요 ......저도 아직 함수을 다 못외워서 ㅡㅡ;
위에 대충보시면 함수가 어디 쓰이는지 아시면 대충 어떠게 돌아가는지 아실것입니다.
허접한 답변에 죄송합니다 ㅡㅡ;
// 자동등록방지
include "./$cfg[bbs_dir]/norobot.php";
include "$member_skin/mbform.skin.php";
##################################################################
norobotcheck.php 파일을 보면 아래와 같은 내용입니다.
<?
/*
##
## norobot.php 가 선행된 후 사용
##
*/
// 자동등록방지 검사
if ($default[de_use_norobot]) {
// 우선 이 URL 로 부터 온것인지 검사
$parse = parse_url($HTTP_SERVER_VARS[HTTP_REFERER]);
if ($parse[host] != $HTTP_SERVER_VARS[HTTP_HOST]) {
alert("올바른 접근이 아닌것 같습니다.", "./");
}
$key = $HTTP_SESSION_VARS[ss_norobot_key];
if ($w == '' && !$member[mb_id]) { //아이디 체크
if ($key) {
if ($key != $HTTP_POST_VARS[wr_key]) {
alert("정상적인 등록이 아닌것 같습니다.");
}
} else {
alert("정상적인 접근이 아닌것 같습니다.");
}
}
}
?>
#####################################################################################
norobot.php 파일의 내용 !!!!!!!!!!!!!!!!!!!!!!!!
아래보시면 md5 로 만들어서 (md5 는 패스워드만드는 함수)
$tmp_str = substr(md5(time()),0,10); md5 에 안에다가 시간함수을 넣어서 변환하고요..
substr <-- 뭐더라 ? 뭐 바꿔주는것으로 알고 있는데? 정수로 바꾸어 주던것이던가??
strlen 함수는 길이을 나타내는 함수입니다.
--------------------------
$a=strlen("abcd");
echo $a;
답 : 4
--------------------------
<?
/*
** $norobot_str 와 $HTTP_SESSION_VARS[ss_norobot_key] 을 반환함
*/
// seed with microseconds
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
// 자동등록기를 막아볼까요?
$is_norobot = false;
if ($default[de_use_norobot]) {
// 임의의 md5 문자열을 생성
$tmp_str = substr(md5(time()),0,10);
// 난수 발생기
srand(make_seed());
$keylen = strlen($tmp_str);
$div = (int)($keylen / 2);
while (count($arr) < 3) {
unset($arr);
for ($i=0; $i<$keylen; $i++) {
$rnd = rand(1, $keylen);
$arr[$rnd] = $rnd;
if ($rnd > $div) { break; }
}
}
// 배열에 저장된 숫자를 차례대로 정렬
sort($arr);
$norobot_key = "";
$norobot_str = "";
$m = 0;
for ($i=0; $i<count($arr); $i++) {
for ($k=$m; $k<$arr[$i]-1; $k++) {
$norobot_str .= $tmp_str[$k];
}
$norobot_str .= "<font size=3 color=#FF0000><b>{$tmp_str[$k]}</b></font>";
$norobot_key .= $tmp_str[$k];
$m = $k + 1;
}
if ($m < $keylen) {
for ($k=$m; $k<$keylen; $k++) {
$norobot_str .= $tmp_str[$k];
}
}
// 세션에 생성
session_register("ss_norobot_key");
// 입력이면서 회원이 아닐 경우만 자동등록방지 사용
if ($w == '' && !$member[mb_id]) {
$ss_norobot_key = $norobot_key;
$is_norobot = true;
} else {
$ss_norobot_key = "";
}
}
?>
###############################################################
위에보시고 이리저리만저보세요 ......저도 아직 함수을 다 못외워서 ㅡㅡ;
위에 대충보시면 함수가 어디 쓰이는지 아시면 대충 어떠게 돌아가는지 아실것입니다.
허접한 답변에 죄송합니다 ㅡㅡ;
저도 만든다면 이방법으로 할것입니다.
보통 다른사이트는 그림으로 대쳐하던데..... 그림 일일이 만들어주기도 힘들고....
이방법이 최고죠 ㅎㅎ
1234567890 중에 몃글자만 뽑아서 적게 하니깐 로보트가 와서 숫자 전부 다 읽어서 .. 게시글 적을려고 하니...
못적을걸요??
로보트 만든사람이 그것을 일부러 포함시켜줘야 .......게시판에 글쓸껄요?
나중에 로보트가 읽을수 있으면 대문자 소문자로 구별해서 만들수도 ㅎㅎㅎ
보통 다른사이트는 그림으로 대쳐하던데..... 그림 일일이 만들어주기도 힘들고....
이방법이 최고죠 ㅎㅎ
1234567890 중에 몃글자만 뽑아서 적게 하니깐 로보트가 와서 숫자 전부 다 읽어서 .. 게시글 적을려고 하니...
못적을걸요??
로보트 만든사람이 그것을 일부러 포함시켜줘야 .......게시판에 글쓸껄요?
나중에 로보트가 읽을수 있으면 대문자 소문자로 구별해서 만들수도 ㅎㅎㅎ