61 lines
1.7 KiB
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>
|