Files
firstgarden-web-gnu/bbs/norobot.inc.php

61 lines
1.7 KiB
PHP

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
/*
** $norobot_str 와 $_SESSION[ss_norobot_key] 을 반환함
*/
// 자동등록기를 막아볼까요?
$is_norobot = false;
if ($config[cf_use_norobot]) {
// 임의의 md5 문자열을 생성
$tmp_str = substr(md5($g4[server_time]),0,12);
// 난수 발생기
list($usec, $sec) = explode(' ', microtime());
$seed = (float)$sec + ((float)$usec * 100000);
srand($seed);
$keylen = strlen($tmp_str);
$div = (int)($keylen / 2);
while (count($arr) < 4)
{
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];
}
$norobot_str = '<font color=#999999>'.$norobot_str.'</font>';
// 입력, 답변이면서 회원이 아닐 경우만 자동등록방지 사용
if (($w == '' || $w == 'r') && !$member[mb_id]) {
set_session("ss_norobot_key", $norobot_key);
$is_norobot = true;
}
else
set_session("ss_norobot_key", "");
}
?>
<script> var md5_norobot_key = '<?=md5($norobot_key)?>'; </script>