다운로드1         
Link1 http://yangws.myfeelclub.com/pass/msg.php (741)
파일형 체팅물 버그 다고친 알고리즘입니다.

송효진님의 봇알고리즘을 변형한 프로텍션함수도 포함되어있습니다.

송효진님 ,  칼솜님 , 공대여자는이쁘다님 의 라이센스가 붙여져있습니다.  - 결재 : ???원

송효진님 칼솜님 공대여자는이쁘다 세분모두를 사랑하셔야 사용하실수있습니다.

아래는 더하고뺄꺼없는 소스이며, 링크1번을통해 테스트하실수있습니다.

자료받기로 받아가세요.

<?
session_start();

########################################################################################################################

$ajaxtime = 1250; //ajax를 흉내낸 PHP 의 알아낼 시간 간격입니다. 다량트래픽이 유발될경우 값을 높여주십시오.(단위 : 밀리초)
$height = 400; //채팅창(내용) 부분의 높이 - 단위 : px (pixel)
$color = "#000000"; //채팅방 전체의 배경색깔 *
$fontcolor = "white"; //글꼴 색깔 *
$fontsize = 9; //글꼴 크기 - 단위 : pt (point)
$font = "Gulim"; //글꼴
$delif = 300; //일정 줄 수가 도달하면 초기화
$adtime = 100000; //광고가 뜰 확률입니다. 1부터 입력이 가능합니다. 1에 가까운 숫자일수록 뜰 확률이 높아집니다. 자동조정은 0 입력!
$deny="fuck,FUCK,FUCKYOU,fuckyou,fuck you,FUCK YOU,BOZI,bozi,BOZZI,bozzi,sex,SEX,ㅅ1발,씨발,히밤,시발,개새끼,씹새끼,십새끼,좃,보지,잠지,자지,섹스,딸딸이,10새,10새기,10새리,10세리,10쉐이,10쉑,10스,10쌔,10쌔기,10쎄,10알,10창,10탱,18것,18넘,18년,18노,18놈,18뇬,18럼,18롬,18새,18새끼,18색,18세끼,18세리,18섹,18쉑,18스,18아,c파,c팔,fuck,ㄱㅐ,ㄲㅏ,ㄲㅑ,ㄲㅣ,ㅅㅂㄹㅁ,ㅅㅐ,ㅆㅂㄹㅁ,ㅆㅍ,ㅆㅣ,ㅆ앙,ㅍㅏ,凸,갈보,갈보년,강아지,같은년,같은뇬,개같은,개구라,개년,개놈,개뇬,개대중,개독,개돼중,개랄,개보지,개뻥,개뿔,개새,개새기,개새끼,개새키,개색기,개색끼,개색키,개색히,개섀끼,개세,개세끼,개세이,개소리,개쑈,개쇳기,개수작,개쉐,개쉐리,개쉐이,개쉑,개쉽,개스끼,개시키,개십새기,개십새끼,개쐑,개씹,개아들,개자슥,개자지,개접,개좆,개좌식,개허접,걔새,걔수작,걔시끼,걔시키,걔썌,걸레,게색기,게색끼,광뇬,구녕,구라,구멍,그년,그새끼,냄비,놈현,뇬,눈깔,뉘미럴,니귀미,니기미,니미,니미랄,니미럴,니미씹,니아배,니아베,니아비,니어매,니어메,니어미,닝기리,닝기미,대가리,뎡신,도라이,돈놈,돌아이,돌은놈,되질래,뒈져,뒈져라,뒈진,뒈진다,뒈질,뒤질래,등신,디져라,디진다,디질래,딩시,따식,때놈,또라이,똘아이,똘아이,뙈놈,뙤놈,뙨넘,뙨놈,뚜쟁,띠바,띠발,띠불,띠팔,메친넘,메친놈,미췬,미췬,미친,미친넘,미친년,미친놈,미친새끼,미친스까이,미틴,미틴넘,미틴년,미틴놈,바랄년,병자,뱅마,뱅신,벼엉신,병쉰,병신,부랄,부럴,불알,불할,붕가,붙어먹,뷰웅,븅,븅신,빌어먹,빙시,빙신,빠가,빠구리,빠굴,빠큐,뻐큐,뻑큐,뽁큐,상넘이,상놈을,상놈의,상놈이,새갸,새꺄,새끼,새새끼,새키,색끼,생쑈,세갸,세꺄,세끼,섹스,쇼하네,쉐,쉐기,쉐끼,쉐리,쉐에기,쉐키,쉑,쉣,쉨,쉬발,쉬밸,쉬벌,쉬뻘,쉬펄,쉽알,스패킹,스팽,시궁창,시끼,시댕,시뎅,시랄,시발,시벌,시부랄,시부럴,시부리,시불,시브랄,시팍,시팔,시펄,신발끈,심발끈,심탱,십8,십라,십새,십새끼,십세,십쉐,십쉐이,십스키,십쌔,십창,십탱,싶알,싸가지,싹아지,쌉년,쌍넘,쌍년,쌍놈,쌍뇬,쌔끼,쌕,쌩쑈,쌴년,썅,썅년,썅놈,썡쇼,써벌,썩을년,썩을놈,쎄꺄,쎄엑,쒸벌,쒸뻘,쒸팔,쒸펄,쓰바,19금,지/랄,시/발,병/신,병신,빙신,뷩신,븅신,또라이,또롸이,십구세,십구,쉽구,애자,뮈췬,시 발,장 애,애 자,ㅅㅂ,ㅄ,ㅂㅅ,凸,쓰박,쓰발,쓰벌,쓰팔,멍청이,씁새,씁얼,씌파,씨8,씨끼,씨댕,씨뎅,씨바,씨바랄,씨박,씨발,씨방,씨방새,씨방세,씨밸,씨뱅,씨벌,씨벨,씨봉,씨봉알,씨부랄,씨부럴,씨부렁,씨부리,씨불,씨붕,씨브랄,씨빠,씨빨,씨뽀랄,씨앙,씨파,씨팍,씨팔,씨펄,씸년,씸뇬,씸새끼,씹같,씹년,씹뇬,씹보지,씹새,씹새기,씹새끼,씹새리,씹세,씹쉐,씹스키,씹쌔,씹이,씹자지,씹질,씹창,씹탱,씹퇭,씹팔,씹할,씹헐,아가리,아갈,아갈이,아갈통,아구창,아구통,아굴,얌마,양넘,양년,양놈,엄창,엠병,여물통,염병,엿같,옘병,옘빙,오입,왜년,왜놈,욤병,육갑,은년,을년,이년,이새끼,이새키,이스끼,이스키,임마,자슥,잡것,잡넘,잡년,잡놈,저년,저새끼,접년,젖밥,조까,조까치,조낸,조또,조랭,조빠,조쟁이,조지냐,조진다,조찐,조질래,존나,존나게,존니,존만,존만한,좀물,좁년,좁밥,좃까,좃또,좃만,좃밥,좃이,좃찐,좆같,좆까,좆나,좆또,좆만,좆밥,좆이,좆찐,좇같,좇이,좌식,주글,주글래,주데이,주뎅,주뎅이,주둥아리,주둥이,주접,주접떨,죽고잡,죽을래,죽통,쥐랄,쥐롤,쥬디,지랄,지럴,지롤,지미랄,짜식,짜아식,쪼다,쫍빱,찌랄,창녀,캐년,캐놈,캐스끼,캐스키,캐시키,탱구,팔럼,퍽큐,호로,호로놈,호로새끼,호로색,호로쉑,호로스까이,호로스키,후라들,후래자식,후레,후뢰,8억,새끼,개새끼,소새끼,병신,지랄,씨팔,십팔,니기미,찌랄,지랄,쌍년,쌍놈,빙신,좆까,니기미,좆같은게,잡놈,벼엉신,바보새끼,씹새끼,씨발,씨팔,시벌,씨벌,떠그랄,좆밥,추천인,추천id,추천아이디,추천id,추천아이디,추/천/인,쉐이,등신,싸가지,미친놈,미친넘,찌랄,죽습니다,님아,님들아,씨밸넘";//욕설 필터링 리스트
########################################################################################################################

