'',
// ↓ページ背景色
bgcolor => '#F6F6BD',
// ↓フォントの色(ページ全体)
font_color => '#000000',
// ↓フォントサイズ(ページ全体)
font_size => '10pt',
// ↓フォント設定(ページ全体)
font_family => '',
// ↓スクロールバーのカラー設定(設定しない場合は''と指定して下さい。)
scrollbar => '#F6F6BD',
// ↓ナビゲーションバーの罫線
navi_border => '#993333',
// ↓ナビゲーションバーの色
navi_color => '#F7F7E8',
// ↓テーブルの罫線
table_border => '#993333',
// ↓テーブルタイトルの背景色
th_color => '#CC3300',
// ↓レスの背景色(奇数行)
res_bgcolor => '#FBFBFB',
// ↓各リンクの色
link => '#0000CC', // 未訪問
visited => '#000080', // 既訪問
active => '#FF0000', // クリックしたとき
hover => '#FFFFFF', // リンクにマウスを乗せたとき
// ↓各リンクのテキストデコレーション
link_deco => 'underline', // 未訪問
visited_deco => 'underline', // 既訪問
active_deco => 'underline', // クリックしたとき
hover_deco => 'none', // リンクにマウスを乗せたとき
// ↓各リンクの背景色
hover_bgcolor => '#00008B', // リンクにマウスを乗せたとき
);
// ------------- 設定ここまで -------------
// ↓バックアップをした日を保存するファイル名
define("BACKDAYFILE", "./bakday.dat");
// ↓著作権表示(改変/削除不可)
$copyright = "- 365 Forum Ver1.00 -";
// ファイルの文字コード(1:EUC-JP)
$jcode = '1';
// charset設定
$charset = array();
$charset[1] = 'EUC-JP';
#==============#
# メイン処理 #
#==============#
if($_SERVER['REQUEST_METHOD'] == "GET"){ $_POST['mode'] = &$_GET['mode']; }
//
if(DENY_HOST != ""){ host_chk(); }
switch($_POST['mode']):
case 'view': // メッセージ表示
view();
break;
case 'regist': // 登録フォーム表示
regist();
break;
case 'do_regist': // 新規登録処理
decode();
do_regist();
make_html();
make_html_id();
break;
case 'delete': // データ削除処理
delete();
make_html();
make_html_id();
break;
case 'past': // 過去ログ表示
past();
break;
case 'past_view': // メッセージ表示(過去ログ)
past_view();
break;
case 'search': // 検索フォーム表示
search();
break;
case 'makehtml_id': // フルサイズ表示
make_html_id();
break;
case 'do_search': // キーワード検索
decode();
do_search();
break;
case 'makehtml': // HTML再作成
make_html();
make_html_id();
top_html();
break;
default:
# full_html();
top_html();
break;
endswitch;
exit();
#----------------#
# 初期画面表示 #
#----------------#
function top_html(){
global $CNF,$_GET,$_SERVER,$COLORS,$title_name,$homeurl,$ID2,$RANK,$AREA,$TEKI,$TEKI2;
$data = file(LOGFILE);
// バックアップ処理
if(BACKFILE != "" && PAST_FLG == 0){ backup($data); }
if($_GET['p'] != ""){
$pagenow = $_GET['p'];
}else{
$pagenow = 1;
}
$num_start = ($pagenow - 1) * THREADVIEW + 1;
head_html($title_name);
navi_bar();
echo <<
No. |
アイテム名 |
セクションID |
難易度 |
エリア |
敵 |
投稿者 |
コメント |
EOM;
$rows_all = 0;
$target_id = "";
array_shift($data);
while(list($key, $value) = each($data)){
list($id,$ref,$date,$name,$email,$title,$comment,$color,$pass,$host,$hit,$id2,$rank,$area,$enemy) = explode(",", $value);
if($ref != 1){
if($rows_all >= $num_start && $rows_all <= ($pagenow * THREADVIEW)){
echo "
---|
$target_id | \n";
echo "$target_title | \n";
echo "";
echo "";
echo "$ID2[$target_id2] | \n";
echo "$RANK[$target_rank] | \n";
echo "$AREA[$target_area] | \n";
echo "".$TEKI[$target_area][$target_enemy]." | \n";
echo "$target_name | \n";
echo "$target_comment | \n";
}
$rows_all++;
$res_cnt = 0;
$target_id = $id;
$target_id2 = $id2+0;
$target_rank = $rank+0;
$target_area = $area+0;
$target_enemy = $enemy+0;
$target_comment = $comment;
if($title == ""){
$target_title = NOTITLE;
}else{
$target_title = $title;
}
$target_hit = $hit;
if($name == ""){
$target_name = NONAME;
}else{
$target_name = $name;
}
$target_date = $date;
}else{
if($target_id == $ref){
$res_cnt++;
$target_date = $date;
}
}
}
if($rows_all >= $num_start && $rows_all <= ($pagenow * THREADVIEW)){
echo "
$target_id | \n";
echo "$target_title | \n";
echo "";
echo "";
echo "$ID2[$target_id2] | \n";
echo "$RANK[$target_rank] | \n";
echo "$AREA[$target_area] | \n";
echo "".$TEKI[$target_area][$target_enemy]." | \n";
echo "$target_name | \n";
echo "$target_comment | \n";
}
echo "
\n";
// ページコントロール
page_ctl($rows_all,$pagenow,$num_start,THREADVIEW);
// 管理バー表示
admin_bar();
foot_html();
}
#--------------------------------#
# 新規スレッド作成フォーム表示 #
#--------------------------------#
function regist(){
global $_SERVER,$COLORS,$title_name, $ID2, $RANK, $AREA, $TEKI, $TEKI2;
if($_GET['id2'] != ""){
$id2_init = $_GET['id2'];
}else{
$id2_init = 0;
}
if($_GET['rank'] != ""){
$rank_init = $_GET['rank'];
}else{
$rank_init = 0;
}
if($_GET['area'] != ""){
$area_init = $_GET['area'];
}else{
$area_init = 0;
}
if($_GET['enemy'] != ""){
$enemy_init = $_GET['enemy'];
}else{
$enemy_init = 0;
}
# head_html("新規スレッド作成フォーム");
global $CNF,$charset,$jcode;
if($CNF[font_family] != ""){ $font_family = "font-family: ".$CNF[font_family].";"; }
if($CNF[scrollbar] != ""){ $scrollbar = "\nbody { scrollbar-base-color: ".$CNF[scrollbar]."; }"; }
echo <<
新規スレッド作成フォーム
\n";
echo <<新規スレッド作成フォーム
\n";
}
$_POST['word'] = tag_text($_POST['word']);
$keywords = preg_split("/( | )+/", $_POST['word']);
if($keywords[0] != ""){
$filename = array();
$handle = @opendir(PAST_DIR) or error("opendir Error: ".PAST_DIR);
while(false !== ($target = readdir($handle))){
$targetfile = PAST_DIR.$target;
if(strstr($target, "past") && file_exists($targetfile)){
$filename[] = $targetfile;
}
}
closedir($handle);
if($filename[0] != ""){ rsort($filename); }
array_unshift($filename, LOGFILE);
reset($filename);
$rows_all = 0;
// 検索開始
while(list(,$value) = each($filename)){
search_rtn($value,$keywords,$pagenow,$num_start,$rows_all);
}
// ページコントロール
if($rows_all < $pagenow * PAGEVIEW){
$num_end = $rows_all;
}else{
$num_end = $pagenow * PAGEVIEW;
}
if($rows_all > 0){
echo "";
for($i = 0; $i < count($keywords); $i++){
echo "$keywords[$i] ";
}
echo "の検索結果 ".$rows_all."件中 ".$num_start." - ".$num_end." 件目\n";
}
if($pagenow > 1){
$page_prev = $pagenow - 1;
$button_value = "前の".PAGEVIEW."件";
echo <<
|
EOM;
}
if($rows_all > $num_end){
$next_view = $rows_all - $num_end;
$page_next = $pagenow + 1;
$button_value = "次の".$next_view."件>>";
echo <<
|
EOM;
}
}else{
error("キーワードが入力されていません");
}
foot_html();
}
#------------#
# 検索処理 #
#------------#
function search_rtn(&$targetfile,&$keywords,&$pagenow,&$num_start,&$match_cnt){
global $_POST,$COLORS;
$fp = @fopen("$targetfile", "r") or error("fopen Error: $targetfile");
if($targetfile == LOGFILE){ fseek($fp, 1); }
while(!feof($fp)){
$rec = fgets($fp, 4096);
$match = 0;
for($i = 0; $i < count($keywords); $i++){
if($_POST['cond'] == "or"){
if(stristr($rec, $keywords[$i])){
$match = 1;
break;
}
}else{
if(stristr($rec, $keywords[$i])){
$match = 1;
}else{
$match = 0;
break;
}
}
}
if($match == 1){
$match_cnt++;
if($match_cnt >= $num_start && $match_cnt <= ($pagenow * PAGEVIEW)){
list($id,$ref,$date,$name,$email,$title,$comment,$color,$pass,$host) = explode(",", $rec);
if($email){
$name_tag = "$name";
}else{
$name_tag = $name;
}
if($name == ""){ $name = NONAME; }
if($title == ""){ $title = NOTITLE; }
echo "${title} ${name_tag} ${date} No.${id}
${comment}
\n";
}
}
}
fclose($fp);
}
#----------------#
# 過去ログ作成 #
#----------------#
function past_make(&$data){
// 過去ログ番号確認
$past_arr = file(PAST_NO);
$past_no = rtrim($past_arr[0]);
// 過去ログ番号ファイル決定
$pastfile = PAST_DIR."past".$past_no.".dat";
if(file_exists($pastfile)){
$old_data = file($pastfile);
if(count($old_data) >= PAST_MAX){
$past_no++;
$pastfile = PAST_DIR."past".$past_no.".dat";
}else{
$max_flg = 1;
}
}
$fp = @fopen("$pastfile", "w") or error("fopen Error: $pastfile");
// 書き込みバッファを 0 にする
set_file_buffer($fp, 0);
// ロック開始
flock($fp, LOCK_EX);
rewind($fp);
while(list(,$value) = each($data)){ fputs($fp, $value); }
if($max_flg == 1){
while(list(,$value) = each($old_data)){ fputs($fp, $value); }
}
// ロック解除
flock($fp, LOCK_UN);
fclose($fp);
// 過去ログ番号保存
$fp = @fopen(PAST_NO, "r+") or error("fopen Error: ".PAST_NO);
// 書き込みバッファを 0 にする
set_file_buffer($fp, 0);
// ロック開始
flock($fp, LOCK_EX);
ftruncate($fp, 0);
fputs($fp, $past_no);
// ロック解除
flock($fp, LOCK_UN);
fclose($fp);
}
#----------------#
# ナビバー表示 #
#----------------#
function navi_bar(){
global $_SERVER,$CNF,$title_name,$homeurl;
echo <<
$title_name
|
| ホーム | 一覧を見る
EOM;
if(ADMIN_MODE == 1){
echo "| ワード検索 | ";
}else{
echo "| 新規スレッド | ワード検索 | ";
}
# if(PAST_FLG){
# echo "過去ログ | ";
# }else{
# echo " ";
# }
echo " |
|
\n";
}
#----------------#
# 管理バー表示 #
#----------------#
function admin_bar(){
global $_SERVER,$CNF;
echo <<
|
<<戻る |
トップへ |
|
EOM;
}
#----------------------#
# ページコントロール #
#----------------------#
function page_ctl(&$rows_all,&$pagenow,&$num_start,$view_cnt){
global $_GET,$_SERVER;
$pass = pass_make();
if($rows_all < $pagenow * $view_cnt){
$num_end = $rows_all;
}else{
$num_end = $pagenow * $view_cnt;
}
if($rows_all > $view_cnt){
echo "$num_start - $num_end ( $rows_all 件中 ) [ \n";
}else{
echo "$num_start - $num_end ( $rows_all 件中 )
\n";
}
if($pagenow != 1){
$page_prev = $pagenow - 1;
if($_GET['mode'] == ""){
echo "/ <- 前ページ \n";
}else{
echo "/ <- 前ページ \n";
}
}
if($rows_all > $num_end){
$page_next = $pagenow + 1;
if($_GET['mode'] == ""){
echo "/ 次ページ ->\n";
}else{
echo "/ 次ページ ->\n";
}
}
if($rows_all > $view_cnt){
echo " / ]
\n";
}
}
#--------------------#
# バックアップ処理 #
#--------------------#
function backup(&$data){
$today = gmdate("Ymd",time()+9*60*60);
$bakday = file(BACKDAYFILE);
$lastbak = rtrim($bakday[0]);
if($today != $lastbak){
$fp = @fopen(BACKFILE, "r+") or error("fopen Error: ".BACKFILE);
// 書き込みバッファを 0 にする
set_file_buffer($fp, 0);
// ロック開始
flock($fp, LOCK_EX);
ftruncate($fp, 0);
while(list(,$value) = each($data)){ fputs($fp, $value); }
// ロック解除
flock($fp, LOCK_UN);
fclose($fp);
$fp = @fopen(BACKDAYFILE, "r+") or error("fopen Error: ".BACKDAYFILE);
// 書き込みバッファを 0 にする
set_file_buffer($fp, 0);
// ロック開始
flock($fp, LOCK_EX);
ftruncate($fp, 0);
fputs($fp, $today);
// ロック解除
flock($fp, LOCK_UN);
fclose($fp);
}
}
#----------------#
# ヘッダー表示 #
#----------------#
function head_html($title){
global $CNF,$charset,$jcode;
if($CNF[font_family] != ""){ $font_family = "font-family: ".$CNF[font_family].";"; }
if($CNF[scrollbar] != ""){ $scrollbar = "\nbody { scrollbar-base-color: ".$CNF[scrollbar]."; }"; }
echo <<
$title
EOM;
}
#----------------#
# フッター表示 #
#----------------#
function foot_html(){
global $homeurl,$copyright;
echo <<$copyright
EOM;
}
#----------------#
# デコード処理 #
#----------------#
function decode(){
global $_SERVER,$_POST,$_GET,$jcode;
if($_SERVER['REQUEST_METHOD'] == "GET"){ error("不正な投稿です"); }
foreach($_POST as $key => $value){
// バックスラッシュの排除
if(get_magic_quotes_gpc()){ $value = stripslashes($value); }
// タグ処理
$value = htmlspecialchars($value);
// 区切り文字","をタグ用に処理
$value = str_replace(",", ",", $value);
// 改行処理
if($key == "comment"){
$value = str_replace("\r\n", "
", $value);
$value = str_replace("\r", "
", $value);
$value = str_replace("\n", "
", $value);
}else{
$value = trim($value);
}
$_POST[$key] = $value;
}
}
#--------------#
# エラー処理 #
#--------------#
function error($msg){
global $charset,$jcode,$homeurl;
echo <<
$msg
$msg
恐れ入りますが、再度試して下さい。
前の画面に戻ってやり直す場合は、ブラウザの「戻る」ボタンを押して下さい。
<<戻る ホームページへ戻る