data ディレクトリ、または conf.dat ファイルのパーミッションをご確認下さい。'); }
$conf = array();
if ($fp = @fopen ("./data/conf.dat","r")){
flock ($fp,LOCK_SH);
while (!feof ($fp)){
$read = fgets ($fp);
$conf[] = str_replace ("\n","",$read);
}
flock ($fp,LOCK_UN);
fclose ($fp);
}else{ system_error ('設定ファイルの読取に失敗しました。
data ディレクトリ、または conf.dat ファイルのパーミッションをご確認下さい。'); }
if (empty ($conf[0])){ system_error ('設定ファイルの読取に失敗しました。
最初にコントロールパネルより各種設定を行って下さい。'); }
$page_max = $conf[25];
$log_max = $conf[26];
if ($log_max < 1){ system_error ('投稿内容の最大保存数が異常です。'); }
if ($page_max < 1){ system_error ('1ページに表示される投稿内容数が異常です。'); }
if ($conf[1] == 'http://'){ $conf[1] = ''; }
if ($conf[3] == 'http://'){ $conf[3] = ''; }
if ($conf[17] == 'http://'){ $conf[17] = ''; }
if (!empty ($conf[2])){ $bgcolor = " bgcolor='$conf[2]'"; }
if (!empty ($conf[3])){ $background = " background='$conf[3]'"; }
if (!empty ($conf[4])){ $hrcolor = " color='$conf[4]'"; }
if (!empty ($conf[5])){ $color = " color='$conf[5]'"; }
if (!empty ($conf[6])){ $text = " text='$conf[6]'"; }
if (!empty ($conf[23])){ $link = " link='$conf[23]' vlink='$conf[23]' alink='$conf[23]'"; }
if (preg_match ("/[0-9]/",$conf[13]) > 0){ $margin1 = " topmargin='$conf[13]' bottommargin='$conf[13]' marginheight='$conf[13]'"; }
if (preg_match ("/[0-9]/",$conf[14]) > 0){ $margin2 = " leftmargin='$conf[14]' rightmargin='$conf[14]' marginwidth='$conf[14]'"; }
if (!empty ($conf[16])){ $width = " width='$conf[16]'"; }
#--------------------------------------------------------------------------
# ヘッダー出力
#--------------------------------------------------------------------------
if (empty ($conf[1])){ print "
$conf[0]"; }
else { print "

"; }
print "
";
if ($_POST[flg] == 1){
//if (empty ($_POST[name])){ $err_array[] = 'お名前をご記入下さい。'; }
if (empty ($_POST[name])){ $_POST['name'] = '名無しの権兵衛☆★'; }
if (empty ($_POST[subject])){ $err_array[] = '件名は必須でつ。。'; }
if (empty ($_POST[message])){ $err_array[] = 'コメント入れなきゃダメょ。'; }
//if ((!empty ($_POST[mail]))&&(preg_match ("/^[\w\-+_\.]+\@[\w\-_+]+\.[\w\-_+\.]+$/i",$_POST[mail]) != 1)){ $err_array[] = 'メールアドレスが正しくありません。'; }
if (isset ($err_array[0])){
$err_msg = implode (" ",$err_array);
error ($err_msg);
}
while ($key = key ($_POST)){
$_POST[$key] = mb_convert_encoding ($_POST[$key],"utf-8","auto");
$_POST[$key] = mb_convert_kana ($_POST[$key],"KV","utf-8");
$_POST[$key] = str_replace ("<","<",$_POST[$key]);
$_POST[$key] = str_replace (">",">",$_POST[$key]);
$_POST[$key] = str_replace ("\\\\","\\",$_POST[$key]);
$_POST[$key] = str_replace ('\"','”',$_POST[$key]);
$_POST[$key] = str_replace ("\'","’",$_POST[$key]);
next ($_POST);
}
$message = preg_replace ("/\r\n|\n|\r/"," ",$_POST[message]);
#--------------------------------------------------------------------------
# 確認画面出力
#--------------------------------------------------------------------------
if (!empty ($conf[21])){ print " $conf[21] "; }
print <<
|
EOM;
}else if ($_POST[flg] == 2){
if (empty ($_POST[name])){ $err_array[] = 'お名前をご記入下さい。'; }
if (empty ($_POST[subject])){ $err_array[] = '件名をご記入下さい。'; }
if (empty ($_POST[message])){ $err_array[] = 'コメントをご記入下さい。'; }
if ((!empty ($_POST[mail]))&&(preg_match ("/^[\w\-+_\.]+\@[\w\-_+]+\.[\w\-_+\.]+$/i",$_POST[mail]) != 1)){ $err_array[] = 'メールアドレスが正しくありません。'; }
if (isset ($err_array[0])){
$err_msg = implode ("
",$err_array);
error ($err_msg);
}
while ($key = key ($_POST)){
$_POST[$key] = mb_convert_encoding ($_POST[$key],"utf-8","auto");
$_POST[$key] = mb_convert_kana ($_POST[$key],"KV","utf-8");
$_POST[$key] = str_replace ("\t"," ",$_POST[$key]);
$_POST[$key] = str_replace ("<","<",$_POST[$key]);
$_POST[$key] = str_replace (">",">",$_POST[$key]);
$_POST[$key] = preg_replace ("/\r\n|\n|\r/","
",$_POST[$key]);
$_POST[$key] = str_replace ("\\\\","\\",$_POST[$key]);
$_POST[$key] = str_replace ('\"','”',$_POST[$key]);
$_POST[$key] = str_replace ("\'","’",$_POST[$key]);
next ($_POST);
}
if (!@touch ("./data/lock.txt")){ error ('ロックファイルの作成に失敗しました。
data ディレクトリ、または lock.txt ファイルのパーミッションをご確認下さい。'); }
if ($lock = @fopen ("./data/lock.txt","r")){
flock ($lock,LOCK_EX);
$now = time();
$localtime = localtime($now);
$localtime[5] = ($localtime[5] + 1900);
$localtime[4]++;
$time = sprintf ("%04d/%02d/%02d %02d:%02d:%02d",$localtime[5],$localtime[4],$localtime[3],$localtime[2],$localtime[1],$localtime[0]);
$ip = $_SERVER['REMOTE_ADDR'];
if ($fp = @fopen ("./data/check.dat","r")){
flock ($fp,LOCK_SH);
$check = fgets ($fp);
flock ($fp,LOCK_UN);
fclose ($fp);
}
$check = explode (',',$check);
if (($check[0] >= $now)&&($check[1] == $ip)){ error('二重書き込み防止のため、60秒以内の連続した書き込みは行えません。'); }
$line = array();
if ($fp = @fopen ("./data/log.dat","r")){
flock ($fp,LOCK_SH);
while (!feof ($fp)){
$read = fgets ($fp);
if (!empty ($read)){ $line[] = $read; }
}
flock ($fp,LOCK_UN);
fclose ($fp);
}else{ error ("ログファイルの読取に失敗しました。
data ディレクトリ、または log.dat ファイルのパーミッションをご確認下さい。"); }
$form = array();
$form[0] = $now;
if ($conf[24] == 1){ $form[1] = 0; }
else { $form[1] = 1; }
$form[2] = $_POST[subject];
$form[3] = $_POST[name];
$form[4] = $_POST[mail];
$form[5] = $_POST[message];
$form[6] = $time;
if ($conf[18] == 1){ $form[7] = $ip; }
$write = implode ("\t",$form);
if ($fp = @fopen ("./data/log.dat","w")){
flock ($fp,LOCK_EX);
fputs ($fp,"${write}\n");
$log_max--;
for ($i = 0; $i < $log_max; $i++){
fputs ($fp,$line[$i]);
}
flock ($fp,LOCK_UN);
fclose ($fp);
}else{ error ("ログファイルの書込に失敗しました。
data ディレクトリ、または log.dat ファイルのパーミッションをご確認下さい。"); }
$check[0] = ($now + 60);
$check[1] = $ip;
$check = implode (',',$check);
if ($fp = @fopen ("./data/check.dat","w")){
flock ($fp,LOCK_EX);
fputs ($fp,$check);
flock ($fp,LOCK_UN);
fclose ($fp);
}
sleep(1);
flock ($lock,LOCK_UN);
fclose ($lock);
}else{ error ("ロックファイルを開けませんでした。
data ディレクトリ、または lock.txt ファイルのパーミッションをご確認下さい。"); }
#--------------------------------------------------------------------------
# 投稿完了画面出力
#--------------------------------------------------------------------------
if (!empty ($conf[22])){ print "
$conf[22]
"; }
print <<
EOM;
}else{
if (!@touch ("./data/log.dat")){ error ('ログファイルの作成に失敗しました。
data ディレクトリ、または log.dat ファイルのパーミッションをご確認下さい。'); }
$line = array();
if ($fp = @fopen ("./data/log.dat","r")){
flock ($fp,LOCK_SH);
while (!feof ($fp)){
$read = fgets ($fp);
$logs = array();
$logs = explode ("\t",$read);
if ($logs[1] == 1){ $line[] = $read; }
}
flock ($fp,LOCK_UN);
fclose ($fp);
}else{ error ('ログファイルの読取に失敗しました。
data ディレクトリ、または log.dat ファイルのパーミッションをご確認下さい。'); }
if (!empty ($_GET[subject])){
$subject = mb_convert_encoding ($_GET[subject],"utf-8","auto");
$subject = "Re: " . $subject;
}
if (!empty ($_GET[message])){
$message = mb_convert_encoding ($_GET[message],"utf-8","auto");
$message = "> " . $message;
$message = str_replace ("
","\n> ",$message);
}
if ($conf[19] == 1){ $flg_val = 2; $btn_val = '書き込む'; }
else { $flg_val = 1; $btn_val = '確認する'; }
if (!empty ($conf[10])){ $size = " size='$conf[10]'"; }
if (!empty ($conf[11])){ $cols = " cols='$conf[11]'"; }
if (!empty ($conf[12])){ $rows = " rows='$conf[12]'"; }
#--------------------------------------------------------------------------
# 掲示板画面出力
#--------------------------------------------------------------------------
if (!empty ($conf[20])){ print "
$conf[20]
"; }
print <<
|
|
EOM;
$all = count ($line);
if (empty ($_GET[s])){ $s = 0; }
else { $s = $_GET[s]; }
$bs = $s - 1;
$ns = $s + 1;
if ($all == 0){ $start = 0; }
else { $start = ($s * $page_max) + 1; }
if (($s * $page_max + $page_max) > $all){ $last = $all; }
else { $last = $s * $page_max + $page_max; }
if (($all - ($s * $page_max + $page_max)) > $page_max){ $next = $page_max; }
else { $next = $all - ($s * $page_max + $page_max); }
for ($i = 0; $i < $page_max; $i++){
$n = ($s * $page_max) + $i;
if (!empty ($line[$n])){
$logs = array();
$logs = explode ("\t",$line[$n]);
print <<
|
EOM;
}
}
print <<
${all}件中 ${start}件~${last}件
EOM;
if ($s > 0){ print "| << 前の${page_max}件へ | "; }
print '';
for ($i = 0; $i * $page_max < $all; $i++){
$n = $i + 1;
if ($s == $i){ print " ${n} "; }
else { print " ${n} "; }
}
print ' | ';
if ($next > 0){ print "次の${next}件へ >> | "; }
print <<
|
EOM;
}
#--------------------------------------------------------------------------
# フッター出力
#--------------------------------------------------------------------------
if (!empty ($conf[17])){
print <<
トップページへ
|
EOM;
}
print <<
EOM;
function error ($err_mes){
#--------------------------------------------------------------------------
# エラー画面出力
#--------------------------------------------------------------------------
print <<
大変だ! ブラウザの戻るボタンでお戻って!!
${err_mes}
EOM;
exit();
}
function system_error ($err_mes){
print <<
システムエラー
${err_mes}
|
EOM;
exit();
}
?>