//header의 Expires 설정용 구문
header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT");

// W3C P3P 규약설정
header ("P3P : CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\"");

// no-cache 설정.
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");

# register_globals = Session 정의.
ini_set('register_globals','1');
ini_set('session.bug_compat_42','1');
ini_set('session.bug_compat_warn','0');
ini_set('session.auto_start','1');

//header의 만료시기 안뜨게 설정.
unset($REQUEST_METHOD);

//버젼 및 한글화 루틴.
$ev = "euc-kr";
$ver = "3.0";

//euc-kr 인지아닌지 검사루틴.
function check_inc($msg)
{
    $len = strlen($msg);
    $stepsize = 1;
    for($i=0; $i<$len; $i = $i + $stepsize){
        if( (ord($msg[$i]) & 0x80) == 0x80 ){
            //깨진 캐릭터
            if( ord($msg[$i+1]) == 0x00 ){
                return true;
            }

            //euckr 범위에 있는지도 검사
            if(!( ord($msg[$i]) >= 0xB0 && ord($msg[$i]) <= 0xC8 && ord($msg[$i+1]) >= 0xA1 && ord($msg[$i+1]) <= 0xFE )){
                return true;
            }

            $stepsize = 2;
        }else{
            $stepsize = 1;
        }
    }
    return false;
}


// 한글자르기 함수
function cut_str($msg,$len,$_deleted) {
if(strlen($msg) > $len) {
$msg = substr($msg, 0, $len + 1);
$end = $len;
while(ord($msg[$end]) > 127) $end--;
if(($len - $end) % 2){ $msg = substr($msg, 0, $len)."..";}
else {$msg .= "..";}
function substr_kr($str,$start,$len,$last) {
  if (strlen($str) < $len) return $str;
  $str_kr    = trim(substr($str,$start,$len));
  if (! ( strlen(str_replace(" ","..",$str_kr)) % 2 ) ) return $str_kr.$last;
  else return substr($str_kr,0,$len -1).$last;
}
}
return $msg;
}

// 전역변수 초기화.
    @extract($_GET);
    @extract($_POST);
    @extract($_SERVER);
    @extract($_COOKIE);
    @extract($_REQUEST);

if (isset($HTTP_POST_VARS) && !isset($_POST)) {
$_POST = &$HTTP_POST_VARS;
$_GET = &$HTTP_GET_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
$_ENV = &$HTTP_ENV_VARS;
$_FILES = &$HTTP_POST_FILES;

if (!isset($_SESSION))
$_SESSION = &$HTTP_SESSION_VARS;
}

