#┌─────────────────────────────────
#│ YY-BOARD v5.3 (2003/11/08)
#│ Copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────
#┌─────────────────────────────────
#│ PHP recompiler DesignLab.
#| http://shu.sub.jp/
#└─────────────────────────────────
# 外部ファイル取込
require ('./bbs/yyini.php');
# グローバル化
$in = Array();
$in = array_merge($in,$_POST);
$in = array_merge($in,$_GET);
# メイン処理
decode($in,$post_flag,$page,$mode,$lockflag,$headflag);
axsCheck($host,$addr);
if ($mode == "dele") { dele(); }
else if ($mode == "edit") { edit(); }
else if ($mode == "regist") { regist(); }
else if ($mode == "past") { past(); }
else if ($mode == "admin") { admin(); }
error("不明な処理です");
#------------#
# 記事登録 #
#------------#
function regist() {
global $in,$post_flag,$page,$mode,$lockflag,$headflag,$host,$addr;
require ('./bbs/set.php');
# フォーム入力チェック
formCheck();
# 時間取得
get_time($times,$date);
# ファイルロック
if ($lockkey) { lock(); }
# ログを開く
$lines = @file($logfile);
# 記事NO処理
$top = array_shift($lines);
list($no,$ip,$tim,) = preg_split("/<>/", $top);
$no++;
# 連続投稿チェック
$flag=0;
if ($regCtl == 1) {
if ($addr == $ip && $times - $tim < $wait) { $flag=1; }
} else if ($regCtl == 2) {
if ($times - $tim < $wait) { $flag=1; }
}
if ($flag) {
error("現在投稿制限中です。もうしばらくたってから投稿をお願いします");
}
# URL自動リンク
if ($autolink) { auto_link($in{'contents'}); }
# 重複チェック
$flag=0;
foreach ($lines as $line) {
list($no2,$re,$dat,$nam,$eml,$sub,$com,) = preg_split("/<>/",$line);
if ($in{'name'} == $nam && $in{'contents'} == $com) {
$flag=1; break;
}
}
if ($flag) { error("重複投稿のため処理を中断しました"); }
# 暗証キーを暗号化
if ($in{'pwd'} != "") { $pwd = encrypt($in{'pwd'}); }
# 親記事の場合
if ($in{'reno'} == "") {
$i=0;
$stop=0;
$new=Array();
$data=Array();
foreach ($lines as $line) {
list($no2,$reno2,) = preg_split("/<>/",$line);
$i++;
if ($i > $max-1 && $reno2 == "") { $stop=1; }
if (!$stop) { array_push($new,$line); }
else if ($stop && $pastkey) { array_push($data,$line); }
}
array_unshift($new,"$no<><>$date<>{$in['name']}<>{$in['email']}<>{$in['sub']}<>{$in['contents']}<>{$in['url']}<>$host<>$pwd<>{$in['color']}<>{$in['icon']}<>\n");
array_unshift($new,"$no<>$addr<>$times<>\n");
# 過去ログ更新
if (sizeof($data) > 0) { pastlog($data); }
# 更新
$out = fopen($logfile,"w") or error("Write Error: $logfile");
fputs($out,implode("",$new)); fclose($out);
# レス記事の場合:トップソートあり
} else if ($in{'reno'} && $topsort) {
$f=0;
$oyaChk=0;
$match=0;
$new=Array();
$tmp=Array();
foreach ($lines as $line) {
list($no2,$reno2,) = preg_split("/<>/",$line);
if ($in{'reno'} == $no2) {
if ($reno2) { $f++; break; }
$oyaChk++;
$match=1;
array_push($new,$line);
} else if ($in{'reno'} == $reno2) {
array_push($new,$line);
} else if ($match == 1 && $in{'reno'} != $reno2) {
$match=2;
array_push($new,"$no<>{$in['reno']}<>$date<>{$in['name']}<>{$in['email']}<>{$in['sub']}<>{$in['contents']}<>{$in['url']}<>$host<>$pwd<>{$in['color']}<>{$in['icon']}<>\n");
array_push($tmp,$line);
} else { array_push($tmp,$line); }
}
if ($f) { error("不正な返信要求です"); }
if (!$oyaChk) { error("親記事が存在しません"); }
if ($match == 1) {
array_push($new,"$no<>{$in['reno']}<>$date<>{$in['name']}<>{$in['email']}<>{$in['sub']}<>{$in['contents']}<>{$in['url']}<>$host<>$pwd<>{$in['color']}<>{$in['icon']}<>\n");
}
$new = array_merge($new,$tmp);
# 更新
array_unshift($new,"$no<>$addr<>$times<>\n");
$out = fopen($logfile,"w") or error("Write Error: $logfile");
fputs($out,implode("",$new)); fclose($out);
# レス記事の場合:トップソートなし
} else {
$f=0;
$oyaChk=0;
$match=0;
$new=Array();
foreach ($lines as $line) {
list($no2,$reno2,) = preg_split("/<>/",$line);
if ($in{'reno'} == $no2) { $oyaChk++; }
if ($match == 0 && $in{'reno'} == $no2) {
if ($reno2) { $f++; break; }
$match=1;
} else if ($match == 1 && $in{'reno'} != $reno2) {
$match=2;
array_push($new,"$no<>{$in['reno']}<>$date<>{$in['name']}<>{$in['email']}<>{$in['sub']}<>{$in['contents']}<>{$in['url']}<>$host<>$pwd<>{$in['color']}<>{$in['icon']}<>\n");
}
array_push($new,$line);
}
if ($f) { error("不正な返信要求です"); }
if (!$oyaChk) { error("親記事が存在しません"); }
if ($match == 1) {
array_push($new,"$no<>{$in['reno']}<>$date<>{$in['name']}<>{$in['email']}<>{$in['sub']}<>{$in['contents']}<>{$in['url']}<>$host<>$pwd<>{$in['color']}<>{$in['icon']}<>\n");
}
# 更新
array_unshift($new,"$no<>$addr<>$times<>\n");
$out = fopen($logfile,"w") or error("Write Error: $logfile");
fputs($out,implode("",$new)); fclose($out);
}
# ロック解除
if ($lockkey) { unlock(); }
# クッキー発行
set_cookie($in{'name'},$in['email'],$in{'url'},$in{'pwd'},$in{'icon'},$in{'color'});
# メール処理
if ($mailing == 1 && $in{'email'} != $mailto) { mail_to($no); }
else if ($mailing == 2) { mail_to($no); }
# リロード
if ($location) {
if ($ENV{'PERLXS'} == "PerlIS") {
header("HTTP/1.0 302 Temporary Redirection\r\n");
header("Content-type: text/html\n");
}
header("Location: $location?\n\n");
exit;
} else {
message('投稿は正常に処理されました');
}
}
#------------#
# 記事削除 #
#------------#
function dele() {
global $in,$post_flag,$page,$mode,$lockflag,$headflag,$host,$addr;
require ('./bbs/set.php');
# POST限定
if ($postonly && !$post_flag) { error("不正なアクセスです"); }
if ($in{'no'} == '' || $in{'pwd'} == '')
{ error("記事Noまたは暗証キーが入力モレです"); }
# ロック処理
if ($lockkey) lock();
$flag=0;
$new=Array();
$lines = file($logfile) or error("Open Error: $logfile");
$top = array_shift($lines);
foreach ($lines as $line) {
list($no,$reno,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw) = preg_split("/<>/",$line);
if ($in{'no'} == $no) {
$flag++;
$pw2 = $pw;
continue;
} else if ($in{'no'} == $reno) {
continue;
}
array_push($new,$line);
}
if (!$flag) { error("該当の記事が見当たりません"); }
if ($pw2 == "") { error("暗証キーが設定されていません"); }
$check = decrypt($in{'pwd'}, $pw2);
if ($check != 1) { error("暗証キーが違います"); }
array_unshift($new,$top);
$out = fopen($logfile,"w") or error("Write Error: $logfile");
fputs($out,implode("",$new)); fclose($out);
# ロック解除
if ($lockkey) unlock();
# 完了メッセージ
message("削除が完了しました");
}
#------------#
# 記事修正 #
#------------#
function edit() {
global $in,$post_flag,$page,$mode,$lockflag,$headflag,$host,$addr;
require ('./bbs/set.php');
if ($in{'no'} == '' || $in{'pwd'} == '')
{ error("記事Noまたは暗証キーが入力モレです"); }
# 修正実行
if ($in{'job'} == "edit") {
# フォーム入力チェック
formCheck('edit');
if ($autolink) { auto_link($in{'contents'}); }
# ロック処理
if ($lockkey) lock();
$flag=0;
$new=Array();
$lines = file($logfile) or error("Open Error: $logfile");
$top = array_shift($lines);
foreach($lines as $line) {
list($no,$reno,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico) = preg_split("/<>/",$line);
if ($in{'no'} == $no) {
$flag++;
$pw2 = $pw;
$line = "$no<>$reno<>$dat<>{$in['name']}<>{$in['email']}<>{$in['sub']}<>{$in['contents']}<>{$in['url']}<>$hos<>$pw<>{$in['color']}<>{$in['icon']}<>\n";
}
array_push($new,$line);
}
if (!$flag) { error("該当の記事が見当たりません"); }
if ($pw2 == "") { error("暗証キーが設定されていません"); }
$check = decrypt($in{'pwd'}, $pw2);
if ($check != 1) { error("暗証キーが違います"); }
array_unshift($new,$top);
$out = fopen($logfile,"w") or error("Write Error: $logfile");
fputs($out,implode("",$new)); fclose($out);
# ロック解除
if ($lockkey) unlock();
# 完了メッセージ
message("修正が完了しました");
}
$flag=0;
$lines = file($logfile) or error("Open Error: $logfile");
$top = array_shift($lines);
foreach ($lines as $line) {
list($no,$reno,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico) = preg_split("/<>/",$line);
if ($in{'no'} == $no) {
$pw2 = $pw;
$flag=1;
break;
}
}
if (!$flag) { error("該当の記事が見当たりません"); }
if ($pw2 == "") { error("暗証キーが設定されていません"); }
$check = decrypt($in{'pwd'}, $pw2);
if ($check != 1) { error("暗証キーが違います"); }
$com = preg_replace("/
/","\n",$com);
$pattern = 'https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+';
$com = preg_replace("/($pattern)<\/a>/","$1",$com);
if ($ImageView == 1) { headers($headflag,'ImageUp'); }
else { headers($headflag); }
print <<
▽変更する部分のみ修正して送信ボタンを押して下さい。