header("Content-Type: text/html; charset=EUC-JP");
require_once("../common/function.php");
include("init.php");
session_register("sLoginFlg"); // ログインフラグ
session_register("sHostName"); // ホスト名
session_register("sBbsLog"); // ログファイル
session_register("sBbsId"); // ID
// 管理者モード
if( $_GET["login"]==1 ){
f_ChkPass();
}else if( $_GET["logout"]==1 ){
$_SESSION["sLoginFlg"] = false;
}
if($_GET["mode"]=="ins"){
f_InsLog_Thread();
}else if($_GET["mode"]=="t_ins"){
f_InsLog_Res();
}else if($_GET["mode"]=="t_del"){
f_DelLog_Thread();
}else if($_GET["mode"]=="r_del"){
f_DelLog_Res();
}else{
// ログデータ取得
f_GetLog();
// HTML表示
f_ShowHtml();
}
//****************************************
// 『ログインチェック』
//****************************************
function f_ChkPass(){
global $gInit;
if(gf_IsNull($_POST["admin_pass"])){
gf_ErrPage("管理者用パスワードを入力してください", "");
}
if($gInit["admin_pass"] != $_POST["admin_pass"]){
gf_ErrPage("管理者用パスワードが違います", "");
}
setcookie("admin_pass", $_POST["admin_pass"], time()+259200);
$_SESSION["sLoginFlg"] = true;
}
//****************************************
// 『スレッド インサート』
//****************************************
function f_InsLog_Thread(){
global $gInit;
// 値が入っていなかったら
if( count($_POST)==0 ){
gf_ErrPage("値が取得できませんでした", ADMIN_MAIL);
}
// 書込み制限
if(!gf_IsNull($gInit["refusal"])){
if(ereg($gInit["refusal"],$_SERVER['REMOTE_ADDR'])){
gf_ErrPage("書込み制限により書き込みできませんでした","");
}
}
// ログファイル取得
$wFileName = $gInit["log_file"];
if(!file_exists($wFileName)){
gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
}
// 読み込み
$wFp = @fopen($wFileName,"rb") or gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
flock($wFp, LOCK_EX);
$i = 1;
while (!feof($wFp)) {
if( $i >= $gInit["MaxNum"] ){ break; }
$wFileVal .= fgets($wFp, 999999);
$i++;
}
flock($wFp, LOCK_UN);
fclose ($wFp);
$wThreadNo = f_GetThreadNo();
$wName = ereg_replace(",", "‚", StripSlashes($_POST["name"]));
$wHp = ereg_replace(",", "‚", StripSlashes($_POST["hp"]));
if($wHp=="http://"){
$wHp = "";
}
$wMail = ereg_replace(",", "‚", StripSlashes($_POST["mail"]));
$wMsg = ereg_replace(",", "‚", StripSlashes($_POST["msg"]));
$wMsg = ereg_replace("(\n|\r|\r\n)", "
", $wMsg);
$wFileVal = ereg_replace("(\n|\r|\r\n)", "\n", $wFileVal);
$wFileVal = $wThreadNo.",".date("YmdHis").",".$wName.",".$wHp.",".$wMail.",".$wMsg.",".$_SERVER['REMOTE_ADDR']."\n".$wFileVal;
// 書込み
$wFp = @fopen($wFileName, "w") or gf_ErrPage("BBS書き込み時にエラーが発生しました", ADMIN_MAIL);
flock($wFp, LOCK_EX);
fputs($wFp, $wFileVal);
flock($wFp, LOCK_UN);
fclose ($wFp);
$_SESSION["sBbsLog"] = "";
setcookie("name", htmlspecialchars($wName,ENT_QUOTES), time()+259200);
setcookie("hp", htmlspecialchars($wHp,ENT_QUOTES), time()+259200);
setcookie("mail", htmlspecialchars($wMail,ENT_QUOTES), time()+259200);
header("Location: bbs.php?id=".$_GET["id"]."&page=1");
}
//****************************************
// 『レス インサート』
//****************************************
function f_InsLog_Res(){
global $gInit;
// 値が入っていなかったら
if( count($_POST)==0 ){
gf_ErrPage("値が取得できませんでした", ADMIN_MAIL);
}
// 書込み制限
if(!gf_IsNull($gInit["refusal"])){
if(ereg($gInit["refusal"],$_SERVER['REMOTE_ADDR'])){
gf_ErrPage("書込み制限により書き込みできませんでした","");
}
}
// ログファイル取得
$wFileName = $gInit["log_file"];
if(!file_exists($wFileName)){
gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
}
// 読み込み
$wFp = @fopen($wFileName,"rb") or gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
flock($wFp, LOCK_EX);
while (!feof($wFp)) {
$wBuf = fgets($wFp, 999999);
$wBuf = ereg_replace("\n", "", $wBuf);
if(!gf_IsNull($wBuf)){
$wAryBuf = split(",",$wBuf);
if( $wAryBuf[0] == $_GET["t_id"] ){
$wOldVal = ereg_replace("(\n|\r|\r\n)", "", $wBuf);
}else{
$wFileVal .= $wBuf."\n";
}
}
}
flock($wFp, LOCK_UN);
fclose ($wFp);
$wThreadNo = f_GetThreadNo();
$wName = ereg_replace(",", "‚", StripSlashes($_POST["name"]));
$wHp = ereg_replace(",", "‚", StripSlashes($_POST["hp"]));
if( $wHp == "http://" ){
$wHp = "";
}
$wMail = ereg_replace(",", "‚", StripSlashes($_POST["mail"]));
$wMsg = ereg_replace(",", "‚", StripSlashes($_POST["msg"]));
$wMsg = ereg_replace("(\n|\r|\r\n)", "
", $wMsg);
$wFileVal = ereg_replace("(\n|\r|\r\n)", "\n", $wFileVal);
$wUpdVal = $wOldVal.",".$wThreadNo."#%#".date("YmdHis")."#%#".$wName."#%#".$wHp."#%#".$wMail."#%#".$wMsg."#%#".$_SERVER['REMOTE_ADDR']."\n".$wFileVal;
// 書込み
$wFp = @fopen($wFileName, "w") or gf_ErrPage("BBS書き込み時にエラーが発生しました", ADMIN_MAIL);
flock($wFp, LOCK_EX);
fputs($wFp, $wUpdVal);
flock($wFp, LOCK_UN);
fclose ($wFp);
$_SESSION["sBbsLog"] = "";
setcookie("name", htmlspecialchars($wName,ENT_QUOTES), time()+259200);
setcookie("hp", htmlspecialchars($wHp,ENT_QUOTES), time()+259200);
setcookie("mail", htmlspecialchars($wMail,ENT_QUOTES), time()+259200);
header("Location: bbs.php?id=".$_GET["id"]."&page=1");
}
//****************************************
// 『スレッド デリート』
//****************************************
function f_DelLog_Thread(){
global $gInit;
// 値が入っていなかったら
if( count($_POST)==0 ){
gf_ErrPage("値が取得できませんでした", ADMIN_MAIL);
}
// ログファイル取得
$wFileName = $gInit["log_file"];
if(!file_exists($wFileName)){
gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
}
// 読み込み
$wFp = @fopen($wFileName,"rb") or gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
flock($wFp, LOCK_EX);
while (!feof($wFp)) {
$wBuf = fgets($wFp, 999999);
$wBuf = ereg_replace("\n", "", $wBuf);
if(!gf_IsNull($wBuf)){
$wAryBuf = split(",",$wBuf);
if( $wAryBuf[0] != $_POST["hid_no"] ){
$wFileVal .= $wBuf."\n";
}
}
}
flock($wFp, LOCK_UN);
fclose ($wFp);
$wFileVal = ereg_replace("(\n|\r|\r\n)", "\n", $wFileVal);
// 書込み
$wFp = @fopen($wFileName, "w") or gf_ErrPage("BBS書き込み時にエラーが発生しました", ADMIN_MAIL);
flock($wFp, LOCK_EX);
fputs($wFp, $wFileVal);
flock($wFp, LOCK_UN);
fclose ($wFp);
$_SESSION["sBbsLog"] = "";
header("Location: bbs.php?id=".$_GET["id"]."&page=".$_GET["page"]);
}
//****************************************
// 『レス デリート』
//****************************************
function f_DelLog_Res(){
global $gInit;
// 値が入っていなかったら
if( count($_POST)==0 ){
gf_ErrPage("値が取得できませんでした", ADMIN_MAIL);
}
// ログファイル取得
$wFileName = $gInit["log_file"];
if(!file_exists($wFileName)){
gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
}
// 読み込み
$wFp = @fopen($wFileName,"rb") or gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
flock($wFp, LOCK_EX);
while (!feof($wFp)) {
$wBuf = fgets($wFp, 999999);
if(!gf_IsNull($wBuf)){
$wBuf = ereg_replace("\(","%28",$wBuf);
$wBuf = ereg_replace("\)","%29",$wBuf);
$wUpdVal = ereg_replace("(,".$_POST["hid_no"]."#%#)[^((\n|\r|\r\n)|,)]*((\n|\r|\r\n)|,)",",",$wBuf);
$wUpdVal = ereg_replace("%28","(",$wUpdVal);
$wUpdVal = ereg_replace("%29",")",$wUpdVal);
if( substr($wUpdVal, -1) == ","){
$wUpdVal = substr($wUpdVal, 0, -1)."\n";
}
$wFileVal .= $wUpdVal;
}
}
flock($wFp, LOCK_UN);
fclose ($wFp);
$wFileVal = ereg_replace("(\n|\r|\r\n)", "\n", $wFileVal);
// 書込み
$wFp = @fopen($wFileName, "w") or gf_ErrPage("BBS書き込み時にエラーが発生しました", ADMIN_MAIL);
flock($wFp, LOCK_EX);
fputs($wFp, $wFileVal);
flock($wFp, LOCK_UN);
fclose ($wFp);
$_SESSION["sBbsLog"] = "";
header("Location: bbs.php?id=".$_GET["id"]."&page=".$_GET["page"]);
}
//****************************************
// 『ログデータ取得』
//****************************************
function f_GetLog(){
global $gInit;
// セッション削除
$_SESSION["sBbsLog"] = "";
if( $_SESSION["sBbsId"] != $_GET["id"] or $_SESSION["sHostName"] != $_SERVER["HTTP_HOST"] ){
session_unregister("sLoginFlg");
$_SESSION["sBbsId"] = $_GET["id"];
$_SESSION["sHostName"] = $_SERVER["HTTP_HOST"];
}
// ログファイル
$wFileName = $gInit["log_file"];
if(!file_exists($wFileName)){
$wFp = @fopen($wFileName,"w") or gf_ErrPage("BBSログファイル作成時にエラーが発生しました", ADMIN_MAIL);
fclose($wFp);
chmod ( $wFileName, 0606);
}
// ログのバックアップ
gf_LogBackUp($wFileName);
if(!is_array($_SESSION["sBbsLog"])){
$_SESSION["sBbsLog"] = "";
// ログファイルオープン
$i = 0;
$wFp = @fopen ($wFileName, "rb") or gf_ErrPage("BBSログファイルが見つかりません", ADMIN_MAIL);
flock($wFp, LOCK_EX);
while (!feof($wFp)) {
$wBuf = fgets($wFp, 999999);
$wBuf = ereg_replace("\n", "", $wBuf);
if(!gf_IsNull($wBuf)){
$_SESSION["sBbsLog"][$i] = split(",",$wBuf);
$i++;
}
}
flock($wFp, LOCK_UN);
fclose ($wFp);
}
}
//********************************
// html表示
//********************************
function f_ShowHtml(){
global $gInit, $gImgPath;
?>