// 익스와 넷스케이프일때 처리
if(eregi("msie",$HTTP_USER_AGENT)) $browser="1";else $browser="0"; {
// 파이어폭스 처리
if(eregi("Firefox",$HTTP_USER_AGENT)) $browser="1"; else $browser="0";
// 오페라 처리
if(eregi("Opera",$HTTP_USER_AGENT)) $browser="1"; else $browser="0";
// 모잘라 처리
if(eregi("Mozilla",$HTTP_USER_AGENT)) $browser="1"; else $browser="0";
}

//사이즈를 넷쓰와 익스일때 구분하여 리턴
function size($dbo) {
    global $browser;
    if(!$browser) return " size=".($dbc)." ";
    else return " size=$dbc ";
    }
    function size2($dbo) {
        global $browser;
        if(!$browser) return " cols=".($dbc)." ";
        else return " cols=$dbc ";
    }
    

//경로를 벗어나면 다시 확장자명 으로 잡아주는 필터링.
if(getenv("REQUEST_METHOD") == $_SERVER['PHP_SELF']);

// 디렉토리를 검사함
    if(!is_dir("log_data/")) {
    @mkdir("log_data/",0777);
    @chmod("log_data/",0706);
    echo "빈 화면이 보이시면, 새로고침을 하여주세요. [로그데이타 폴더생성 작업화면]";
    echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>";
    echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
    return;
    }
    if(!is_dir("msg_ban/")) {
    @mkdir("msg_ban/",0777);
    @chmod("msg_ban/",0706);
    echo "빈 화면이 보이시면, 새로고침을 하여주세요. [강퇴리스트 폴더생성 작업화면]";
    echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>";
        echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
    return;
    }
    if(!is_dir("con_user/")) {
    @mkdir("con_user/",0777);
    @chmod("con_user/",0706);
    echo "빈 화면이 보이시면, 새로고침을 하여주세요. [현재접속자폴더생성 작업화면]";
    echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>";
        echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
    return;
    }
// 아이피 강퇴 파일 만들기.
    if(!file_exists("msg_ban/_ban.dat")) {
        echo "빈 화면이 보이시면, 새로고침을 하여주세요. [강퇴 아이피파일 생성 작업화면]";
        echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>";
        $ban = @fopen("msg_ban/_ban.dat", "a+");
        echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
    return;
    }
