/*SetShowInfo(0);*/
SecureVar("word");
SecureVar("cmd");
$cnf=File("config.txt");
$gW="$word$handle"; /* 流れ込む全ての文章のタグをチェック */
>
function show(
global $cnf,$lines,$d;
$i=0;$j=0;
while($i<50){
$string=$lines[$i];
$tok = strtok($string,"#");
echo "$tok:";
$tok = strtok("#");
echo "$tok";
$tok = strtok("#");
$tmcolor=$cnf[5];
echo "($tok ";
$tok = strtok("#");
if(ERegi("on", $cnf[10]) == 1){echo "$tok";}
echo ")";
echo "
\n";
$i++;
}
);
function add(
$i=0;
/*グローバル参照、必ず必要*/
global $handle,$word,$cmd,$cnf,$dest;
if($cmd=="enter"){$word="「$handle」さんがいらっしゃいました.";$h0=$handle;$handle="System";}
if($cmd=="退室"){$word="「$handle」さんは帰られました.";$handle="System";}
if($word && ereg($PHP_SELF,$HTTP_REFERER)){
if($dest!=""){$word=$word+" > $dest";}
$lines=File("log.dat");
$out=fopen("log.dat","wt");
$stamp=Date("y/m/d H:i:s");
fputs($out,"$handle#$word#$stamp#");
fputs($out,"$REMOTE_HOST#$HTTP_X_FORWARDED_FOR#");
fputs($out,"\n");
while($i<100){ /* 100行ログを残す */
fputs($out,"$lines[$i]\n");
$i++;
}
fclose($out);
}
if($cmd=="enter"){$handle=$h0;}
);
/* ホストのチェックを行い,アクセスを拒否する */
function reject_host(
global $cnf;
$rcode=0;
$reject=$cnf[13];
$tok = strtok($reject,",");
while($tok);
if(ereg($tok,$REMOTE_HOST)){$rcode=1;}
$tok = strtok(",");
endwhile;
return($rcode);
);
/* タグチェックを行う */
function reject_tag(
global $gW,$cnf;
$w=" $gW"; /* 先頭に空白を追加*/
$rcode=0;
if(ERegi("on", $cnf[12])==1 && EReg(60, $gW) == 1){return(2);} /*タグ禁止*/
if(ERegi("on", $cnf[12])!=1 && EReg(60, $gW) == 1){ /*タグ許可*/
$w=ERegi_replace(47,"",$gW);
$cnt=0;
/* 先頭の空白をスキップ */
$tok = strtok($w,60); $tok = strtok(60);
while($tok){
$key=substr($tok, 0, 2);
switch($key) {
case "fo"; $rcode=0; break;
case "a "; $rcode=0; break;
case "a>"; $rcode=0; break;
case "im"; $rcode=0; break;
default; $rcode=1; break;
}
/*echo"$cnt = $key($rcode)
";*/
if($rcode==1){return(1);} /*ここで返す*/
$tok = strtok(60);
$cnt++;
}
/*echo"rc=$rcode
\n";*/
}
return($rcode); /* ハンドルにタグを使われるとここまで来ない */
);
/* 文字のチェック */
function reject_word $word(
if(ERegi(10, $word) == 1){return(1);}
if(ERegi(13, $word) == 1){return(1);}
if(ERegi("cgi", $word) == 1){return(1);}
if(ERegi(35, $word) == 1){return(1);}
return(0);
);
/* 誰に? */
function showdest(
global $lines;
echo"だれに?:";
);
>
/*初期設定もろもろ*/
$mode=1;
$ch=ereg("/~nagano/chat/(.*)/ptalk.phtml",$PHP_SELF,$ch);
$advl="q1.phtml";
$advp="adv3.gif";
/* 入室時チェック */
if($cmd=="enter"){
$handle=ERegi_replace(34,"",$handle);
if(reject_host()==1){$err="ご利用のリモートホストは制限対象です";$mode=3;}
if($handle==""){$err="ハンドルを指定して下さい";$mode=3;}
if(strlen($handle)>256){$err="文字数が長すぎます";$mode=3;}
}
/*$v=reject_tag();echo"lastrc=$v
";*/
$mix="$handle$word";
$result=reject_tag();
if($result==1){$err="使用できないタグが含まれています";$mode=3;}
if($result==2){$err="現在タグの使用は禁止されています";$mode=3;}
if(reject_word($mix)==1){$err="使用できない文字が含まれています";$mode=3;}
if(strlen($word)>256){$err="文字数が長すぎます";$mode=3;}
/* 通常処理 */
if($mode==1){
if($handle!=""){add(); }
if($handle==""){$mode=2;} /* 入室画面 */
if($cmd=="退室"){$mode=2;} /* 退室処理 */
if($regist != ""){SetCookie("hdlcookie",$handle,time()+3600000); }
$lines=File("log.dat");
}
>
if($mode==1)>
"
>
if($mode==2)>
if($mode==3)>
アクセスできません.
This script was written by InteractiA.1998.