|
|
|
22년 전
|
조회 674
|
|
|
|
22년 전
|
조회 594
|
|
|
|
22년 전
|
조회 1,005
|
|
|
|
22년 전
|
조회 581
|
|
|
|
22년 전
|
조회 856
|
|
|
|
22년 전
|
조회 652
|
|
|
|
22년 전
|
조회 516
|
|
|
|
22년 전
|
조회 434
|
|
|
|
22년 전
|
조회 868
|
|
|
|
22년 전
|
조회 557
|
|
|
|
22년 전
|
조회 1,795
|
|
|
|
22년 전
|
조회 452
|
|
|
|
22년 전
|
조회 419
|
|
|
|
22년 전
|
조회 469
|
|
|
|
22년 전
|
조회 443
|
|
|
|
22년 전
|
조회 561
|
|
|
|
22년 전
|
조회 521
|
|
|
|
22년 전
|
조회 592
|
|
|
|
22년 전
|
조회 470
|
|
|
|
22년 전
|
조회 1,505
|
댓글 5개
그값을 db에서 가져온다면.. 쿼리만 많아질텐데..
그냥 나중에 더 편한방법을 생각해봐야 겠네요..
답변 고맙습니다 (__)
---------------------------------------------------------------------------------
저도 아직 구루 완전히 분석을 못햇거든요 ㅡㅡ; 아직 시작도 안했지만. ....
아마 데이타 베이스에 들어갈것입니다.
역시 그누보드 소스를 분석 못해서 이해는 잘 안가지만..
대략 보기에
숫자 만든후 세션에 저장하고 그 값이 일치하는지 보는거같은데
if ($key != $HTTP_POST_VARS[wr_key]) {
alert("정상적인 등록이 아닌것 같습니다.");
}
요부분이요...
$HTTP_POST_VARS[wr_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 중에 몃글자만 뽑아서 적게 하니깐 로보트가 와서 숫자 전부 다 읽어서 .. 게시글 적을려고 하니...
못적을걸요??
로보트 만든사람이 그것을 일부러 포함시켜줘야 .......게시판에 글쓸껄요?
나중에 로보트가 읽을수 있으면 대문자 소문자로 구별해서 만들수도 ㅎㅎㅎ