// htaccess 생산.
    if(!file_exists("msg_ban/.htaccess")) {    
    echo "빈 화면이 보이시면, 새로고침을 하여주세요. [강퇴작업폴더 보안패치 작업화면]";
    echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>";
    $ban = fopen("msg_ban/.htaccess", "w+");
    @fwrite($fpu0, "RewriteEngine On
    RedirectMatch /(.*)$ about:blank
    forcetype application/octet-stream");
    return;
    }
    if(!file_exists(".htaccess")){
    echo "빈 화면이 보이시면, 새로고침을 하여주세요. [채팅프로그램 보안패치 작업화면]";
    echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>";
    $index = fopen(".htaccess", "w+");
    @fwrite($fpu0, "RewriteEngine On
    RedirectMatch /(.*)$ about:blank
    forcetype application/octet-stream");
    return;
    }
    
//자동봇 탐지 프로텍팅 엔진.
if(!($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' && $_SERVER['HTTP_USER_AGENT'] == 'Shockwave Flash')) {
    if($_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.1' || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
    if($_SERVER['HTTP_X_FORWARDED_FOR'] != 'HTTP_X_FORWARDED_FOR' || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
    if($_SERVER['SERVER_PROTOCOL'] != 'HTTP_X_FORWARDED_FOR' || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
        if(count($_POST) != 0) {
        $fp = fopen('./log_data/postdata.txt', 'a');
        fwrite($fp, $_SERVER['REMOTE_ADDR']."\n");
        fwrite($fp, print_r($_POST, true));
        fwrite($fp, print_r($_GET, true));
        fwrite($fp, print_r($_SERVER, true));
        fwrite($fp, "---------------------\n");
        fclose($fp);
        exit;
    }
    if(!preg_match('/BlackBerry|Daum|EMPAS\.ROBOT|Gigabot|Googlebot|NaverBot|Snapbot|Speedy\|SurveyBot|Twiceler|Yahoo|Yeti|MFeedBot|msnbot|webcollage|yoofind|xMind|BrightCrawler|NimbleCrawler|StackRambler|SurveyBot|ia_archiver/', $_SERVER['HTTP_USER_AGENT'])) {
    $fp = fopen('./log_data/agents.txt', 'a');
    fwrite($fp, $_SERVER['HTTP_USER_AGENT']."\n");
    fwrite($fp, $_SERVER['REMOTE_ADDR']."\n");
    fwrite($fp, "---------------------\n");
    fclose($fp);
    echo "
    <script language=javascript>
    alert('크로스경비병 입니다. 다음과 같은 제약으로 접속하실수없습니다.\\n\\n인터넷 옵션 에서 프록시 설정을 제거하셔야 접속하실 수 있습니다.');
    history.go(-1);
    </script>";
    }
        exit;
            }
        }
    }
}

//동시접속 차단 프로텍션.
$IP=$_SERVER['REMOTE_ADDR'];
setcookie ("IP","$IP",0,"/");
$_POST['IP'] = serialize($IP);
if(isset($_POST['$IP'])) $IP = $_POST['IP'];
if(isset($_COOKIE['IP'])&&$_COOKIE['IP']/2>=1) {
    if(count($_POST) != 0) {
    if(!file_exists($IP.".dat")) {
        echo "빈 화면이 보이시면, 새로고침을 하여주세요. [동시접속 차단 프로텍션 작동.]";
        echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>";
        $IP_ADDRES = @fopen($IP.".dat", "a+");
        @fwrite($IP_ADDRES, print_r($_SERVER['REMOTE_ADDR']." \n", true));
        @fwrite($IP_ADDRES,date("Y-m-d H:i:s")." \n",true);
        echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
        return;
        }
    }
}

//동시접속 처리 알고리즘. [아이피와 현재시간과 이전시간 비교]
/*
$IP_ADDRES = @fopen($IP.".dat","r");
$IP_ADDRES = @fread($IP_ADDRES, filesize($IP.".dat"));
$old_day = date("Y m d H i s", $IP.".dat");
$old_day = @fopen($IP.".dat", "r");
$new_day = date('Y-m-d H:i:s');
$old_day = @strtotime($old_day);
$new_day = @strtotime($new_day);
if ($old_day < $new_day) {
if ($_SERVER['REMOTE_ADDR']&&$_SERVER['REMOTE_ADDR']) {
if(date("Y-m-d H:i:s")<=$IP_ADDRES) {
    print('본 사이트에 이중 접속을 하셨습니다. 혹은 지원되지않은 환경이라 볼수없습니다. 관리자에게 문의하세요!');
    print('네이트 Msn - yangws13@nate.com 으로 연락주시면 됩니다.');
    exit;
            }
        }
    }else {
    print('처음접속을 환영합니다.');
}
*/

//아이피 블랙리스트 접근 감시 루틴.
    $banlist = @fopen("./msg_ban/_ban.dat", "r");
    while(!feof($banlist)){
    $dlist .= fgets($banlist);}
    if(@eregi($_SERVER[REMOTE_ADDR],$dlist)){echo "$_SERVER[REMOTE_ADDR]"." 님께서는, 아이피 강퇴 되셨습니다.";
    exit;
    }

//동시접속 접근 감시 루틴.
/*
    $banlist = @fopen($IP.".dat","r");
    while(!@feof($banlist)){
    $dlist .= @fgets($banlist);}
    if(@eregi((date("Y-m-d H:i:s").$dlist))){echo "$_SERVER[REMOTE_ADDR]"." 님께서는, 이중으로 접속하여 종료합니다.";
    exit;
    }
*/

// 현재접속자 루틴함수.
$r_time = 15; // 화면 갱신 간격 (초)
$w_time = 20; // 접속 지연 시간 (초)
$FILE = @fopen("con_user/$REMOTE_ADDR","w+"); // 현재 IP를 파일명으로 지정 (쓰기 모드)
$info = time();
@fputs($FILE,$info);
@fclose($FILE);
$user[] = $REMOTE_ADDR;
if(!$user){
$user=$_SERVER['REMOTE_ADDR'];
$user= explode(".",$value);
$user = $user[0].".".$user[1].".x.".$user[3];
}
$USER1 = opendir("con_user");
while($entry=readdir($USER1)) if($entry!="."&&$entry!="..") {
    if ($REMOTE_ADDR != $entry) {
    $info = file("con_user/$entry");
    if((time()-$w_time)>chop($info[0])) @unlink("con_user/$entry");
    else $user[] = $entry;
  }
}
$total_user = count($user);
$ip = implode("\n",$user);

// 전역변수 점검.
$ext_arr = array ('PHP_SELF', '_ENV', '_GET', '_POST', '_FILES', '_SERVER', '_COOKIE', '_SESSION', '_REQUEST',
                  'HTTP_ENV_VARS', 'HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_POST_FILES', 'HTTP_SERVER_VARS',
                  'HTTP_COOKIE_VARS', 'HTTP_SESSION_VARS', 'GLOBALS');
$ext_cnt = count($ext_arr);
for ($i=0; $i<$ext_cnt; $i++) {
    // GET 으로 선언된 전역변수가 있다면 unset() 시킴
    if (isset($_GET[$ext_arr[$i]])) unset($_GET[$ext_arr[$i]]);
}

if(!$adtime){
$adtime = round(($ajaxtime/4)*$fontsize,0)*3;
$adtime = $adtime*round($height/8,0);
$adtime = round($adtime/6,0);
}

if($_GET['allview']){
?>
<meta http-equiv="Content-Type" content="text/html; charset=<?=$ev?>" />
<meta http-equiv="Page-Enter" content="BlendTrans(Duration=0.2)" />
<meta http-equiv="Page-exit" content="BlendTrans(Duration=0.5)" />
<style type='text/css'>
* {background-color: <?=$color?>;font-size:<?=$fontsize?>pt;margin:1px;color:<?=$fontcolor?>;font-family:<?=$font?>}
</style>
<title>:: 전체내용보기 :: <?=$_SERVER['PHP_SELF']?></title>
<div style='text-align:center;font-weight:bold;font-size:12pt'>전체내용보기</div>
<?
$dbo = @fopen("./memo.dat", "r");
$db = @fread($dbo, filesize("./memo.dat"));
$db = explode("\n", $db);

$dbc = count($db);

for($i=0;$i<$dbc;$i++){ //for 시작
if(!$a && $db[$i]){ //if 시작
$namesave = $db[$i];
echo "<font style='font-size:8pt'>name</font><b>".$db[$i]."</b> | ";
$a="1";
}else if($a=="1"){ //else if시작
$a="2";
echo $db[$i];
}else{$sss=$dbc-1; if($i==($sss)){echo "<a name='ad'></a>";} //else if 시작
$a="";if($db[$i]){if(eregi("-/",$namesave)){$db[$i]="관리자_".$db[$i];}}
echo "  <font style='font-size:8pt;color:yellow'>(".$db[$i].")</font><br />";}
}

exit;}

if($_GET['getdat']){
?>
<meta http-equiv="Content-Type" content="text/html; charset=<?=$ev?>" />
<meta http-equiv="Page-Enter" content="BlendTrans(Duration=0.2)" />
<meta http-equiv="Page-exit" content="BlendTrans(Duration=0.5)" />
<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />
<script type='text/javascript'>/*![CDATA[*/setTimeout("location.reload();",<?=$ajaxtime?>);/*}}>*/</script>
<?
if($_SESSION['size']!=filesize("memo.dat")){
?>
<script type='text/javascript'>/*![CDATA[*/parent.chatframe.location.reload();top.document.title='새 글이 올라왔습니다!';/*}}>*/</script>
<?
}
$_SESSION['size']=filesize("memo.dat");
exit;
}


if($_GET['out']){
$dbsa = @fopen("./memo.dat", "a");
unlink($IP.".dat");
fwrite($dbsa, "**>퇴장안내 \n ".$_SESSION['n']." 님이 퇴장하셨습니다! \n ".date("Y-m-d H:i:s")." \n");
$_SESSION['lt']="";$_SESSION['n']="";
echo "<script type='text/javascript'>self.close()</script>";exit;
}
$denys=explode(",",$deny);
$dcount = count($denys);

//광고 메커니즘.
if(!$_GET['ok']){
$dbs = @fopen("./memo.dat", "a");
$ra = rand(0,$adtime);
if($ra==0){
fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>웹해킹 게임이있는 그곳!</a>\n 1번광고 \n");
}
if($ra==1){
fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>공개용 크리스 경비병 다운로드!</a>\n 2번광고 \n");
}
if($ra==2){
fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>Php 자료 가 풍부한 그곳 !</a>\n 3번광고 \n");
}
if($ra==3){
fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>Javascript 가 풍부한 그곳!</a>\n 4번광고 \n");
}
if($ra==4){
fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:blue;background:white;cursor:normal'>관리자는 이름 앞에 '-/' 이 붙습니다!</a>\n @공지@ \n");
}
if($ra==5){
fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>본 계정은 마이필 클럽계정에 종속되어 있습니다.</a>\n @공지@ \n");
}
if($ra==6){
fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>항상 즐거운 해킹 되세요 감사합니다.</a>\n @공지@ \n");
}
if($ra==7){
fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>불법 해킹은 몸에 해롭습니다. 건전한 화이트 해커가 되세요.</a>\n @공지@ \n");
}
if($ra==8){
fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>트레이닝 문제의 정답을 기록하시면 안됩니다. 강력조치합니다!</a>\n @공지@ \n");
}
if($ra==9){
fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>본사이트 주소는 http://yangws.myfeelclub.com 입니다.</a>\n @공지@ \n");
}
if($ra==10){
fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:blue;background:white;cursor:normal'>오늘도 좋은 하루와 운이 함께하시길 바랍니다.</a>\n @공지@ \n");
}
    }

//채팅방 청소 기능.
if($_GET['reset']&&$_SESSION['lt']){
@unlink("memo.dat");
$d = fopen("memo.dat", "w");
fwrite($d, "<div align='center' style='font-weight:bold;color:blue;background:white'>* * 관리자에 의해 초기화 되었습니다. * *</div>");
echo "<script type='text/javascript'>alert('초기화 되었습니다!');location.href='msg.php#ad';</script>";
exit;}
//로그아웃 기능.
if($_GET['logout']){
$_SESSION['lt']="";
echo "<script type='text/javascript'>alert('로그아웃 되었습니다!');location.href='msg.php#ad';</script>";
exit;}
if(NULL==file_exists("memo_pwd.dat") && $_GET['pwd']){
$d = fopen("memo_pwd.dat", "w");
$p = $_GET['pwd'];
$p = md5($p);
fwrite($d, $p);
echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
exit;}
if(NULL==file_exists("memo_pwd.dat")){
?>
<!-- chatting Install Mode -->
<form method='get' action='msg.php'>
사용할 비번 : <input type='text' name='pwd' /><input type='submit' value='설치' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:8pt' />
</form>
<?
exit;}

//로그인 기능.
if($_GET['login']){
$fp = fopen("memo_pwd.dat", "r");
$fps = fread($fp, filesize("memo_pwd.dat"));
$ls = $_GET['login'];
$ls = md5($ls);
echo "관리자 모드로 로그인중입니다...";
if(strchr($ls,$fps)){
$_SESSION['lt']="ADMIN";
echo "로그인성공!<script type='text/javascript'>alert('로그인되셨습니다!');location.href='msg.php#ad';</script>";
}else{
echo "<script type='text/javascript'>alert('비밀번호가 일치하지 않습니다!');location.href='msg.php#ad';</script>";
}
exit;}
//리스트 목록 보여주기.
if($_GET['reset']&&$_SESSION['lt']){
unlink("memo.dat");
echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
exit;}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?=$ev?>" />
<meta http-equiv="Page-Enter" content="BlendTrans(Duration=0.2)" />
<meta http-equiv="Page-exit" content="BlendTrans(Duration=0.5)" />
<title>:: [채팅방] :: <?=$_SERVER['PHP_SELF']?></title>
<!-- 폰트Size 설정부분. -->
<style type='text/css'>
* {background-color: <?=$color?>;font-size:<?=$fontsize?>pt;margin:1px;color:<?=$fontcolor?>;font-family:<?=$font?>}
</style>
<!-- 밑줄 없애기 설정부분. -->
<style type='text/css'>
<!--
a { font-family: ''; text-decoration: none}
-->
</style>

<!-- 프레임 자동 조절 -->
<script language="javascript" src="http://".util_get_host()."/pass/resizeiframe.js"></script>

<!-- 리프레쉬 Ajax -->
<script type='text/javascript'>
/*![CDATA[*/
var isie = (document.all)? 1:0;
var xmlHttp = true;
var strc = '';
if(isie){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else{ // if(window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
}

function getData(dataSource)
{
    if(xmlHttp) {
            xmlHttp.open('POST', dataSource, true);
            xmlhttp.setRequestHeader("Content-type", "application/x-www-urlencoded; charset=euc-kr");
    xmlHttp.onreadystatechange = function(){
            if(xmlHttp.readyState=='4' && xmlHttp.status=='200' || xmlHttp.responseText){
                strc = xmlHttp.responseText;
            }
        }
    xmlHttp.send();
    }
}
setTimeout("getData('msg.php')", 5000);
/*}}>*/
</script>

<!-- 제목 타이틀 설정부분. -->
<script type='text/javascript'>/*![CDATA[*/
setTimeout("title()", 1500);
function title(){
var ttle = ":: [채팅방] :: <?=$_SERVER['PHP_SELF']?>";
document.title = ttle;
setTimeout("title()", 1500);
}

function login(){
d = document.getElementById('c').value;
location.href='?login='+d;
}

function sout(){
var s = window.open('msg.php?out=1');
s.focus();
self.close();
}
/*}}>*/
</script>
<!-- 넷스케이프 사용자 입장금지. -->
<script>
function enterance()
  {
    if (navigator.appName == "navigator.appName" || navigator.appName == "Netscape"){
      alert('넷스케이프 사용자는 입장할 수 없습니다');
      return;
    }
    else
        {
        location='./link.html';
        }
}
</script>
<!-- 특수키 키보드 막기. -->
<script>
function keydown(){
          if(event.keyCode==122 || event.altKey==true || event.altLeft==true){
                event.keyCode=0;
                event.cancelBubble = true;
                event.returnValue = false;
                alert('이 특수키는 사용할 수 없습니다.');
        }       
    }
  document.onkeydown=keydown;
</script>

<!-- 특수키 키보드 막기. -->
<script>
function cancelRefresh() {
    // keycode for F5 function
    if (window.event && window.event.keyCode == 116) {
        window.event.keyCode = 8;
    }
}
</script>

</head>
<?
if($_GET['content']){
//echo "<body onload=\"parent.document.getElementById('c').focus()\" />";
?>
<script type='text/javascript'>
window.onload=function(){
var pagebottom = document.body.scrollHeight;
window.scrollTo(0, pagebottom);
}</script>
<?
//메모 파일 접근, 셋팅된 내용갯수 파악후 초기화 루틴.
$dbo = @fopen("./memo.dat", "r");
$db = @fread($dbo, filesize("./memo.dat"));
$db = explode("\n", $db);

$dbc = count($db);

if($dbc>($delif*3)){
unlink("memo.dat");
$d = fopen("memo.dat", "w");
fwrite($d, "<div align='center' style='font-weight:bold;color:blue;background:white'>* * * 관리자가 '$delif'개 까지의 채팅내용을 저장하도록 지정하여, 서버에 의해 내용이 삭제되었습니다. * * *</div>");
echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
exit;
}

for($i=0;$i<$dbc;$i++){
if(!$a && $db[$i]){
$namesave = $db[$i];
echo "<font style='font-size:8pt'>name</font><b>".$db[$i]."</b> | ";
$a="1";
}else if($a=="1"){
$a="2";
echo $db[$i];
}else{$sss=$dbc-1; if($i==($sss)){echo "<a name='ad'></a>";}
$a="";if($db[$i]){if(eregi("-/",$namesave)){$db[$i]="관리자_".$db[$i];}
echo "  <font style='font-size:8pt;color:yellow'>(".$db[$i].")</font><br />";}
}
}

exit;}
if(!$_GET['ok']){?>
<!-- 메뉴 삽입구역 -->
<div align="center">
    <table width="298" cellspacing="0" style="border-width:1; border-color:rgb(51,51,51); border-style:ridge; border-collapse:collapse;" cellpadding="0" border="0" height="23">
        <tr>
            <td width="1" height="2"></td>
            <td width="97" height="2"></td>
            <td width="103" height="2"></td>
            <td width="95" height="2"></td>
        </tr>
        <tr>
            <td width="1" height="21"></td>
            <td width="96" style="border-width:1; border-color:rgb(51,51,51); border-style:groove;" height="21">

                <p align="center"><b><a href="http://yangws.myfeelclub.com/bbs/zboard.php?id=PassBbs" title="경비병 게시판 으로 이동합니다 !"><span style="font-size:10pt;"><font color="white">자유게시판</font></span></a></b></p>
            </td>
            <td width="102" style="border-width:1; border-color:rgb(51,51,51); border-style:groove;" height="21">

                <p align="center"><b><a href="http://yangws.myfeelclub.com/bbs/zboard.php?id=query_Q" title="경비병 트레이닝 문제를 시작합니다 !"><span style="font-size:10pt;"><font color="white">트레이닝 문제</font></span></a></b></p>
            </td>
            <td width="94" style="border-width:1; border-color:rgb(51,51,51); border-style:groove;" height="21">

                <p align="center"><b><a href="http://yangws.myfeelclub.com/pass/msg.php" title="크리스 경비병 체팅방으로 이동합니다."><span style="font-size:10pt;"><font color="white">채팅방접속</font></span></a></b></p>
            </td>
        </tr>
    </table>
<!-- 메뉴 삽입 여기까지  -->
</div>
<body onload="document.getElementById('c').focus()" />
<!-- iframe 출력 부분 -->
<iframe src='?content=1#ad' id='chatframe' name='chatframe' width='98%' height='<?=$height?>px' frameborder='0' scrolling='yes' style='overflow-x:hidden'>
<iframe src='?getdat=1' style='display:none' width='1px' height='1px'></iframe>
<form method='post' action='?ok=ok&frame=1'>
<?
//사용자 입장 출력 기능.
if(!$_SESSION['n']){
$_tmp = substr(md5($_SERVER['REMOTE_ADDR']),0,6);
$_SESSION['n']=$_tmp.rand(1000,9999);
if(!$_GET['ok']){
$dbsa = @fopen("./memo.dat", "a");
fwrite($dbsa, "**>입장안내 \n ".$_SESSION['n']." 님이 입장하셨습니다! \n ".date("Y-m-d H:i:s")." \n");
}
}
?>
<script type='text/javascript'>/*<![CDATA[*/
setTimeout("document.getElementById('c').focus()",800);
/*]]>*/</script>

<!-- Adtime : <?=$adtime?> [sec(s)] -->
<!-- 입력 받을부분 메뉴 -->
<input type='text' name='n' size='10' value='<?=$_SESSION['n']?>' style='border: solid 1px white' /><input type='text' id='c' name='c' value='<?=$_GET['bak_c']?>' size='50' style='border: solid 1px white' /><input type='submit' onclick='check()' value='입력' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:8pt'/>
<?if(!$_SESSION['lt']){?>
<!-- 관리자로그인 받을부분 메뉴 -->
<input type='button' onclick='login()' value='Login' title='관리자로그인(비번입력후)' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:6pt' />
<?}else{?>
<!-- 관리자 메뉴 명령어 받을부분 메뉴 -->
<input type='button' onclick="location.href='?logout=1'" title='로그아웃' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:6pt' value='Logout' />
<input type='button' onclick="location.href='?reset=1'" title='내용 초기화' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:6pt' value='Reset' />
<?}?>
<!-- 기타 메뉴 받을부분 메뉴 -->
<input type='button' onclick="var win=window.open('?allview=1');win.focus()" title='전체내용보기' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:9pt' value='전체내용보기' />
<input type='button' onclick="sout()" title='나가기' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:9pt' value='나가기' />
<br />최대 80Bytes 까지 작성가능합니다.
</form>
<?}else{
$dbs = @fopen("./memo.dat", "a");

//악성 스크립트 문자열로 바꾸기 루틴.
global $n, $c;
$n = stripslashes($_POST['n']);
$c = stripslashes($_POST['c']);

// notice_! 명령어 실행시...
if($_SESSION['lt'] && eregi("notice_!",$c)){
$c = str_replace("notice_!", "", $c);
fwrite($dbs, "<font style='color:yellow'>★공★지★</font> \n <font style='font-weight:bold;color:red;background:white;font-size:10pt'>".$c."</font> \n (".date("Y-m-d H:i:s").") \n");
echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
exit;
}
//ban_! 명령어 실행시...
if($_SESSION['lt']&&eregi("ban_!",$c)){
$c = str_replace("ban_!", "", $c);
$c = str_replace(" ", "", $c);
$c = str_replace("abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+|","",$c);
if(!filesize("msg_ban/_ban.dat")){$dabs = fopen("msg_ban/_ban.dat", "w+");fwrite($dabs, "_\n");fclose($dabs);}
$ban = fopen("msg_ban/_ban.dat", "a+");
fwrite($ban, $c."\n");
echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
}

// ban_cls_! 명령어 실행시...
if($_SESSION['lt'] && eregi("ban_cls_!",$c)){
$c = str_replace("ban_cls_!", "", $c);
$c = str_replace(" ", "", $c);
if($c!="all"){
$dlist = str_replace($c."\n", "", $dlist);
}else{$dlist="\n";}
$ban_cless = fopen("msg_ban/_ban.dat", "w");
fwrite($ban_cless, $dlist);
fclose($ban_cless);
fwrite($dbs, "<font style='color:yellow'>★알★림★</font> \n <font style='font-weight:bold;color:blue;background:white;font-size:10pt'>강퇴된 아이피가 초기화 되었습니다.</font> \n (".date("Y-m-d H:i:s").") \n");
echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
exit;
}

if(!$_SESSION['lt']){$n = strip_tags(substr($n,0,15));}

//도배 방지기능 함수.
if(!$_SESSION['last_content'])$_SESSION['last_conetnt']= sha1(md5(rand(0,300)));
if(!$_SESSION['last_num'])$_SESSION['last_num']=0;

if(@eregi($_SESSION['last_content'],$c) && $_SESSION['last_content']){
$_SESSION['last_content'] = $c;
$_SESSION['last_num']++;
if($_SESSION['last_num']>4){
$_SESSION['last_num']=0;
echo "<script type='text/javascript'>alert('도배방지 솔루션이 작동하였습니다!');location.href='{$_SERVER[HTTP_REFERER]}';</script>";
exit;
}
}
$_SESSION['last_content'] = $c;

// 빈문자열 경우 리턴
function isblank($str) {
    $c=str_replace(" ","",$c);
    $c=str_replace("\n","",$c);
    $c=strip_tags($c);
    $c=str_replace(" ","",$c);
    $c=str_replace(" ","",$c);
    if(eregi("[^[:space:]]",$c)) return 0;
    return ;
    }

//부적절한 루틴 필터링 함수.
$c = str_replace("&", "&amp;", $c);
$n = str_replace("ⓒ", "©", $n);

$c = str_replace("ː", "", $c);
$n = str_replace("ː", "", $n);

$c = str_replace("\n", "", $c);
$n = str_replace("\n", "", $n);

$c = str_replace("<", "<", $c);
$n = str_replace("<", "<", $n);

$c = str_replace(">", ">", $c);
$n = str_replace(">", ">", $n);

// 한글자르기 루틴.
if(strlen($c)>80 && !eregi("http://([^\"'<>\r\n\s+)`i",$c))$c = cut_str($c,80,2);
else if(strlen($c)>80 && !eregi("http://([^\"'<>\r\n\s+)`i",$c))$c = substr_kr($c,80,2);

$c = preg_replace("`http://([^\"'<>\r\n\s]+)`i", "<a target='_blank' title='링크로 이동' href='http://$1'>http://$1</a>", $c);

    // URL, Mail을 자동으로 체크하여 링크만듬
    function autolink($c) {
        // URL 치환
        $index_pattern = "/([^\"\'\=\>])(mms|http|HTTP|ftp|FTP|telnet|TELNET)\:\/\/(.[^ \n\<\"\']+)/";
        $c = preg_replace($index_pattern,"\\1<a href=\\2://\\3 target=_blank>\\2://\\3</a>", $c);

        // 메일 치환
        $email_pattern = "/([ \n]+)([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)/";
        $c = preg_replace($email_pattern,"\\1<a href=mailto:\\2@\\3>\\2@\\3</a>", $c);

        return $c;
    }

// 홈페이지 주소가 올바른지 검사
function isHomepage( $c ) {
    if(eregi("^http://([a-z0-9\_\-\./~@?=&-\#{5,}]+)", $c)) return $c;
    else return ;
    }

//if(!$c){$c="<b>내용을 입력하십시오!</b>";}
if(!$c){echo "<script type='text/javascript'>alert('메시지를 입력하세요.'); location.href='{$_SERVER[HTTP_REFERER]}';</script>";exit;}
if(!$n){$n="NoName".rand(0,99999);}

//관리자가 아닐때...
if(eregi("-/",$n) && !$_SESSION['lt']){
$n ="사칭_".rand(0,99999);
}
//관리자 표시...
if($_SESSION['lt']){
if(!eregi("-/",$n))$n="-/".$n;
}

//욕설일경우, 욕설 루틴 실행.
for($den=0;$den<=$dcount;$den++){
if(@eregi($denys[$den],$c)){
$denstr = round(strlen($denys[$den])/2,0);
$denr="[욕설_";
for($dst=1;$dst<=$denstr;$dst++){$denr=$denr."*";}
$denr=$denr."_욕설]";
$c = str_replace($denys[$den], $denr, $c);
break;
}
}

//euc-kr 및 uft-8 인코딩 엔진
function ToEucKr( $msg){
    return iconv("UTF-8","euc-kr//IGNORE",$msg );
}
function ToUTF8( $msg){
    return iconv("euc-kr","UTF-8",$msg);
}

$_SESSION['n']=$n;

fwrite($dbs, $n."\n".$c."\n".$_SERVER[REMOTE_ADDR]."\n");
echo "<script type='text/javascript'>location.href='msg.php#ad';</script>";
exit;}
?>
<hr noshade='noshade' />
<div style="font-size:9pt;"> <? echo "<p title='$ip'>현재 접속자 :"."$total_user 명</p>"; // 출력 ?></div>
<!-- 라이센스 -->
<div align='right' style='text-align:right;font-size:9pt'>Crade by(yamgws13) <a href='http://yangws.myfeelclub.com/' style='font-weight:bold;font-size:8pt' target='_down'>Click!</a></div>
</html>
2011/03/06 10:29 2011/03/06 10:29

Trackback Address :: https://youngsam.net/trackback/1445