diff --git a/gazou-v2.0.zip b/gazou-v2.0.zip deleted file mode 100644 index ab4bf53..0000000 Binary files a/gazou-v2.0.zip and /dev/null differ diff --git a/gazou-v2.0/gazou.php b/gazou-v2.0/gazou.php new file mode 100644 index 0000000..3e8df8a --- /dev/null +++ b/gazou-v2.0/gazou.php @@ -0,0 +1,579 @@ + タグで直接表示するかどうか 1 で表示 0 で表示しない +$show_img = 1; + +# 同一ホストからの連続投稿を制限 +# --> 秒数を記述するとその時間以上を経過しないと連続投稿できない +$w_regist = 30; + +# 管理者が許可した画像のみ表示(チェックしてから:1,すべて表示:0) +$ImageCheck = 1; + +# 上で1の場合、チェックされてない画像の代替画像 +$IconSoon = './soon.gif'; + +# 画像ファイルの最大表示の大きさ(単位:ピクセル) +# --> これを超える画像は縮小表示します +$MaxW = 250; # 横幅 +$MaxH = 100; # 縦幅 + +# アップロード可能な最大サイズ(単位 : KB) +# -->PHP3.iniまたはphp3_upload_max_filesizeによりますが、 +# デフォルト値である2メガ以上は設定できません。 +$maxbyte = 150; + +# 時差(hour) +$jisa = 0; +//---------設定ここまで-------------- + +$maxsize = $maxbyte * 1024; //バイトに変換 +function head(&$dat){ //ヘッダー表示部 + global $mode,$no,$PHP_SELF,$logfile,$maxsize,$MaxW,$MaxH,$title; + + if($mode == "resmsg"){ //レスの場合 + $res = file($logfile); + $flag = 0; + while (list($key, $value) = each ($res)) { + list($rno,$date,$name,$mail,$sub,$com,$url) = explode("<>", $value); + if ($no == "$rno"){ $flag=1; break; } + } + if ($flag == 0) error("該当記事が見つかりません"); + + $sub = ereg_replace("^Re", "", $sub); + $r_sub = "Re:[$no] $sub"; + $r_com = "> $com"; + $r_com = eregi_replace("
","\r> ",$r_com); + } + $dat=' + + + +'.$title.' + +

+'.$title.' +


+[トップに戻る] +[ワード検索] +[管理用] +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
おなまえ
Eメール
題  名 + + +
+ メッセージ
+ +
URL
添付File
削除キー + + (記事の削除用。英数字で8文字以内) +
+ +
  • 添付可能ファイル : GIF, JPG, PNG
    +
  • ブラウザによっては正常に添付できないことがあります。
    +
  • 最大投稿データ量は '.$maxbyte.'KB までです。
    +
  • 画像は横 '.$MaxW.'ピクセル、縦 '.$MaxH.'ピクセルを超えると縮小表示されます。 +
  • +

    '; +} +function foot(&$dat){ //フッター表示部 + global $PHP_SELF; +$dat.=' + +
    + +【記事削除】
    +記事No +削除キー + +

    +

    +- GazouBBS - +

    +'; +} +function Main(&$dat){ //記事表示部 + global $logfile,$page_def,$up_dir,$page,$PHP_SELF,$path,$IconSoon,$ImageCheck; + + $view = file($logfile); + $logsize = sizeof($view); + + if(isset($page)) $start = $page; + else $start = $logsize - 1; + + $end = $start - $page_def + 1; + if($end < 0) $end = 0; + + for($s = $start;$s >= $end;$s--){ + list($no,$date,$name,$mail,$sub,$com,$url, + $host,$pw,$tail,$W,$H,$time2,$chk) = explode("<>", $view[$s]); + + if($url) { $url = "HOME"; } + if($mail){ $name = "$name"; } + + $dat.="[$no] $sub "; + $dat.="投稿者:$name 投稿日:$date "; + $dat.="[Res]   $url
    "; + $dat.="
    $com\n"; + + if (file_exists("$path$time2$tail")) { + if ($ImageCheck && $chk != 1) { + $dat.="

    "; + } elseif ($W && $H) { + $dat.="

    "; + } else { + $dat.= "

    "; + } + } + $dat.="


    \n"; + $p++; + } //end for + + if(($logsize > $page_def) && ($p >= $page_def)){ + $dat.="\n"; + $dat.="\n
    "; + $dat.="\n"; + $dat.="
    \n"; + } +} +function regist(){ //ログ書き込み + global $name,$email,$sub,$com,$url,$MaxW,$MaxH,$REMOTE_HOST,$REMOTE_ADDR; + global $pwd,$upfile,$html_url,$logfile,$jisa,$max,$w_regist,$path; + + # フォーム内容をチェック + if(empty($com)){ error("本文が書き込まれていません"); } + if(empty($sub)){ error("タイトルが記入されていません"); } + $times = time(); + + $check = file($logfile); + $tail = sizeof($check); + $last = $tail - 1; + list($tno,$tdate,$tname,$tmail,$tsub,$tcom, + $turl,$thost,$tpw,$ttail,$tw,$th,$ttime) = explode("<>", $check[$last]); + if($name == $tname && $com == $tcom) error("二重投稿は禁止です"); + + if ($w_regist && $times - $ttime < $w_regist) + error("連続投稿はもうしばらく時間を置いてからお願い致します"); + + # 記事Noを採番 + $no = $tno + 1; + + # ホスト名を取得 + $host = $REMOTE_HOST; + $addr = $REMOTE_ADDR; + if($host == "" || $host == $addr) $host=gethostbyaddr($addr); + + # 削除キーを暗号化 + if ($pwd) { $PW = crypt(($pwd),aa); } + + # URL自動リンク +// if ($autolink) { auto_link($com); } + + # 最大記事数処理 + if ($max < $tail) { + $del = file($logfile); + $top = $tail - $max; + for($j=$top; $j<=$tail; $j++){ + list($no,$date,$name,$mail,$sub,$com, + $url,$host,$pw,$ex,$w,$h,$tim)= explode("<>", $del[$j]); + if (file_exists("$path$tim$ex")){ unlink("$path$tim$ex"); } + $dp = fopen ($logfile,"w");flock($dp,2); + fputs($dp, $del[$j]);flock($dp,3); + fclose($dp); + } + } + $now = date( "Y/m/d(D) H:i",mktime()+$jisa*60*60); + $url = ereg_replace( "^http://", "",$url); + $sub = htmlspecialchars($sub); + $sub = stripslashes($sub); + $name = htmlspecialchars($name); + $name = stripslashes($name); + $com = htmlspecialchars($com); + $com = stripslashes($com); + $com = str_replace( "\r\n", "\r", $com); //改行文字の統一。 + $com = str_replace( "\r", "\n", $com); + $com = ereg_replace("\n(( | |\t)*\n){3,}","\n",$com);//連続する空行を一行 + $com = nl2br($com); //改行文字の前に
    を代入する。 + $com = ereg_replace( "\n", "", $com); //\nを文字列から消す。 + + if ($upfile) { + $size=UpFile(); + $W=$size[0];$H=$size[1]; + switch($size[2]) { + case 1: + $ext = ".gif"; + break; + case 2: + $ext = ".jpg"; + break; + case 3: + $ext = ".png"; + break; + } + + # 画像表示縮小 + if ($W > $MaxW || $H > $MaxH) { + $W2 = $MaxW / $W; + $H2 = $MaxH / $H; + + if ($W2 < $H2) { $key = $W2; } + else { $key = $H2; } + + $W = (int) $W * $key; + $H = (int) $H * $key; + } + } + $new_msg="$no<>$now<>$name<>$email<>$sub<>$com<>$url<>$host<>$PW<>$ext<>$W<>$H<>$times<><>\n"; + + $fp = fopen($logfile,"a"); + flock($fp,2); + fputs($fp, $new_msg); + flock($fp,3); + fclose($fp); + + # メール通知処理 +// if ($mailing == 1) { mail_to(); } +} +function UpFile(){ //アップロード処理 + global $up_dir,$upfile,$upfile_name,$path; + + $source = $upfile; + $source_name = $upfile_name; + + if(($source <> "none")&&($source <> "")){ + if($uperror <> 1){ + $dest = $path.$source_name; + if(copy($source,$dest)){ + echo "成功"; + $imagesize = getimagesize($dest); + + switch($imagesize[2]) { + case 0: + error("画像以外はアップロードできません"); + unlink($dest); + exit; + case 1: + echo " $imagesize[0] x $imagesize[1]
    "; + $newname = $path; + $newname .=time() . ".gif"; + if(copy($dest,$newname)) { + echo "GIF アップ成功
    $newname"; + } else { + error("GIF リネームに失敗"); + } + unlink ($dest); + break; + case 2: + echo "$imagesize[0] x $imagesize[1]
    "; + $newname = $path; + $newname .=time() . ".jpg"; + if(copy($dest,$newname)) { + echo "JPG アップ成功
    $newname"; + } else { + error("JPG リネームに失敗"); + } + unlink ($dest); + break; + case 3: + echo "$imagesize[0] x $imagesize[1]
    "; + $newname = $path; + $newname .=time() . ".png"; + if(copy($dest,$newname)) { + echo "PNG アップ成功
    $newname"; + } else { + error(" PNG リネームに失敗"); + } + unlink ($dest); + break; + } + } + else { + error("Upload ディレクトリに書きこみ失敗\n"); + $uperror = 1; + } + } + unlink($source); + } + return $imagesize; +} +function usrdel(){ //ユーザー削除 + global $pwd,$no,$logfile,$path; + if ($no == "" || $pwd == "") + { error("削除Noまたは削除キーが入力モレです"); } + + $logall = file($logfile); + $flag=0; + + while(list(,$lines)=each($logall)){ + list($o_no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$o_tim) = explode("<>",$lines); + if ($no == "$o_no") { $flag=1; $PWD=$pw; $upfile="$o_tim$tail"; } + else { $pushlog[]=$lines; } + } + + if ($flag == 0) { error("該当記事が見当たりません"); } + if ($PWD == "") { error("該当記事には削除キーが設定されていません"); } + + # 削除キーを照合 + $match = crypt(($pwd),aa); + if ($match != $PWD) { error("削除キーが違います"); } + + # ログを更新 + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($pushlog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + + if(file_exists("$path$upfile")){ unlink("$path$upfile"); } +} +function admin(){ //管理機能 + global $admin_pass,$PHP_SELF,$logfile,$path,$ImageCheck,$up_dir; + global $del,$pass,$chk; + if ($pass && $pass != "$pass") + { error("パスワードが違います"); } +?> + + + + +$title"; + echo ""; + echo "[掲示板に戻る]\n"; + echo "
    \n"; + echo "管理モード\n"; + echo "
    \n"; + + if (!$pass) { + echo "

    パスワードを入力して下さい

    \n"; + echo "
    \n"; + echo "\n"; + echo ""; + echo "
    \n"; + }else { + # 画像許可 + if ($chk) { + + # 画像情報をマッチングし更新 + $logall = file($logfile); + + while(list(,$lines)=each($logall)){ + list($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$o_tim,$check) = explode("<>",$lines); + if ($chk == "$no") { $lines="$no<>$date<>$name<>$mail<>$sub<>$com<>$url<>$host<>$pw<>$tail<>$w<>$h<>$o_tim<>1<>"; } + + $pushlog[]=$lines; + } + + # ログを更新 + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($pushlog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + } + + # 削除処理 + if ($del) { + + # 削除情報をマッチングし更新 + $delall = file($logfile); + + + while(list(,$delline)=each($delall)){ + $flag = 0; + list($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$time) = explode("<>",$delline); + if ($del == "$no") { + $flag = 1; + if (file_exists("$path$time$tail")){ + unlink("$path$time$tail");} + } + if($flag == 0){ $dellog[]=$delline; } + } + + # ログを更新 + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($dellog)){ + fputs($fp, $val); + } + flock($fp,3); + fclose($fp); + } + + # 削除画面を表示 + echo "
    \n"; + echo "\n"; + echo "\n"; + echo "

    削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい。\n"; + echo "

    \n"; + echo ""; + echo ""; + if ($ImageCheck) { echo ""; } + echo "\n"; + + $delmode = file($logfile); + + while (list(,$val)=each($delmode)){ + $img_flag=0; + list($no,$date,$name,$mail,$sub,$com,$url, + $host,$pw,$tail,$w,$h,$time,$chk) = explode("<>",$val); + + list($date,$dmy) = split("\(", $date); + if ($mail) { $name="$name"; } + $com = str_replace("
    ","",$com); + $com = htmlspecialchars($com); + if(strlen($com) > 40){ $com = substr($com,0,38) . " ..."; } + + if (file_exists("$path$time$tail")) { + $img_flag = 1; + $clip = "画像"; + $size = filesize("$path$time$tail"); + $all += $size; + } else { + $clip = ""; + $size = 0; + } + + echo ""; + echo ""; + echo ""; + echo "\n"; + + # 画像許可 + if ($ImageCheck) { + if ($img_flag == 1 && $chk == 1) { + echo ""; + } elseif ($img_flag == 1 && $chk != 1) { + echo ""; + } else { + echo ""; + } + } + + echo "\n"; + } + + echo "
    削除記事No投稿日題名投稿者コメントホスト名添付
    (Bytes)
    画像
    許可
    $no$date$sub$name$com$host$clip
    ($size)
    OK
    \n"; + echo "

    "; + echo "

    \n"; + + $all = (int)($all / 1024); + echo "【添付デ?[タ総数 : $all KB】\n"; + } + echo "
    \n"; + echo "\n"; + exit; +} +function MakeHtml(){ //HTML生成 + global $html_file; + + head($buf); + Main($buf); + foot($buf); + + $hp = fopen ($html_file,"w"); + flock($hp,2); + fputs($hp, $buf); + flock($hp,3); + fclose($hp); + + include("$html_file"); + exit; +} +function error($mes){ //エラーフォーマット + ?> + + + +




    +
    +


    + \ No newline at end of file diff --git a/gazou-v2.1.zip b/gazou-v2.1.zip deleted file mode 100644 index c1f4394..0000000 Binary files a/gazou-v2.1.zip and /dev/null differ diff --git a/gazou-v2.1/gazou.php b/gazou-v2.1/gazou.php new file mode 100644 index 0000000..3a7106b --- /dev/null +++ b/gazou-v2.1/gazou.php @@ -0,0 +1,563 @@ +http://www.coolfreehost.com http://www.saxen.net + * + *2000/10/26 v1.0 �ソスニりあ�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス + *2000/10/18 v1.1 URL�ソスA�ソス�ソス�ソス[�ソス�ソス�ソス�ソス\�ソス�ソス�ソスA�ソス�ソス + *2000/11/28 v1.2 �ソス�除�ソス@�ソス\ + *2000/11/30 v2.0 �ソスヌ暦ソス�ソス@�ソス\�ソスA�ソス鞫懶ソス`�ソスF�ソスb�ソスN�ソスi�ソス�ソス�ソスO�ソス�ソス�ソスレ追会ソス�ソスj�ソス�ソス + *2001/03/17 v2.1 �ソス�ソス�ソス�ソス�ソスト茨ソスツに、�ソス鞫懶ソスロ托ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスヤ��ソス�ソス�ソス�ソス[�ソスJ�ソス�ソス�ソス�ソス + */ +//-------------�ソスン定こ�ソス�ソス�ソス�ソス�ソス�ソス------------- +# �ソスf�ソス�ソス�ソスツのタ�ソスC�ソスg�ソス�ソス +$title = '�ソス鞫廝BS�ソス`�ソス�ソス'; + +# �ソスヌ暦ソス�ソスメ用�ソスp�ソスX�ソス�ソス�ソス[�ソスh�ソスB�ソスK�ソス�ソス�ソスマ更�ソス�ソス�ソスト会ソス�ソス�ソス�ソス�ソス�ソスB +$admin_pass = '0123'; + +# �ソスt�ソス@�ソスC�ソス�ソス�ソス�ソス�ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソスf�ソスB�ソス�ソス�ソスN�ソスg�ソス�ソス +# �ソスナ鯉ソス�ソス / �ソスノゑソス�ソスト会ソス�ソス�ソス�ソス�ソス�ソスB +$up_dir = '/img/'; + +# �ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソスf�ソスB�ソス�ソス�ソスN�ソスg�ソス�ソス�ソスフ撰ソスホパ�ソスX +$path = dirname($PATH_TRANSLATED).$up_dir; + +# �ソス�ソス�ソスO�ソスロ托ソス�ソスt�ソス@�ソスC�ソス�ソス +$logfile = 'imglog.log'; + +# �ソステ的HTML�ソス�ソス�ソス�ソス�ソス�ソス�ソスo�ソス�ソス�ソス鼾��ソス�ソスHTML�ソスt�ソス@�ソスC�ソス�ソス +$html_file = ''; + +# �ソス�ソスy�ソス[�ソスW�ソス�ソス�ソス�ソス�ソス�ソスフ表�ソス�ソス�ソスL�ソス�ソス�ソス�ソス +$page_def = 7; + +# �ソスナ托ソスL�ソス^�ソス�ソス�ソス�ソス �ソス�ソス�ソス�ソス�ソス�ソスz�ソス�ソス�ソス�ソスニ古ゑソス�ソス�ソス�ソス�ソス�ソス迴��ソスノ削除�ソス�ソス�ソス�ソスワゑソス�ソスB +$max = 200; + +# �ソス鞫懶ソスt�ソス@�ソスC�ソス�ソス�ソス�ソス �ソス^�ソスO�ソスナ抵ソス�ソスレ表�ソス�ソス�ソス�ソス�ソス驍ゥ�ソスヌゑソス�ソス�ソス 1 �ソスナ表�ソス�ソス 0 �ソスナ表�ソス�ソス�ソス�ソス�ソスネゑソス +$show_img = 1; + +# �ソス�ソス�ソス�ソスz�ソスX�ソスg�ソス�ソス�ソス�ソスフ連�ソス�ソス�ソス�ソス�ソスe�ソス�制鯉ソス +# --> �ソスb�ソス�ソス�ソス�ソス�ソスL�ソスq�ソス�ソス�ソス�ソスニゑソス�ソスフ趣ソス�ソスヤ以擾ソス�ソス�ソスo�ソス゚ゑソス�ソスネゑソス�ソスニ連�ソス�ソス�ソス�ソス�ソスe�ソスナゑソス�ソスネゑソス +$w_regist = 0; + +# �ソスヌ暦ソス�ソスメゑソス�ソス�ソス�ソスツゑソス�ソス�ソス�ソス鞫懶ソスフみ表�ソス�ソス�ソスi�ソス`�ソスF�ソスb�ソスN�ソス�ソス�ソストゑソス�ソス�ソスF1,�ソス�ソス�ソスラて表�ソス�ソス�ソスF0�ソスj +$ImageCheck = 0; + +# �ソス�ソス�ソス1�ソスフ場合�ソスA�ソス`�ソスF�ソスb�ソスN�ソス�ソス�ソス�ソストなゑソス�ソス鞫懶ソスフ托ソスヨ画像 +$IconSoon = './soon.gif'; + +# �ソス鞫懶ソスt�ソス@�ソスC�ソス�ソス�ソスフ最托ソス\�ソス�ソス�ソスフ大き�ソス�ソス�ソスi�ソスP�ソスハ:�ソスs�ソスN�ソスZ�ソス�ソス�ソスj +# --> �ソス�ソス�ソス�ソス�超ゑソス�ソス�ソス鞫懶ソスヘ縮�ソス�ソス�ソス\�ソス�ソス�ソス�ソス�ソスワゑソス +$MaxW = 300; # �ソス�ソス�ソス�ソス +$MaxH = 300; # �ソスc�ソス�ソス + +# �ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソスツ能�ソスネ最托ソスT�ソスC�ソスY�ソスi�ソスP�ソス�ソス : KB�ソスj +# -->php.ini�ソスワゑソス�ソス�ソスphp_upload_max_filesize�ソスノゑソス�ソスワゑソス�ソス�ソス�ソスA +# �ソスf�ソスt�ソスH�ソス�ソス�ソスg�ソスl�ソスナゑソス�ソス�ソスQ�ソス�ソス�ソスK�ソスネ擾ソスヘ設抵ソスナゑソス�ソスワゑソス�ソス�ソスB +$maxbyte = 150; +$HTML = 0; +//---------�ソスン定こ�ソス�ソス�ソスワゑソス-------------- +$maxsize = $maxbyte * 1024; //�ソスo�ソスC�ソスg�ソスノ変奇ソス +function head(&$dat){ //�ソスw�ソスb�ソス_�ソス[�ソス\�ソス�ソス�ソス�ソス + global $mode,$no,$PHP_SELF,$logfile,$maxsize,$maxbyte,$MaxW,$MaxH,$title; + + if($mode == "resmsg"){ //�ソス�ソス�ソスX�ソスフ場合 + $res = file($logfile); + $flag = 0; + while (list($key, $value) = each ($res)) { + list($rno,$date,$name,$mail,$sub,$com,$url) = explode("<>", $value); + if ($no == "$rno"){ $flag=1; break; } + } + if ($flag == 0) error("�ソスY�ソス�ソス�ソスL�ソス�ソス�ソス�ソス�ソス�ソス�ソスツゑソス�ソス�ソスワゑソス�ソス�ソス"); + + $r_sub = "Re:$sub"; + $r_com = ">$com"; + $r_com = eregi_replace("
    ","\r>",$r_com); + } + $dat=' + + +'.$title.' + +

    +[�ソスg�ソスb�ソスv�ソスノ戻ゑソス] +[�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソス] +[�ソスヌ暦ソス�ソスp] +

    +

    +'.$title.' +


    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    �ソス�ソス�ソスネまゑソス
    �ソスd�ソス�ソス�ソス[�ソス�ソス
    �ソス�ソス@�ソス@�ソス�ソス + + +
    �ソスR�ソス�ソス�ソス�ソス�ソスg +
    �ソスt�ソスq�ソスk
    �ソスY�ソスtFile
    �ソス�除�ソスL�ソス[ + + (�ソスL�ソス�ソス�ソスフ削除�ソスp�ソスB�ソスp�ソス�ソス�ソス�ソス�ソス�ソス8�ソス�ソス�ソス�ソス�ソスネ難ソス) +
    + +
  • �ソスY�ソスt�ソスツ能�ソスt�ソス@�ソスC�ソス�ソス �ソスF GIF, JPG, PNG
    +
  • �ソスu�ソス�ソス�ソスE�ソスU�ソスノゑソス�ソス�ソストは撰ソス�ソス�ソスノ添�ソスt�ソスナゑソス�ソスネゑソス�ソス�ソス�ソスニゑソス�ソス�ソス�ソス�ソスワゑソス�ソスB
    +
  • �ソスナ大投�ソスe�ソスf�ソス[�ソス^�ソスハゑソス '.$maxbyte.'KB �ソスワででゑソス�ソスB
    +
  • �ソス鞫懶ソスヘ会ソス '.$MaxW.'�ソスs�ソスN�ソスZ�ソス�ソス�ソスA�ソスc '.$MaxH.'�ソスs�ソスN�ソスZ�ソス�ソス�ソス�超ゑソス�ソス�ソスニ縮�ソス�ソス�ソス\�ソス�ソス�ソス�ソス�ソス�ソスワゑソス�ソスB +
  • +
    '; +} +function foot(&$dat){ //�ソスt�ソスb�ソス^�ソス[�ソス\�ソス�ソス�ソス�ソス + global $PHP_SELF; +$dat.=' + +
    + +�ソスy�ソスL�ソス�ソス�ソス�除�ソスz
    +�ソスL�ソス�ソスNo +�ソス�除�ソスL�ソス[ + +

    +

    +- GazouBBS - +

    +'; +} +function Main(&$dat){ //�ソスL�ソス�ソス�ソス\�ソス�ソス�ソス�ソス + global $logfile,$page_def,$up_dir,$page,$PHP_SELF, + $path,$IconSoon,$ImageCheck; + + $view = file($logfile); + $logsize = sizeof($view); + + if(isset($page)) $start = $page; + else $start = $logsize - 1; + + $end = $start - $page_def + 1; + if($end < 0) $end = 0; + + for($s = $start;$s >= $end;$s--){ + list($no,$date,$name,$mail,$sub,$com,$url, + $host,$pw,$imgfile,$W,$H,$time2,$chk) = explode("<>", $view[$s]); + + if($url) { $url = "HOME"; } + if($mail){ $name = "$name"; } + $com = eregi_replace("(>)([^<]*)", "\\1\\2", $com); + + if ($imgfile && file_exists("$path$imgfile")) { + if ($ImageCheck && $chk != 1) { + $dat.="

    "; + } elseif ($W && $H) { + $dat.="

    "; + } else { + $dat.= "

    "; + } + } + + $dat.="No.$no $sub
    "; + $dat.="Name $name Date $date "; + $dat.="[RES]   $url

    "; + $dat.="

    \n"; + $dat.="$com


    \n"; + $p++; + } //end for + + if(($logsize > $page_def) && ($p >= $page_def)){ + $dat.="\n"; + $dat.="\n
    "; + $dat.="\n"; + $dat.="
    \n"; + } +} +function regist(){ //�ソス�ソス�ソスO�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス + global $name,$email,$sub,$com,$url,$MaxW,$MaxH,$source_name; + global $pwd,$upfile,$html_url,$logfile,$jisa,$max,$w_regist,$path; + + // �ソスt�ソスH�ソス[�ソス�ソス�ソス�ソス�ソスe�ソス�ソス�ソス`�ソスF�ソスb�ソスN + if(empty($com)){ error("�ソス{�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスワゑソストゑソス�ソスワゑソス�ソス�ソス"); } + if(empty($name)){ error("�ソス�ソス�ソスO�ソス�ソス�ソスL�ソス�ソス�ソス�ソス�ソス�ソストゑソス�ソスワゑソス�ソス�ソス"); } + if(empty($sub)){ $sub="�ソスi�ソス�ソス�ソス�ソスj"; } + + $check = file($logfile); + $tail = sizeof($check); + $last = $tail - 1; + list($tno,$tdate,$tname,$tmail,$tsub,$tcom, + $turl,$thost,$tpw,$ttail,$tw,$th,$ttime) = explode("<>", $check[$last]); + if($name == $tname && $com == $tcom) error("�ソス�ソスd�ソス�ソス�ソスe�ソスヘ禁止�ソスナゑソス"); + if ($w_regist && $times - $ttime < $w_regist) + error("�ソスA�ソス�ソス�ソス�ソス�ソスe�ソスヘゑソス�ソス�ソス�ソス�ソス�ソスホらく�ソス�ソス�ソスヤゑソスu�ソス�ソス�ソストゑソス�ソス轤ィ�ソス閧「�ソスv�ソス�ソス�ソスワゑソス"); + + // �ソスL�ソス�ソスNo�ソス�ソス�ソスフ費ソス + $no = $tno + 1; + + // �ソスz�ソスX�ソスg�ソス�ソス�ソス�ソス�ソス謫セ + $host = getenv("REMOTE_HOST"); + $addr = getenv("REMOTE_ADDR"); + if($host == "" || $host == $addr) $host=@gethostbyaddr($addr); + + // �ソス�除�ソスL�ソス[�ソス�ソス�ソステ搾ソス�ソス�ソス + if ($pwd) { $PW = crypt(($pwd),aa); } + + // URL�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスN + if ($autolink) { auto_link($com); } + + // �ソスナ托ソスL�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス + if ($max < $tail) { + $del = file($logfile); + $top = $tail - $max; + for($j=$top; $j<=$tail; $j++){ + list($no,$date,$name,$mail,$sub,$com, + $url,$host,$pw,$ex,$w,$h,$tim)= explode("<>", $del[$j]); + if (file_exists("$path$tim$ex")){ unlink("$path$tim$ex"); } + $dp = fopen ($logfile,"w");flock($dp,2); + fputs($dp, $del[$j]);flock($dp,3); + fclose($dp); + } + } + $now = gmdate( "Y/m/d(D) H:i",time()+9*60*60); + $url = ereg_replace( "^http://", "",$url); + $sub = htmlspecialchars($sub); + $sub = stripslashes($sub); + $name = htmlspecialchars($name); + $name = stripslashes($name); + $com = htmlspecialchars($com); + $com = stripslashes($com); + $com = str_replace( "\r\n", "\r", $com); //�ソス�ソス�ソスs�ソス�ソス�ソス�ソス�ソスフ難ソス�ソス�ソスB + $com = str_replace( "\r", "\n", $com); + $com = ereg_replace("\n((�ソス@| |\t)*\n){3,}","\n",$com);//�ソスA�ソス�ソス�ソス�ソス�ソス�ソス�ソスs�ソス�ソス�ソス�ソスs + $com = nl2br($com); //�ソス�ソス�ソスs�ソス�ソス�ソス�ソス�ソスフ前�ソス�ソス
    �ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスB + $com = ereg_replace( "\n", "", $com); //\n�ソス�文趣ソス�ソス�かゑソス�ソス�ソス�ソス�ソスB + $times = time(); + if ($upfile) { + $fname=UpFile(); + $size = @getimagesize("$path$fname"); + $W=$size[0];$H=$size[1]; + + + // �ソス鞫懶ソス\�ソス�ソス�ソスk�ソス�ソス + if ($W > $MaxW || $H > $MaxH) { + $W2 = $MaxW / $W; + $H2 = $MaxH / $H; + + ($W2 < $H2) ? $key = $W2 : $key = $H2; + + $W = (int) $W * $key; + $H = (int) $H * $key; + } + } + $new_msg="$no<>$now<>$name<>$email<>$sub<>$com<>$url<>$host<>$PW<>$fname<>$W<>$H<>$times<><>\n"; + + $fp = fopen($logfile,"a"); + flock($fp,2); + fputs($fp, $new_msg); + flock($fp,3); + fclose($fp); + +// �ソス�ソス�ソス[�ソス�ソス�ソスハ知�ソス�ソス�ソス�ソス +// if ($mailing == 1) { mail_to(); } +} +function UpFile(){ //�ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソス + global $up_dir,$upfile,$upfile_name,$path; + + $source = $upfile; + $source_name = $upfile_name; + + if(($source != "none")&&($source != "")){ + $dest = $path.$source_name; + if(copy($source,$dest)){ + echo "�ソス�ソス�ソス�ソス"; + $imagesize = getimagesize($dest); + + switch($imagesize[2]) { + case 0: + error("�ソス鞫懶ソスネ外�ソスヘア�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソスナゑソス�ソスワゑソス�ソス�ソス"); + unlink($dest); + exit; + case 1: + echo " $imagesize[0] x $imagesize[1]
    "; + echo "GIF�ソス鞫� �ソスA�ソスb�ソスv�ソス�ソス�ソス�ソス �ソス| $dest"; + break; + case 2: + echo " $imagesize[0] x $imagesize[1]
    "; + echo "JPG�ソス鞫� �ソスA�ソスb�ソスv�ソス�ソス�ソス�ソス �ソス| $dest"; + break; + case 3: + echo " $imagesize[0] x $imagesize[1]
    "; + echo "PNG�ソス鞫� �ソスA�ソスb�ソスv�ソス�ソス�ソス�ソス �ソス| $dest"; + break; + } + } else { + error("Upload �ソスf�ソスB�ソス�ソス�ソスN�ソスg�ソス�ソス�ソスノ擾ソス�ソス�ソス�ソス�ソス�ソスン趣ソス�ソスs\n"); + } + unlink($source); +} + return $source_name; +} +function usrdel(){ //�ソス�ソス�ソス[�ソスU�ソス[�ソス�除 + global $pwd,$no,$logfile,$path; + if ($no == "" || $pwd == "") + { error("�ソス�除No�ソスワゑソス�ソスヘ削除�ソスL�ソス[�ソス�ソス�ソス�ソス�ソスヘ��ソス�ソス�ソス�ソスナゑソス"); } + + $logall = file($logfile); + $flag=0; + + while(list(,$lines)=each($logall)){ + list($o_no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$o_tim) = explode("<>",$lines); + if ($no == "$o_no") { $flag=1; $PWD=$pw; $upfile="$tail"; } + else { $pushlog[]=$lines; } + } + + if ($flag == 0) { error("�ソスY�ソス�ソス�ソスL�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスワゑソス�ソス�ソス"); } + if ($PWD == "") { error("�ソスY�ソス�ソス�ソスL�ソス�ソス�ソスノは削除�ソスL�ソス[�ソス�ソス�ソスン定さ�ソス�ソストゑソス�ソスワゑソス�ソス�ソス"); } + + // �ソス�除�ソスL�ソス[�ソス�ソス�ソスニ搾ソス + $match = crypt(($pwd),aa); + if ($match != $PWD) { error("�ソス�除�ソスL�ソス[�ソス�ソス�ソス痰「�ソスワゑソス"); } + + // �ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($pushlog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + + if(file_exists("$path$upfile")){ unlink("$path$upfile"); } +} +function admin(){ //�ソスヌ暦ソス�ソス@�ソス\ + global $admin_pass,$PHP_SELF,$logfile,$path,$ImageCheck; + global $del,$pass,$chk; + if ($pass && $pass != "$pass") + { error("�ソスp�ソスX�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス痰「�ソスワゑソス"); } +?> + + + +$title"; + echo ""; + echo "[�ソスf�ソス�ソス�ソスツに戻ゑソス]\n"; + echo "
    \n"; + echo "�ソスヌ暦ソス�ソス�ソス�ソス[�ソスh\n"; + echo "
    \n"; + + if (!$pass) { + echo "

    �ソスp�ソスX�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソスヘゑソス�ソスト会ソス�ソス�ソス�ソス�ソス

    \n"; + echo "
    \n"; + echo "\n"; + echo ""; + echo "
    \n"; + }else { + // �ソス鞫懶ソス�ソス�ソス�ソス + if ($chk) { + + // �ソス鞫懶ソス�ソス�ソス�ソス�ソス}�ソスb�ソス`�ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $logall = file($logfile); + + while(list(,$lines)=each($logall)){ + list($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$o_tim,$check) = explode("<>",$lines); + if ($chk == "$no") { $lines="$no<>$date<>$name<>$mail<>$sub<>$com<>$url<>$host<>$pw<>$tail<>$w<>$h<>$o_tim<>1<>"; } + + $pushlog[]=$lines; + } + + // �ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($pushlog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + } + + // �ソス�除�ソス�ソス�ソス�ソス + if ($del) { + + // �ソス�除�ソス�ソス�ソス�ソス�ソス}�ソスb�ソス`�ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $delall = file($logfile); + $flag = 0; + + while(list(,$delline)=each($delall)){ + list($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$time) = explode("<>",$delline); + if ($del == "$no") { + $flag = 1; + if (file_exists("$path$tail")){ + unlink("$path$tail"); } + continue; + } + if($flag == 0){ $dellog[]=$delline; } + } + + // �ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($dellog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + } + + // �ソス�除�ソス�ソスハゑソス\�ソス�ソス + echo "
    \n"; + echo "\n"; + echo "\n"; + echo "

    �ソス�除�ソス�ソス�ソス�ソス�ソス�ソス�ソスL�ソス�ソス�ソスフチ�ソスF�ソスb�ソスN�ソス{�ソスb�ソスN�ソスX�ソスノチ�ソスF�ソスb�ソスN�ソス�ソス�ソス�ソス�ソスA�ソス�除�ソス{�ソス^�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスト会ソス�ソス�ソス�ソス�ソス�ソスB\n"; + echo "

    \n"; + echo ""; + echo ""; + if ($ImageCheck) { echo ""; } + echo "\n"; + + $delmode = file($logfile); + + while (list(,$val)=each($delmode)){ + $img_flag=0; + list($no,$date,$name,$mail,$sub,$com,$url, + $host,$pw,$tail,$w,$h,$time,$chk) = explode("<>",$val); + + list($date,$dmy) = split("\(", $date); + if ($mail) { $name="$name"; } + $com = str_replace("
    ","",$com); + $com = htmlspecialchars($com); + if(strlen($com) > 40){ $com = substr($com,0,38) . " ..."; } + + if (file_exists("$path$tail")) { + $img_flag = 1; + $clip = "$File"; + $size = filesize("$path$tail"); + $all += $size; + } else { + $clip = ""; + $size = 0; + } + + echo ""; + echo ""; + echo ""; + echo "\n"; + + // �ソス鞫懶ソス�ソス�ソス�ソス + if ($ImageCheck) { + if ($img_flag == 1 && $chk == 1) { + echo ""; + } elseif ($img_flag == 1 && $chk != 1) { + echo ""; + } else { + echo ""; + } + } + + echo "\n"; + } + + echo "
    �ソス�除�ソスL�ソス�ソスNo�ソス�ソス�ソスe�ソス�ソス�ソス阮シ�ソス�ソス�ソスe�ソス�ソス�ソスR�ソス�ソス�ソス�ソス�ソスg�ソスz�ソスX�ソスg�ソス�ソス�ソスY�ソスt
    (Bytes)
    �ソス鞫�
    �ソス�ソス�ソス�ソス
    $no$date$sub$name$com$host$clip
    ($size)
    OK
    \n"; + echo "

    "; + echo "

    \n"; + + $all = (int)($all / 1024); + echo "�ソスy�ソスY�ソスt�ソスf�ソス[�ソス^�ソス�ソス�ソス�ソス �ソスF $all KB�ソスz\n"; + } + echo "
    \n"; + die (""); +} +function MakeHtml(){ //HTML�ソス�ソス�ソス�ソス + global $html_file; + + head($buf); + Main($buf); + foot($buf); + + $hp = fopen ($html_file,"w"); + flock($hp,2); + fputs($hp, $buf); + fclose($hp); + + include("$html_file"); + exit; +} +function error($mes){ //�ソスG�ソス�ソス�ソス[�ソスt�ソスH�ソス[�ソス}�ソスb�ソスg + ?> + + + +




    +
    +


    + '; + break; + case 'admin': + admin(); + break; + case 'usrdel': + usrdel(); + if($HTML) MakeHtml(); + break; + default: + head($buf); + Main($buf); + foot($buf); + echo $buf; + break; + endswitch; +?> \ No newline at end of file diff --git a/gazou-v2.3.zip b/gazou-v2.3.zip deleted file mode 100644 index f43ecf4..0000000 Binary files a/gazou-v2.3.zip and /dev/null differ diff --git a/gazou-v2.3/gazou.php b/gazou-v2.3/gazou.php new file mode 100644 index 0000000..c8795e8 --- /dev/null +++ b/gazou-v2.3/gazou.php @@ -0,0 +1,571 @@ +http://www.coolfreehost.com http://www.saxen.net + * + *2000/10/26 v1.0 �ソスニりあ�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス + *2000/10/18 v1.1 URL�ソスA�ソス�ソス�ソス[�ソス�ソス�ソス�ソス\�ソス�ソス�ソスA�ソス�ソス + *2000/11/28 v1.2 �ソス�除�ソス@�ソス\ + *2000/11/30 v2.0 �ソスヌ暦ソス�ソス@�ソス\�ソスA�ソス鞫懶ソス`�ソスF�ソスb�ソスN�ソスi�ソス�ソス�ソスO�ソス�ソス�ソスレ追会ソス�ソスj�ソス�ソス + *2001/03/17 v2.1 �ソス�ソス�ソス�ソス�ソスト茨ソスツに、�ソス鞫懶ソスロ托ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスヤ��ソス�ソス�ソス�ソス[�ソスJ�ソス�ソス�ソス�ソス + *2001/06/30 v2.2 Win�ソスt�ソス@�ソスC�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスp�ソスX\\�ソス�ソス�ソス�ソス�ソス�ソス + *2001/07/17 v2.3 �ソスヌ暦ソス�ソスp�ソスX�ソス�ソス�ソズグ修�ソス�ソス�ソスA�ソス�ソス + */ +//-------------�ソスン定こ�ソス�ソス�ソス�ソス�ソス�ソス------------- +# �ソスf�ソス�ソス�ソスツのタ�ソスC�ソスg�ソス�ソス +$title = '�ソス鞫廝BS�ソス`�ソス�ソス'; + +# �ソスヌ暦ソス�ソスメ用�ソスp�ソスX�ソス�ソス�ソス[�ソスh�ソスB�ソスK�ソス�ソス�ソスマ更�ソス�ソス�ソスト会ソス�ソス�ソス�ソス�ソス�ソスB +$admin_pass = 'asdfg'; + +# �ソスt�ソス@�ソスC�ソス�ソス�ソス�ソス�ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソスf�ソスB�ソス�ソス�ソスN�ソスg�ソス�ソス +# �ソスナ鯉ソス�ソス / �ソスノゑソス�ソスト会ソス�ソス�ソス�ソス�ソス�ソスB +$up_dir = '/img/'; + +# �ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソスf�ソスB�ソス�ソス�ソスN�ソスg�ソス�ソス�ソスフ撰ソスホパ�ソスX +$path = dirname($PATH_TRANSLATED).$up_dir; + +# �ソス�ソス�ソスO�ソスロ托ソス�ソスt�ソス@�ソスC�ソス�ソス +$logfile = 'imglog.log'; + +# html�ソスノ擾ソス�ソス�ソス�ソスo�ソス�ソス�ソス�ソス�ソスヌゑソス�ソス�ソス +$HTML = 0; +# �ソステ的HTML�ソス�ソス�ソス�ソス�ソス�ソス�ソスo�ソス�ソス�ソス鼾��ソス�ソスHTML�ソスt�ソス@�ソスC�ソス�ソス +$html_file = ''; + +# �ソス�ソスy�ソス[�ソスW�ソス�ソス�ソス�ソス�ソス�ソスフ表�ソス�ソス�ソスL�ソス�ソス�ソス�ソス +$page_def = 7; + +# �ソスナ托ソスL�ソス^�ソス�ソス�ソス�ソス �ソス�ソス�ソス�ソス�ソス�ソスz�ソス�ソス�ソス�ソスニ古ゑソス�ソス�ソス�ソス�ソス�ソス迴��ソスノ削除�ソス�ソス�ソス�ソスワゑソス�ソスB +$max = 200; + +# �ソス鞫懶ソスt�ソス@�ソスC�ソス�ソス�ソス�ソス �ソス^�ソスO�ソスナ抵ソス�ソスレ表�ソス�ソス�ソス�ソス�ソス驍ゥ�ソスヌゑソス�ソス�ソス 1 �ソスナ表�ソス�ソス 0 �ソスナ表�ソス�ソス�ソス�ソス�ソスネゑソス +$show_img = 1; + +# �ソス�ソス�ソス�ソスz�ソスX�ソスg�ソス�ソス�ソス�ソスフ連�ソス�ソス�ソス�ソス�ソスe�ソス�制鯉ソス +# --> �ソスb�ソス�ソス�ソス�ソス�ソスL�ソスq�ソス�ソス�ソス�ソスニゑソス�ソスフ趣ソス�ソスヤ以擾ソス�ソス�ソスo�ソス゚ゑソス�ソスネゑソス�ソスニ連�ソス�ソス�ソス�ソス�ソスe�ソスナゑソス�ソスネゑソス +$w_regist = 0; + +# �ソスヌ暦ソス�ソスメゑソス�ソス�ソス�ソスツゑソス�ソス�ソス�ソス鞫懶ソスフみ表�ソス�ソス�ソスi�ソス`�ソスF�ソスb�ソスN�ソス�ソス�ソストゑソス�ソス�ソスF1,�ソス�ソス�ソスラて表�ソス�ソス�ソスF0�ソスj +$ImageCheck = 0; + +# �ソス�ソス�ソス1�ソスフ場合�ソスA�ソス`�ソスF�ソスb�ソスN�ソス�ソス�ソス�ソストなゑソス�ソス鞫懶ソスフ托ソスヨ画像 +$IconSoon = './soon.gif'; + +# �ソス鞫懶ソスt�ソス@�ソスC�ソス�ソス�ソスフ最托ソス\�ソス�ソス�ソスフ大き�ソス�ソス�ソスi�ソスP�ソスハ:�ソスs�ソスN�ソスZ�ソス�ソス�ソスj +# --> �ソス�ソス�ソス�ソス�超ゑソス�ソス�ソス鞫懶ソスヘ縮�ソス�ソス�ソス\�ソス�ソス�ソス�ソス�ソスワゑソス +$MaxW = 300; # �ソス�ソス�ソス�ソス +$MaxH = 300; # �ソスc�ソス�ソス + +# �ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソスツ能�ソスネ最托ソスT�ソスC�ソスY�ソスi�ソスP�ソス�ソス : KB�ソスj +# -->php.ini�ソスワゑソス�ソス�ソスphp_upload_max_filesize�ソスノゑソス�ソスワゑソス�ソス�ソス�ソスA +# �ソスf�ソスt�ソスH�ソス�ソス�ソスg�ソスl�ソスナゑソス�ソス�ソスQ�ソス�ソス�ソスK�ソスネ擾ソスヘ設抵ソスナゑソス�ソスワゑソス�ソス�ソスB +$maxbyte = 150; + +// �ソス�ソス�ソス�ソス�ソス�ソスHP�ソスi�ソス�ソス�ソス�ソス�ソスN�ソスj +$HOME = "http://php.s3.to/"; +//---------�ソスン定こ�ソス�ソス�ソスワゑソス-------------- +$maxsize = $maxbyte * 1024; //�ソスo�ソスC�ソスg�ソスノ変奇ソス +function head(&$dat){ //�ソスw�ソスb�ソス_�ソス[�ソス\�ソス�ソス�ソス�ソス + global $mode,$no,$PHP_SELF,$logfile,$maxsize,$maxbyte,$MaxW,$MaxH,$title,$HOME; + + if($mode == "resmsg"){ //�ソス�ソス�ソスX�ソスフ場合 + $res = file($logfile); + $flag = 0; + while (list($key, $value) = each ($res)) { + list($rno,$date,$name,$mail,$sub,$com,$url) = explode("<>", $value); + if ($no == "$rno"){ $flag=1; break; } + } + if ($flag == 0) error("�ソスY�ソス�ソス�ソスL�ソス�ソス�ソス�ソス�ソス�ソス�ソスツゑソス�ソス�ソスワゑソス�ソス�ソス"); + + $r_sub = "Re:$sub"; + $r_com = ">$com"; + $r_com = eregi_replace("
    ","\r>",$r_com); + } + $dat=' + + +'.$title.' + +

    +[�ソスg�ソスb�ソスv�ソスノ戻ゑソス] +[�ソスヌ暦ソス�ソスp] +

    +

    +'.$title.' +


    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    �ソス�ソス�ソスネまゑソス
    �ソスd�ソス�ソス�ソス[�ソス�ソス
    �ソス�ソス@�ソス@�ソス�ソス + + +
    �ソスR�ソス�ソス�ソス�ソス�ソスg +
    �ソスt�ソスq�ソスk
    �ソスY�ソスtFile
    �ソス�除�ソスL�ソス[ + + (�ソスL�ソス�ソス�ソスフ削除�ソスp�ソスB�ソスp�ソス�ソス�ソス�ソス�ソス�ソス8�ソス�ソス�ソス�ソス�ソスネ難ソス) +
    + +
  • �ソスY�ソスt�ソスツ能�ソスt�ソス@�ソスC�ソス�ソス �ソスF GIF, JPG, PNG
    +
  • �ソスu�ソス�ソス�ソスE�ソスU�ソスノゑソス�ソス�ソストは撰ソス�ソス�ソスノ添�ソスt�ソスナゑソス�ソスネゑソス�ソス�ソス�ソスニゑソス�ソス�ソス�ソス�ソスワゑソス�ソスB
    +
  • �ソスナ大投�ソスe�ソスf�ソス[�ソス^�ソスハゑソス '.$maxbyte.'KB �ソスワででゑソス�ソスB
    +
  • �ソス鞫懶ソスヘ会ソス '.$MaxW.'�ソスs�ソスN�ソスZ�ソス�ソス�ソスA�ソスc '.$MaxH.'�ソスs�ソスN�ソスZ�ソス�ソス�ソス�超ゑソス�ソス�ソスニ縮�ソス�ソス�ソス\�ソス�ソス�ソス�ソス�ソス�ソスワゑソス�ソスB +
  • +
    '; +} +function foot(&$dat){ //�ソスt�ソスb�ソス^�ソス[�ソス\�ソス�ソス�ソス�ソス + global $PHP_SELF; +$dat.=' + +
    + +�ソスy�ソスL�ソス�ソス�ソス�除�ソスz
    +�ソスL�ソス�ソスNo +�ソス�除�ソスL�ソス[ + +

    +

    +- GazouBBS - +

    +'; +} +function Main(&$dat){ //�ソスL�ソス�ソス�ソス\�ソス�ソス�ソス�ソス + global $logfile,$page_def,$up_dir,$page,$PHP_SELF, + $path,$IconSoon,$ImageCheck; + + $view = file($logfile); + $logsize = sizeof($view); + + if(isset($page)) $start = $page; + else $start = $logsize - 1; + + $end = $start - $page_def + 1; + if($end < 0) $end = 0; + + for($s = $start;$s >= $end;$s--){ + list($no,$date,$name,$mail,$sub,$com,$url, + $host,$pw,$imgfile,$W,$H,$time2,$chk) = explode("<>", $view[$s]); + + if($url) { $url = "HOME"; } + if($mail){ $name = "$name"; } + $com = eregi_replace("(^|/>)(>[^<]*)", "\\1\\2", $com); + + if ($imgfile && file_exists("$path$imgfile")) { + if ($ImageCheck && $chk != 1) { + $dat.="

    "; + } elseif ($W && $H) { + $dat.="

    "; + } else { + $dat.= "

    "; + } + } + + $dat.="No.$no $sub
    "; + $dat.="Name $name Date $date "; + $dat.="[RES]   $url

    "; + $dat.="

    \n"; + $dat.="$com


    \n"; + $p++; + } //end for + + if(($logsize > $page_def) && ($p >= $page_def)){ + $dat.="\n"; + $dat.="\n
    "; + $dat.="\n"; + $dat.="
    \n"; + } +} +function regist(){ //�ソス�ソス�ソスO�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス + global $name,$email,$sub,$com,$url,$MaxW,$MaxH,$source_name; + global $pwd,$upfile,$html_url,$logfile,$jisa,$max,$w_regist,$path; + + // �ソスt�ソスH�ソス[�ソス�ソス�ソス�ソス�ソスe�ソス�ソス�ソス`�ソスF�ソスb�ソスN + if(empty($com)){ error("�ソス{�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスワゑソストゑソス�ソスワゑソス�ソス�ソス"); } + if(empty($name)){ error("�ソス�ソス�ソスO�ソス�ソス�ソスL�ソス�ソス�ソス�ソス�ソス�ソストゑソス�ソスワゑソス�ソス�ソス"); } + if(empty($sub)){ $sub="�ソスi�ソス�ソス�ソス�ソスj"; } + + $check = file($logfile); + $tail = sizeof($check); + $last = $tail - 1; + list($tno,$tdate,$tname,$tmail,$tsub,$tcom, + $turl,$thost,$tpw,$ttail,$tw,$th,$ttime) = explode("<>", $check[$last]); + if($name == $tname && $com == $tcom) error("�ソス�ソスd�ソス�ソス�ソスe�ソスヘ禁止�ソスナゑソス"); + if ($w_regist && $times - $ttime < $w_regist) + error("�ソスA�ソス�ソス�ソス�ソス�ソスe�ソスヘゑソス�ソス�ソス�ソス�ソス�ソスホらく�ソス�ソス�ソスヤゑソスu�ソス�ソス�ソストゑソス�ソス轤ィ�ソス閧「�ソスv�ソス�ソス�ソスワゑソス"); + + // �ソスL�ソス�ソスNo�ソス�ソス�ソスフ費ソス + $no = $tno + 1; + + // �ソスz�ソスX�ソスg�ソス�ソス�ソス�ソス�ソス謫セ + $host = getenv("REMOTE_HOST"); + $addr = getenv("REMOTE_ADDR"); + if($host == "" || $host == $addr) $host=@gethostbyaddr($addr); + + + // �ソス�除�ソスL�ソス[�ソス�ソス�ソステ搾ソス�ソス�ソス + if ($pwd) { $PW = crypt(($pwd),aa); } + + // URL�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスN + if ($autolink) { auto_link($com); } + + // �ソスナ托ソスL�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス + if ($max < $tail) { + $del = file($logfile); + $top = $tail - $max; + for($j=$top; $j<=$tail; $j++){ + list($no,$date,$name,$mail,$sub,$com, + $url,$host,$pw,$ex,$w,$h,$tim)= explode("<>", $del[$j]); + if (file_exists("$path$tim$ex")){ unlink("$path$tim$ex"); } + $dp = fopen ($logfile,"w");flock($dp,2); + fputs($dp, $del[$j]);flock($dp,3); + fclose($dp); + } + } + $now = gmdate( "Y/m/d(D) H:i",time()+9*60*60); + $url = ereg_replace( "^http://", "",$url); + $sub = htmlspecialchars($sub); + $sub = stripslashes($sub); + $name = htmlspecialchars($name); + $name = stripslashes($name); + $com = htmlspecialchars($com); + $com = stripslashes($com); + $com = str_replace( "\r\n", "\r", $com); //�ソス�ソス�ソスs�ソス�ソス�ソス�ソス�ソスフ難ソス�ソス�ソスB + $com = str_replace( "\r", "\n", $com); + $com = ereg_replace("\n((�ソス@| |\t)*\n){3,}","\n",$com);//�ソスA�ソス�ソス�ソス�ソス�ソス�ソス�ソスs�ソス�ソス�ソス�ソスs + $com = nl2br($com); //�ソス�ソス�ソスs�ソス�ソス�ソス�ソス�ソスフ前�ソス�ソス
    �ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスB + $com = ereg_replace( "\n", "", $com); //\n�ソス�文趣ソス�ソス�かゑソス�ソス�ソス�ソス�ソスB + $times = time(); + if ($upfile) { + $fname=UpFile(); + $size = @getimagesize("$path$fname"); + $W=$size[0];$H=$size[1]; + + + // �ソス鞫懶ソス\�ソス�ソス�ソスk�ソス�ソス + if ($W > $MaxW || $H > $MaxH) { + $W2 = $MaxW / $W; + $H2 = $MaxH / $H; + + ($W2 < $H2) ? $key = $W2 : $key = $H2; + + $W = (int) $W * $key; + $H = (int) $H * $key; + } + } + $new_msg="$no<>$now<>$name<>$email<>$sub<>$com<>$url<>$host<>$PW<>$fname<>$W<>$H<>$times<><>\n"; + + $fp = fopen($logfile,"a"); + flock($fp,2); + fputs($fp, $new_msg); + flock($fp,3); + fclose($fp); + +// �ソス�ソス�ソス[�ソス�ソス�ソスハ知�ソス�ソス�ソス�ソス +// if ($mailing == 1) { mail_to(); } +} +function UpFile(){ //�ソスA�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソス + global $up_dir,$upfile,$upfile_name,$path; + + $source = $upfile; + $source_name = $upfile_name; + //6/30 + $source_name = ereg_replace("^(.:.*\\\\)?(.*)", "\\2", $source_name); + + if(($source != "none")&&($source != "")){ + $dest = $path.$source_name; + if(copy($source,$dest)){ + echo "�ソス�ソス�ソス�ソス"; + $imagesize = getimagesize($dest); + + switch($imagesize[2]) { + case 0: + error("�ソス鞫懶ソスネ外�ソスヘア�ソスb�ソスv�ソス�ソス�ソス[�ソスh�ソスナゑソス�ソスワゑソス�ソス�ソス"); + unlink($dest); + exit; + case 1: + echo " $imagesize[0] x $imagesize[1]
    "; + echo "GIF�ソス鞫� �ソスA�ソスb�ソスv�ソス�ソス�ソス�ソス �ソス| $dest"; + break; + case 2: + echo " $imagesize[0] x $imagesize[1]
    "; + echo "JPG�ソス鞫� �ソスA�ソスb�ソスv�ソス�ソス�ソス�ソス �ソス| $dest"; + break; + case 3: + echo " $imagesize[0] x $imagesize[1]
    "; + echo "PNG�ソス鞫� �ソスA�ソスb�ソスv�ソス�ソス�ソス�ソス �ソス| $dest"; + break; + } + } else { + error("Upload �ソスf�ソスB�ソス�ソス�ソスN�ソスg�ソス�ソス�ソスノ擾ソス�ソス�ソス�ソス�ソス�ソスン趣ソス�ソスs\n"); + } + unlink($source); +} + return $source_name; +} +function usrdel(){ //�ソス�ソス�ソス[�ソスU�ソス[�ソス�除 + global $pwd,$no,$logfile,$path; + if ($no == "" || $pwd == "") + { error("�ソス�除No�ソスワゑソス�ソスヘ削除�ソスL�ソス[�ソス�ソス�ソス�ソス�ソスヘ��ソス�ソス�ソス�ソスナゑソス"); } + + $logall = file($logfile); + $flag=0; + + while(list(,$lines)=each($logall)){ + list($o_no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$o_tim) = explode("<>",$lines); + if ($no == "$o_no") { $flag=1; $PWD=$pw; $upfile="$tail"; } + else { $pushlog[]=$lines; } + } + + if ($flag == 0) { error("�ソスY�ソス�ソス�ソスL�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスワゑソス�ソス�ソス"); } + if ($PWD == "") { error("�ソスY�ソス�ソス�ソスL�ソス�ソス�ソスノは削除�ソスL�ソス[�ソス�ソス�ソスン定さ�ソス�ソストゑソス�ソスワゑソス�ソス�ソス"); } + + // �ソス�除�ソスL�ソス[�ソス�ソス�ソスニ搾ソス + $match = crypt(($pwd),aa); + if ($match != $PWD) { error("�ソス�除�ソスL�ソス[�ソス�ソス�ソス痰「�ソスワゑソス"); } + + // �ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($pushlog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + + if(file_exists("$path$upfile")){ unlink("$path$upfile"); } +} +function admin(){ //�ソスヌ暦ソス�ソス@�ソス\ + global $admin_pass,$PHP_SELF,$logfile,$path,$ImageCheck; + global $del,$pass,$chk; + if ($pass && $admin_pass != "$pass") + { error("�ソスp�ソスX�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス痰「�ソスワゑソス"); } +?> + + + +$title"; + echo ""; + echo "[�ソスf�ソス�ソス�ソスツに戻ゑソス]\n"; + echo "
    \n"; + echo "�ソスヌ暦ソス�ソス�ソス�ソス[�ソスh\n"; + echo "
    \n"; + + if (!$pass) { + echo "

    �ソスp�ソスX�ソス�ソス�ソス[�ソスh�ソス�ソス�ソス�ソスヘゑソス�ソスト会ソス�ソス�ソス�ソス�ソス

    \n"; + echo "
    \n"; + echo "\n"; + echo ""; + echo "
    \n"; + }else { + // �ソス鞫懶ソス�ソス�ソス�ソス + if ($chk) { + + // �ソス鞫懶ソス�ソス�ソス�ソス�ソス}�ソスb�ソス`�ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $logall = file($logfile); + + while(list(,$lines)=each($logall)){ + list($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$o_tim,$check) = explode("<>",$lines); + if ($chk == "$no") { $lines="$no<>$date<>$name<>$mail<>$sub<>$com<>$url<>$host<>$pw<>$tail<>$w<>$h<>$o_tim<>1<>"; } + + $pushlog[]=$lines; + } + + // �ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($pushlog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + } + + // �ソス�除�ソス�ソス�ソス�ソス + if ($del) { + + // �ソス�除�ソス�ソス�ソス�ソス�ソス}�ソスb�ソス`�ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $delall = file($logfile); + $flag = 0; + + while(list(,$delline)=each($delall)){ + list($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$time) = explode("<>",$delline); + if ($del == "$no") { + $flag = 1; + if (file_exists("$path$tail")){ + unlink("$path$tail"); } + continue; + } + if($flag == 0){ $dellog[]=$delline; } + } + + // �ソス�ソス�ソスO�ソス�ソス�ソスX�ソスV + $fp = fopen($logfile,"w"); + flock($fp,2); + while(list(,$val)=each($dellog)){ + fputs($fp,$val); + } + flock($fp,3); + fclose($fp); + } + + // �ソス�除�ソス�ソスハゑソス\�ソス�ソス + echo "
    \n"; + echo "\n"; + echo "\n"; + echo "

    �ソス�除�ソス�ソス�ソス�ソス�ソス�ソス�ソスL�ソス�ソス�ソスフチ�ソスF�ソスb�ソスN�ソス{�ソスb�ソスN�ソスX�ソスノチ�ソスF�ソスb�ソスN�ソス�ソス�ソス�ソス�ソスA�ソス�除�ソス{�ソス^�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソス�ソスト会ソス�ソス�ソス�ソス�ソス�ソスB\n"; + echo "

    \n"; + echo ""; + echo ""; + if ($ImageCheck) { echo ""; } + echo "\n"; + + $delmode = file($logfile); + + while (list(,$val)=each($delmode)){ + $img_flag=0; + list($no,$date,$name,$mail,$sub,$com,$url, + $host,$pw,$tail,$w,$h,$time,$chk) = explode("<>",$val); + + list($date,$dmy) = split("\(", $date); + if ($mail) { $name="$name"; } + $com = str_replace("
    ","",$com); + $com = htmlspecialchars($com); + if(strlen($com) > 40){ $com = substr($com,0,38) . " ..."; } + + if (file_exists("$path$tail")) { + $img_flag = 1; + $clip = "$File"; + $size = filesize("$path$tail"); + $all += $size; + } else { + $clip = ""; + $size = 0; + } + + echo ""; + echo ""; + echo ""; + echo "\n"; + + // �ソス鞫懶ソス�ソス�ソス�ソス + if ($ImageCheck) { + if ($img_flag == 1 && $chk == 1) { + echo ""; + } elseif ($img_flag == 1 && $chk != 1) { + echo ""; + } else { + echo ""; + } + } + + echo "\n"; + } + + echo "
    �ソス�除�ソスL�ソス�ソスNo�ソス�ソス�ソスe�ソス�ソス�ソス阮シ�ソス�ソス�ソスe�ソス�ソス�ソスR�ソス�ソス�ソス�ソス�ソスg�ソスz�ソスX�ソスg�ソス�ソス�ソスY�ソスt
    (Bytes)
    �ソス鞫�
    �ソス�ソス�ソス�ソス
    $no$date$sub$name$com$host$clip
    ($size)
    OK
    \n"; + echo "

    "; + echo "

    \n"; + + $all = (int)($all / 1024); + echo "�ソスy�ソスY�ソスt�ソスf�ソス[�ソス^�ソス�ソス�ソス�ソス �ソスF $all KB�ソスz\n"; + } + echo "
    \n"; + die (""); +} +function MakeHtml(){ //HTML�ソス�ソス�ソス�ソス + global $html_file; + + head($buf); + Main($buf); + foot($buf); + + $hp = fopen ($html_file,"w"); + flock($hp,2); + fputs($hp, $buf); + fclose($hp); + + include("$html_file"); + exit; +} +function error($mes){ //�ソスG�ソス�ソス�ソス[�ソスt�ソスH�ソス[�ソス}�ソスb�ソスg + ?> + + + +




    +
    +


    + '; + break; + case 'admin': + admin(); + break; + case 'usrdel': + usrdel(); + if($HTML) MakeHtml(); + break; + default: + head($buf); + Main($buf); + foot($buf); + echo $buf; + break; + endswitch; +?> \ No newline at end of file diff --git a/gazou-v3.0.zip b/gazou-v3.0.zip deleted file mode 100644 index 44e0686..0000000 Binary files a/gazou-v3.0.zip and /dev/null differ diff --git a/gazou-v3.0/gazou.php b/gazou-v3.0/gazou.php new file mode 100644 index 0000000..5c954e0 --- /dev/null +++ b/gazou-v3.0/gazou.php @@ -0,0 +1,464 @@ +とTOP) +define(HOME, 'http://php.s3.to'); //「ホーム」へのリンク + +define(MAX_KB, '100'); //投稿容量制限 KB(phpの設定により2Mまで +define(MAX_W, '250'); //投稿サイズ幅(これ以上はwidthを縮小 +define(MAX_H, '250'); //投稿サイズ高さ + +define(PAGE_DEF, '7'); //一ページに表示する記事 +define(LOG_MAX, '200'); //ログ最大行数 + +define(ADMIN_PASS, '0123'); //管理者パス +define(CHECK, 1); //管理者がチェックしてから画像表示?yes=1 +define(SOON_ICON, 'soon.jpg'); //チェック中の時の代替画像 + +define(BUNRI, 0); //投稿フォームを分離する? + +define(PHP_SELF, $PHP_SELF); //このスクリプト名 + +/* ヘッダ */ +function head(&$dat){ + $dat.=' + + + +'.TITLE.' + +

    +[ホーム] +[管理用] +

    + +'.TITLE.' +


    +'; +} +/* 投稿フォーム */ +function form(&$dat,$admin=""){ + $maxbyte = MAX_KB * 1024; + if($admin){ + $hidden = ""; + $msg = "

    タグがつかえます

    "; + } + $dat.=' +
    '.$msg.' +
    + +'.$hidden.' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    おなまえ
    Eメール
    題  名 + + +
    コメント +
    URL
    添付File
    削除キー + + (記事の削除用。英数字で8文字以内) +
    + +
  • 添付可能ファイル : GIF, JPG, PNG
    +
  • ブラウザによっては正常に添付できないことがあります。
    +
  • 最大投稿データ量は '.MAX_KB.' KB までです。
    +
  • 画像は横 '.MAX_W.'ピクセル、縦 '.MAX_H.'ピクセルを超えると縮小表示されます。 + +
  • +
    + '; +} +/* 記事部分 */ +function main(&$dat, $page){ + $line = file(LOGFILE); + $st = ($page) ? $page : 0; + + for($i = $st; $i < $st+PAGE_DEF; $i++){ + if($line[$i]=="") continue; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $line[$i]); + // URLとメールにリンク + if($url) $url = "Link"; + if($email) $name = "$name"; + $com = eregi_replace("(^|/>)(>[^<]*)", "\\1\\2", $com); + // 画像ファイル名 + $img = PATH.$time.$ext; +/* 自由に変更してください["]=[\"]に */ + // "; + }elseif($w && $h){//サイズがある時 + $imgsrc = "\"".$size.""; + }else{//それ以外 + $imgsrc = "\"".$size.""; + } + } + // メイン作成 + $dat.="No.$no $sub
    "; + $dat.="Name $name Date $now   $url"; + $dat.="

    $imgsrc $com


    \n"; + + $p++; + clearstatcache();//ファイルのstatをクリア + } + $prev = $st - PAGE_DEF; + $next = $st + PAGE_DEF; + // 改ページ処理 + $dat.="\n"; + if($prev > 0){ + $dat.="\n"; + } + if($p >= PAGE_DEF && count($line) > PAGE_DEF){ + $dat.="\n"; + } + $dat.="\n
    "; + $dat.=""; + $dat.="\n"; + $dat.="
    "; + $dat.=""; + $dat.=" \n"; + $dat.="
    \n"; +} +/* フッタ */ +function foot(&$dat){ + $dat.=' + + +
    + +【記事削除】
    +記事No +削除キー + +

    +

    +- GazouBBS - +

    + + '; +} +/* 記事書き込み */ +function regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name){ + global $REQUEST_METHOD; + + if($REQUEST_METHOD != "POST") error("不正な投稿をしないで下さい"); + // フォーム内容をチェック + if(!$name||ereg("^[ | |]*$",$name)) error("名前が書き込まれていません"); + if(!$com||ereg("^[ | |\t]*$",$com)) error("本文が書き込まれていません"); + if(!$sub||ereg("^[ | |]*$",$sub)) $sub="(無題)"; + if(strlen($com) > 1000) error("本文が長すぎますっ!"); + + $line = file(LOGFILE); + // 時間とホスト取得 + $tim = time(); + $host = gethostbyaddr(getenv("REMOTE_ADDR")); + // 連続投稿チェック + list($lastno,,$lname,,,$lcom,,$lhost,,,,,$ltime,) = explode(",", $line[0]); + if(RENZOKU && $host == $lhost && $tim - $ltime < RENZOKU) + error("連続投稿はもうしばらく時間を置いてからお願い致します"); + // No.とパスと時間とURLフォーマット + $no = $lastno + 1; + $pass = ($pwd) ? substr(md5($pwd),2,8) : "*"; + $now = gmdate("Y/m/d(D) H:i",$tim+9*60*60); + $url = ereg_replace("^http://", "", $url); + //テキスト整形 + $name = CleanStr($name); + $email= CleanStr($email); + $sub = CleanStr($sub); + $url = CleanStr($url); + $com = CleanStr($com); + // 改行文字の統一。 + $com = str_replace( "\r\n", "\n", $com); + $com = str_replace( "\r", "\n", $com); + // 連続する空行を一行 + $com = ereg_replace("\n(( | )*\n){3,}","\n",$com); + $com = nl2br($com); //改行文字の前に
    を代入する + $com = str_replace("\n", "", $com); //\nを文字列から消す。 + // 二重投稿チェック + if($name == $lname && $com == $lcom) + error("二重投稿は禁止です

    リロード"); + // ログ行数オーバー + if(count($line) >= LOG_MAX){ + for($d = count($line)-1; $d >= LOG_MAX-1; $d--){ + list($dno,,,,,,,,,$ext,,,$dtime,) = explode(",", $line[$d]); + if(is_file(PATH.$dtime.$ext)) unlink(PATH.$dtime.$ext); + $line[$d] = ""; + } + } + // アップロード処理 + if($upfile != "none"){ + $dest = PATH.$upfile_name; + copy($upfile, $dest); + if(!is_file($dest)) error("アップロードに失敗しました。サーバがサポートしていない可能性があります"); + $size = getimagesize($dest); + $W = $size[0]; + $H = $size[1]; + rename($dest,$tim.$size[2]); + // 画像表示縮小 + if($W > Max_W || $H > Max_H){ + $W2 = Max_W / $W; + $H2 = Max_H / $H; + + ($W2 < $H2) ? $key = $W2 : $key = $H2; + + $W = $W * $key; + $H = $H * $key; + } + $mes = "画像 $upfile_name のアップロードが成功しました

    "; + } + $chk = (CHECK) ? 0 : 1;//未チェックは0 + + $newline = "$no,$now,$name,$email,$sub,$com,$url,$host,$pass,.$size[2],$W,$H,$tim,$chk,\n"; + + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, $newline); + fputs($fp, implode('', $line)); + fclose($fp); + + echo "$msg 画面を切り替えます"; + echo ""; +} +/* テキスト整形 */ +function CleanStr($str){ + global $admin; + + $str = trim($str);//先頭と末尾の空白除去 + if (get_magic_quotes_gpc()) {//¥を削除 + $str = stripslashes($str); + } + if($admin!=ADMIN_PASS){//管理者はタグ可能 + $str = htmlspecialchars($str, ENT_QUOTES, 'Shift_JIS');//タグっ禁止 + $str = str_replace("&", "&", $str);//特殊文字 + } + return str_replace(",", ",", $str);//カンマを変換 +} +/* ユーザー削除 */ +function usrdel($no,$pwd){ + if($no == "" || $pwd == "") error("削除Noまたはパスワードが入力漏れです"); + + $line = file(LOGFILE); + $flag = FALSE; + + for($i = 0; $i掲示板に戻る]\n"; + echo "
    \n"; + echo "管理モード\n"; + echo "
    \n"; + echo "

    \n"; + // ログインフォーム + if(!$pass){ + echo "
    記事削除 "; + echo "管理人投稿

    "; + echo "\n"; + echo ""; + echo "

    \n"; + die(""); + } +} +/* 管理者削除 */ +function admindel($delno,$chkno){ + global $pass; + + if($chkno || $delno){ + $line = file(LOGFILE); + $find = FALSE; + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$tim,$chk) = explode(",",$line[$i]); + if($chkno == $no){//画像チェック$chk=1に + $find = TRUE; + $line[$i] = "$no,$now,$name,$email,$sub,$com,$url,$host,$pw,$ext,$w,$h,$tim,1,\n"; + break; + } + if($delno == $no){//削除の時は空に + $find = TRUE; + $line[$i] = ""; + break; + } + } + if($find){//ログ更新 + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, implode('', $line)); + fclose($fp); + } + } + // 削除画面を表示 + echo "\n"; + echo "\n"; + echo "\n"; + echo "

    削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい。\n"; + echo "

    \n"; + echo ""; + echo ""; + if(CHECK) echo ""; + echo "\n"; + + $line = file(LOGFILE); + + for($j = 0; $j < count($line); $j++){ + $img_flag = FALSE; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$time,$chk) = explode(",",$line[$j]); + // フォーマット + list($now,$dmy) = split("\(", $now); + if($email) $name="$name"; + $com = str_replace("
    "," ",$com); + $com = htmlspecialchars($com, ENT_QUOTES, 'Shift_JIS'); + if(strlen($com) > 40) $com = substr($com,0,38) . " ..."; + // 画像があるときはリンク + if($ext && is_file(PATH.$time.$ext)){ + $img_flag = TRUE; + $clip = "".$time.$ext.""; + $size = filesize(PATH.$time.$ext); + $all += $size; //合計計算 + }else{ + $clip = ""; + $size = 0; + } + $bg = ($j % 2) ? "d6d6f6" : "f6f6f6";//背景色 + + echo ""; + echo ""; + echo ""; + echo "\n"; + + if(CHECK){//画像チェック + if($img_flag && $chk == 1){ + echo ""; + }elseif($img_flag && $chk != 1) { + echo ""; + }else{ + echo ""; + } + } + echo "\n"; + } + if(CHECK) $msg = "or許可する"; + + echo "
    削除記事No投稿日題名投稿者コメントホスト名添付
    (Bytes)
    画像
    許可
    $no$now$sub$name$com$host$clip
    ($size)
    OK

    "; + echo ""; + + $all = (int)($all / 1024); + echo "【 画像データ合計 : $all KB 】"; + die("

    "); +} +/* エラー画面 */ +function error($mes){ + global $upfile_name; + + if(is_file(PATH.$upfile_name)) unlink(PATH.$upfile_name); + + head($dat); + echo $dat; + echo "




    +
    $mes
    +


    "; + die(""); +} +/*-----------Main-------------*/ +switch($mode){ + case 'regist': + regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name); + break; + case 'admin': + valid($pass); + if($admin=="del") admindel($del,$chk); + if($admin=="post"){ + echo ""; + form($post,1); + echo $post; + die(""); + } + break; + case 'usrdel': + usrdel($no,$pwd); + break; + default: + head($buf); + if(!BUNRI) form($buf); + main($buf,$page); + foot($buf); + echo $buf; +} +?> \ No newline at end of file diff --git a/gazou-v3.0/imglog.log b/gazou-v3.0/imglog.log new file mode 100644 index 0000000..e69de29 diff --git a/gazou-v3.2.zip b/gazou-v3.2.zip deleted file mode 100644 index ffee3c1..0000000 Binary files a/gazou-v3.2.zip and /dev/null differ diff --git a/gazou-v3.2/copy.php b/gazou-v3.2/copy.php new file mode 100644 index 0000000..84b149a --- /dev/null +++ b/gazou-v3.2/copy.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/gazou-v3.2/gazou.php b/gazou-v3.2/gazou.php new file mode 100644 index 0000000..117655f --- /dev/null +++ b/gazou-v3.2/gazou.php @@ -0,0 +1,527 @@ +とTOP) +define(HOME, 'http://php.s3.to'); //「ホーム」へのリンク + +define(MAX_KB, '100'); //投稿容量制限 KB(phpの設定により2Mまで +define(MAX_W, '250'); //投稿サイズ幅(これ以上はwidthを縮小 +define(MAX_H, '250'); //投稿サイズ高さ + +define(PAGE_DEF, '7'); //一ページに表示する記事 +define(LOG_MAX, '200'); //ログ最大行数 + +define(ADMIN_PASS, '0123'); //管理者パス +define(CHECK, 0); //管理者がチェックしてから画像表示?yes=1 +define(SOON_ICON, 'soon.jpg'); //チェック中の時の代替画像 +define(RE_COL, '789922'); //>が付いた時の色 + +define(BUNRI, 0); //投稿フォームを分離する? + +define(PHP_SELF, $PHP_SELF); //このスクリプト名 + +//画像保存相対パス $path="/home/public_html/***/img/"; +$path = dirname($PATH_TRANSLATED).IMG_DIR; + +/* ヘッダ */ +function head(&$dat){ + $dat.=' + + + +'.TITLE.' + +

    +[ホーム] +[管理用] +

    + +'.TITLE.' +


    +'; +} +/* 投稿フォーム */ +function form(&$dat,$resno,$admin=""){ + global $gazoubbs; + + list($cname,$cemail,$cpass) = explode(",", $gazoubbs); + + $maxbyte = MAX_KB * 1024; + if($resno){ + $find = false; + $line = file(LOGFILE); + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,) = explode(",", $line[$i]); + if($no == $resno){ + $find = true; + break; + } + } + if(!$find) error("該当記事がみつかりません"); + + if(ereg("Re\[([0-9])\]:", $sub, $reg)){ + $reg[1]++; + $r_sub=ereg_replace("Re\[([0-9])\]:", "Re[$reg[1]]:", $sub); + }elseif(ereg("^Re:", $sub)){ + $r_sub=ereg_replace("^Re:", "Re[2]:", $sub); + }else{ + $r_sub = "Re:$sub"; + } + $r_com = ">$com"; + $r_com = ereg_replace("","\r>",$r_com); + $msg = "
    No. $no へのレスです
    "; + } + if($admin){ + $hidden = ""; + $msg = "

    タグがつかえます

    "; + } + $dat.=' +
    '.$msg.' +
    + +'.$hidden.' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    おなまえ
    Eメール
    題  名 + + +
    コメント +
    URL
    添付File
    削除キー + + (記事の削除用。英数字で8文字以内) +
    + +
  • 添付可能ファイル : GIF, JPG, PNG
    +
  • ブラウザによっては正常に添付できないことがあります。
    +
  • 最大投稿データ量は '.MAX_KB.' KB までです。
    +
  • 画像は横 '.MAX_W.'ピクセル、縦 '.MAX_H.'ピクセルを超えると縮小表示されます。 + +
  • +
    + '; +} +/* 記事部分 */ +function main(&$dat, $page){ + global $path; + + $line = file(LOGFILE); + $st = ($page) ? $page : 0; + + for($i = $st; $i < $st+PAGE_DEF; $i++){ + if($line[$i]=="") continue; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $line[$i]); + // URLとメールにリンク + if($url) $url = "Link"; + if($email) $name = "$name"; + $com = auto_link($com); + $com = eregi_replace("(^|>)(>[^<]*)", "\\1\\2", $com); + // 画像ファイル名 + $img = $path.$time.$ext; + $src = '.'.IMG_DIR.$time.$ext; +/* 自由に変更してください["]=[\"]に */ + // "; + }elseif($w && $h){//サイズがある時 + $imgsrc = "\"".$size.""; + }else{//それ以外 + $imgsrc = "\"".$size.""; + } + } + // メイン作成 + $dat.="No.$no $sub
    "; + $dat.="Name $name Date $now   $url [レス]"; + $dat.="

    $imgsrc $com


    \n"; + + $p++; + clearstatcache();//ファイルのstatをクリア + } + $prev = $st - PAGE_DEF; + $next = $st + PAGE_DEF; + // 改ページ処理 + $dat.="\n"; + if($prev >= 0){ + $dat.="\n"; + } + if($p >= PAGE_DEF && count($line) > $next){ + $dat.="\n"; + } + $dat.="\n
    "; + $dat.=""; + $dat.="\n"; + $dat.="
    "; + $dat.=""; + $dat.=" \n"; + $dat.="
    \n"; +} +/* フッタ */ +function foot(&$dat){ + $dat.=' + + +
    + +【記事削除】
    +記事No +削除キー + +

    +

    +- GazouBBS - +

    + + '; +} +/* 記事書き込み */ +function regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name){ + global $REQUEST_METHOD,$path; + + if($REQUEST_METHOD != "POST") error("不正な投稿をしないで下さい"); + // フォーム内容をチェック + if(!$name||ereg("^( | )*$",$name)) error("名前が書き込まれていません"); + if(!$com||ereg("^( | |\t)*$",$com)) error("本文が書き込まれていません"); + if(!$sub||ereg("^( | )*$",$sub)) $sub="(無題)"; + if(strlen($com) > 1000) error("本文が長すぎますっ!"); + + $line = file(LOGFILE); + // 時間とホスト取得 + $tim = time(); + $host = gethostbyaddr(getenv("REMOTE_ADDR")); + // 連続投稿チェック + list($lastno,,$lname,,,$lcom,,$lhost,,,,,$ltime,) = explode(",", $line[0]); + if(RENZOKU && $host == $lhost && $tim - $ltime < RENZOKU) + error("連続投稿はもうしばらく時間を置いてからお願い致します"); + // No.とパスと時間とURLフォーマット + $no = $lastno + 1; + $c_pass = $pwd; + $pass = ($pwd) ? substr(md5($pwd),2,8) : "*"; + $now = gmdate("Y/m/d(D) H:i",$tim+9*60*60); + $url = ereg_replace("^http://", "", $url); + //テキスト整形 + $name = CleanStr($name); + $email= CleanStr($email); + $sub = CleanStr($sub); + $url = CleanStr($url); + $com = CleanStr($com); + // 改行文字の統一。 + $com = str_replace( "\r\n", "\n", $com); + $com = str_replace( "\r", "\n", $com); + // 連続する空行を一行 + $com = ereg_replace("\n(( | )*\n){3,}","\n",$com); + $com = nl2br($com); //改行文字の前に
    を代入する + $com = str_replace("\n", "", $com); //\nを文字列から消す。 + // 二重投稿チェック + if($name == $lname && $com == $lcom) + error("二重投稿は禁止です

    リロード"); + // ログ行数オーバー + if(count($line) >= LOG_MAX){ + for($d = count($line)-1; $d >= LOG_MAX-1; $d--){ + list($dno,,,,,,,,,$ext,,,$dtime,) = explode(",", $line[$d]); + if(is_file($path.$dtime.$ext)) unlink($path.$dtime.$ext); + $line[$d] = ""; + } + } + // アップロード処理 + if($upfile != "none"){ + $dest = $path.$upfile_name; + move_uploaded_file($upfile, $dest); + //copy($upfile, $dest); + if(!is_file($dest)) error("アップロードに失敗しました。サーバがサポートしていない可能性があります"); + $size = getimagesize($dest); + $W = $size[0]; + $H = $size[1]; + $ext = substr($upfile_name,-4); + rename($dest,$path.$tim.$ext); + // 画像表示縮小 + if($W > MAX_W || $H > MAX_H){ + $W2 = MAX_W / $W; + $H2 = MAX_H / $H; + + ($W2 < $H2) ? $key = $W2 : $key = $H2; + + $W = $W * $key; + $H = $H * $key; + } + $mes = "画像 $upfile_name のアップロードが成功しました

    "; + } + $chk = (CHECK) ? 0 : 1;//未チェックは0 + + //クッキー保存 + $cookvalue = implode(",", array($name,$email,$c_pass)); + setcookie ("gazoubbs", $cookvalue,time()+14*24*3600); /* 2週間で期限切れ */ + + $newline = "$no,$now,$name,$email,$sub,$com,$url,$host,$pass,$ext,$W,$H,$tim,$chk,\n"; + + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, $newline); + fputs($fp, implode('', $line)); + fclose($fp); + + echo "$msg 画面を切り替えます"; + echo ""; +} +/* テキスト整形 */ +function CleanStr($str){ + global $admin; + + $str = trim($str);//先頭と末尾の空白除去 + if (get_magic_quotes_gpc()) {//¥を削除 + $str = stripslashes($str); + } + if($admin!=ADMIN_PASS){//管理者はタグ可能 + $str = htmlspecialchars($str);//タグっ禁止 + $str = str_replace("&", "&", $str);//特殊文字 + } + return str_replace(",", ",", $str);//カンマを変換 +} +/* ユーザー削除 */ +function usrdel($no,$pwd){ + global $path; + + if($no == "") error("削除Noが入力漏れです"); + + $line = file(LOGFILE); + $flag = FALSE; + + for($i = 0; $i掲示板に戻る]\n"; + echo "
    \n"; + echo "管理モード\n"; + echo "
    \n"; + echo "

    \n"; + // ログインフォーム + if(!$pass){ + echo "
    記事削除 "; + echo "管理人投稿

    "; + echo "\n"; + echo ""; + echo "

    \n"; + die(""); + } +} +/* 管理者削除 */ +function admindel($delno,$chkno,$pass){ + global $path; + + if($chkno || $delno){ + $line = file(LOGFILE); + $find = FALSE; + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$tim,$chk) = explode(",",$line[$i]); + if($chkno == $no){//画像チェック$chk=1に + $find = TRUE; + $line[$i] = "$no,$now,$name,$email,$sub,$com,$url,$host,$pw,$ext,$w,$h,$tim,1,\n"; + break; + } + if($delno == $no){//削除の時は空に + $find = TRUE; + $line[$i] = ""; + $delfile = $path.$tim.$ext; //削除ファイル + break; + } + } + if($find){//ログ更新 + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, implode('', $line)); + fclose($fp); + + if(is_file($delfile)) unlink($delfile);//削除 + } + } + // 削除画面を表示 + echo "\n"; + echo "\n"; + echo "\n"; + echo "

    削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい。\n"; + echo "

    \n"; + echo ""; + echo ""; + if(CHECK) echo ""; + echo "\n"; + + $line = file(LOGFILE); + + for($j = 0; $j < count($line); $j++){ + $img_flag = FALSE; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$time,$chk) = explode(",",$line[$j]); + // フォーマット + list($now,$dmy) = split("\(", $now); + if($email) $name="$name"; + $com = str_replace("
    "," ",$com); + $com = htmlspecialchars($com); + if(strlen($com) > 40) $com = substr($com,0,38) . " ..."; + // 画像があるときはリンク + if($ext && is_file($path.$time.$ext)){ + $img_flag = TRUE; + $clip = "".$time.$ext.""; + $size = filesize($path.$time.$ext); + $all += $size; //合計計算 + }else{ + $clip = ""; + $size = 0; + } + $bg = ($j % 2) ? "d6d6f6" : "f6f6f6";//背景色 + + echo ""; + echo ""; + echo ""; + echo "\n"; + + if(CHECK){//画像チェック + if($img_flag && $chk == 1){ + echo ""; + }elseif($img_flag && $chk != 1) { + echo ""; + }else{ + echo ""; + } + } + echo "\n"; + } + if(CHECK) $msg = "or許可する"; + + echo "
    削除記事No投稿日題名投稿者コメントホスト名添付
    (Bytes)
    画像
    許可
    $no$now$sub$name$com$host$clip
    ($size)
    OK

    "; + echo ""; + + $all = (int)($all / 1024); + echo "【 画像データ合計 : $all KB 】"; + die("

    "); +} +/* オートリンク */ +function auto_link($proto){ + $proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","\\1\\2",$proto); + return $proto; +} +/* エラー画面 */ +function error($mes){ + global $upfile_name,$path; + + if(is_file($path.$upfile_name)) unlink($path.$upfile_name); + + head($dat); + echo $dat; + echo "




    +
    $mes
    +


    "; + die(""); +} +/*-----------Main-------------*/ +switch($mode){ + case 'regist': + regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name); + break; + case 'admin': + valid($pass); + if($admin=="del") admindel($del,$chk,$pass); + if($admin=="post"){ + echo ""; + form($post,$res,1); + echo $post; + die(""); + } + break; + case 'usrdel': + usrdel($no,$pwd); + default: + head($buf); + if(!BUNRI) form($buf,$res); + main($buf,$page); + foot($buf); + echo $buf; +} +?> \ No newline at end of file diff --git a/gazou-v3.2/imglog.log b/gazou-v3.2/imglog.log new file mode 100644 index 0000000..e69de29 diff --git a/gazou-v3.3.zip b/gazou-v3.3.zip deleted file mode 100644 index 4dd4eb7..0000000 Binary files a/gazou-v3.3.zip and /dev/null differ diff --git a/gazou-v3.3/copy.php b/gazou-v3.3/copy.php new file mode 100644 index 0000000..84b149a --- /dev/null +++ b/gazou-v3.3/copy.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/gazou-v3.3/gazou.php b/gazou-v3.3/gazou.php new file mode 100644 index 0000000..0a37951 --- /dev/null +++ b/gazou-v3.3/gazou.php @@ -0,0 +1,530 @@ +とTOP) +define(HOME, 'http://php.s3.to'); //「ホーム」へのリンク + +define(MAX_KB, '100'); //投稿容量制限 KB(phpの設定により2Mまで +define(MAX_W, '250'); //投稿サイズ幅(これ以上はwidthを縮小 +define(MAX_H, '250'); //投稿サイズ高さ + +define(PAGE_DEF, '7'); //一ページに表示する記事 +define(LOG_MAX, '200'); //ログ最大行数 + +define(ADMIN_PASS, '0123'); //管理者パス +define(CHECK, 0); //管理者がチェックしてから画像表示?yes=1 +define(SOON_ICON, 'soon.jpg'); //チェック中の時の代替画像 +define(RE_COL, '789922'); //>が付いた時の色 + +define(BUNRI, 0); //投稿フォームを分離する? + +define(PHP_SELF, $PHP_SELF); //このスクリプト名 + +//画像保存絶対パス $path="/home/public_html/***/img/"; +$path = dirname($PATH_TRANSLATED).IMG_DIR; + +/* ヘッダ */ +function head(&$dat){ + $dat.=' + + + +'.TITLE.' + +

    +[ホーム] +[管理用] +

    + +'.TITLE.' +


    +'; +} +/* 投稿フォーム */ +function form(&$dat,$resno,$admin=""){ + global $gazoubbs; + + list($cname,$cemail,$cpass) = explode(",", $gazoubbs); + + $maxbyte = MAX_KB * 1024; + if($resno){ + $find = false; + $line = file(LOGFILE); + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,) = explode(",", $line[$i]); + if($no == $resno){ + $find = true; + break; + } + } + if(!$find) error("該当記事がみつかりません"); + + if(ereg("Re\[([0-9])\]:", $sub, $reg)){ + $reg[1]++; + $r_sub=ereg_replace("Re\[([0-9])\]:", "Re[$reg[1]]:", $sub); + }elseif(ereg("^Re:", $sub)){ + $r_sub=ereg_replace("^Re:", "Re[2]:", $sub); + }else{ + $r_sub = "Re:$sub"; + } + $r_com = ">$com"; + $r_com = ereg_replace("","\r>",$r_com); + $msg = "
    No. $no へのレスです
    "; + } + if($admin){ + $hidden = ""; + $msg = "

    タグがつかえます

    "; + } + $dat.=' +
    '.$msg.' +
    + +'.$hidden.' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    おなまえ
    Eメール
    題  名 + + +
    コメント +
    URL
    添付File
    削除キー + + (記事の削除用。英数字で8文字以内) +
    + +
  • 添付可能ファイル : GIF, JPG, PNG
    +
  • ブラウザによっては正常に添付できないことがあります。
    +
  • 最大投稿データ量は '.MAX_KB.' KB までです。
    +
  • 画像は横 '.MAX_W.'ピクセル、縦 '.MAX_H.'ピクセルを超えると縮小表示されます。 + +
  • +
    + '; +} +/* 記事部分 */ +function main(&$dat, $page){ + global $path; + + $line = file(LOGFILE); + $st = ($page) ? $page : 0; + + for($i = $st; $i < $st+PAGE_DEF; $i++){ + if($line[$i]=="") continue; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $line[$i]); + // URLとメールにリンク + if($url) $url = "Link"; + if($email) $name = "$name"; + $com = auto_link($com); + $com = eregi_replace("(^|>)(>[^<]*)", "\\1\\2", $com); + // 画像ファイル名 + $img = $path.$time.$ext; + $src = '.'.IMG_DIR.$time.$ext; +/* 自由に変更してください["]=[\"]に */ + // "; + }elseif($w && $h){//サイズがある時 + $imgsrc = "\"".$size.""; + }else{//それ以外 + $imgsrc = "\"".$size.""; + } + } + // メイン作成 + $dat.="No.$no $sub
    "; + $dat.="Name $name Date $now   $url [レス]"; + $dat.="

    $imgsrc $com


    \n"; + + $p++; + clearstatcache();//ファイルのstatをクリア + } + $prev = $st - PAGE_DEF; + $next = $st + PAGE_DEF; + // 改ページ処理 + $dat.="\n"; + if($prev >= 0){ + $dat.="\n"; + } + if($p >= PAGE_DEF && count($line) > $next){ + $dat.="\n"; + } + $dat.="\n
    "; + $dat.=""; + $dat.="\n"; + $dat.="
    "; + $dat.=""; + $dat.=" \n"; + $dat.="
    \n"; +} +/* フッタ */ +function foot(&$dat){ + $dat.=' + + +
    + +【記事削除】
    +記事No +削除キー + +

    +

    +- GazouBBS - +

    + + '; +} +/* 記事書き込み */ +function regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name){ + global $REQUEST_METHOD,$path; + + if($REQUEST_METHOD != "POST") error("不正な投稿をしないで下さい"); + // フォーム内容をチェック + if(!$name||ereg("^( | )*$",$name)) error("名前が書き込まれていません"); + if(!$com||ereg("^( | |\t)*$",$com)) error("本文が書き込まれていません"); + if(!$sub||ereg("^( | )*$",$sub)) $sub="(無題)"; + if(strlen($com) > 1000) error("本文が長すぎますっ!"); + + $line = file(LOGFILE); + // 時間とホスト取得 + $tim = time(); + $host = gethostbyaddr(getenv("REMOTE_ADDR")); + // 連続投稿チェック + list($lastno,,$lname,,,$lcom,,$lhost,,,,,$ltime,) = explode(",", $line[0]); + if(RENZOKU && $host == $lhost && $tim - $ltime < RENZOKU) + error("連続投稿はもうしばらく時間を置いてからお願い致します"); + // No.とパスと時間とURLフォーマット + $no = $lastno + 1; + $c_pass = $pwd; + $pass = ($pwd) ? substr(md5($pwd),2,8) : "*"; + $now = gmdate("Y/m/d(D) H:i",$tim+9*60*60); + $url = ereg_replace("^http://", "", $url); + //テキスト整形 + $name = CleanStr($name); + $email= CleanStr($email); + $sub = CleanStr($sub); + $url = CleanStr($url); + $com = CleanStr($com); + // 改行文字の統一。 + $com = str_replace( "\r\n", "\n", $com); + $com = str_replace( "\r", "\n", $com); + // 連続する空行を一行 + $com = ereg_replace("\n(( | )*\n){3,}","\n",$com); + $com = nl2br($com); //改行文字の前に
    を代入する + $com = str_replace("\n", "", $com); //\nを文字列から消す。 + // 二重投稿チェック + if($name == $lname && $com == $lcom) + error("二重投稿は禁止です

    リロード"); + // ログ行数オーバー + if(count($line) >= LOG_MAX){ + for($d = count($line)-1; $d >= LOG_MAX-1; $d--){ + list($dno,,,,,,,,,$ext,,,$dtime,) = explode(",", $line[$d]); + if(is_file($path.$dtime.$ext)) unlink($path.$dtime.$ext); + $line[$d] = ""; + } + } + // アップロード処理 + if(file_exists($upfile)){ + $dest = $path.$upfile_name; + move_uploaded_file($upfile, $dest); + //↑でエラーなら↓に変更 + //copy($upfile, $dest); + if(!is_file($dest)) error("アップロードに失敗しました。
    サーバがサポートしていない可能性があります"); + $size = getimagesize($dest); + if(!is_array($size)) error("アップロードに失敗しました。
    画像ファイル以外は受け付けません"); + $W = $size[0]; + $H = $size[1]; + $ext = substr($upfile_name,-4); + rename($dest,$path.$tim.$ext); + // 画像表示縮小 + if($W > MAX_W || $H > MAX_H){ + $W2 = MAX_W / $W; + $H2 = MAX_H / $H; + + ($W2 < $H2) ? $key = $W2 : $key = $H2; + + $W = $W * $key; + $H = $H * $key; + } + $mes = "画像 $upfile_name のアップロードが成功しました

    "; + } + $chk = (CHECK) ? 0 : 1;//未チェックは0 + + //クッキー保存 + $cookvalue = implode(",", array($name,$email,$c_pass)); + setcookie ("gazoubbs", $cookvalue,time()+14*24*3600); /* 2週間で期限切れ */ + + $newline = "$no,$now,$name,$email,$sub,$com,$url,$host,$pass,$ext,$W,$H,$tim,$chk,\n"; + + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, $newline); + fputs($fp, implode('', $line)); + fclose($fp); + + echo "$msg 画面を切り替えます"; + echo ""; +} +/* テキスト整形 */ +function CleanStr($str){ + global $admin; + + $str = trim($str);//先頭と末尾の空白除去 + if (get_magic_quotes_gpc()) {//¥を削除 + $str = stripslashes($str); + } + if($admin!=ADMIN_PASS){//管理者はタグ可能 + $str = htmlspecialchars($str);//タグっ禁止 + $str = str_replace("&", "&", $str);//特殊文字 + } + return str_replace(",", ",", $str);//カンマを変換 +} +/* ユーザー削除 */ +function usrdel($no,$pwd){ + global $path; + + if($no == "") error("削除Noが入力漏れです"); + + $line = file(LOGFILE); + $flag = FALSE; + + for($i = 0; $i掲示板に戻る]\n"; + echo "
    \n"; + echo "管理モード\n"; + echo "
    \n"; + echo "

    \n"; + // ログインフォーム + if(!$pass){ + echo "
    記事削除 "; + echo "管理人投稿

    "; + echo "\n"; + echo ""; + echo "

    \n"; + die(""); + } +} +/* 管理者削除 */ +function admindel($delno,$chkno,$pass){ + global $path; + + if($chkno || $delno){ + $line = file(LOGFILE); + $find = FALSE; + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$tim,$chk) = explode(",",$line[$i]); + if($chkno == $no){//画像チェック$chk=1に + $find = TRUE; + $line[$i] = "$no,$now,$name,$email,$sub,$com,$url,$host,$pw,$ext,$w,$h,$tim,1,\n"; + break; + } + if($delno == $no){//削除の時は空に + $find = TRUE; + $line[$i] = ""; + $delfile = $path.$tim.$ext; //削除ファイル + break; + } + } + if($find){//ログ更新 + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, implode('', $line)); + fclose($fp); + + if(is_file($delfile)) unlink($delfile);//削除 + } + } + // 削除画面を表示 + echo "\n"; + echo "\n"; + echo "\n"; + echo "

    削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい。\n"; + echo "

    \n"; + echo ""; + echo ""; + if(CHECK) echo ""; + echo "\n"; + + $line = file(LOGFILE); + + for($j = 0; $j < count($line); $j++){ + $img_flag = FALSE; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$time,$chk) = explode(",",$line[$j]); + // フォーマット + list($now,$dmy) = split("\(", $now); + if($email) $name="$name"; + $com = str_replace("
    "," ",$com); + $com = htmlspecialchars($com); + if(strlen($com) > 40) $com = substr($com,0,38) . " ..."; + // 画像があるときはリンク + if($ext && is_file($path.$time.$ext)){ + $img_flag = TRUE; + $clip = "".$time.$ext.""; + $size = filesize($path.$time.$ext); + $all += $size; //合計計算 + }else{ + $clip = ""; + $size = 0; + } + $bg = ($j % 2) ? "d6d6f6" : "f6f6f6";//背景色 + + echo ""; + echo ""; + echo ""; + echo "\n"; + + if(CHECK){//画像チェック + if($img_flag && $chk == 1){ + echo ""; + }elseif($img_flag && $chk != 1) { + echo ""; + }else{ + echo ""; + } + } + echo "\n"; + } + if(CHECK) $msg = "or許可する"; + + echo "
    削除記事No投稿日題名投稿者コメントホスト名添付
    (Bytes)
    画像
    許可
    $no$now$sub$name$com$host$clip
    ($size)
    OK

    "; + echo ""; + + $all = (int)($all / 1024); + echo "【 画像データ合計 : $all KB 】"; + die("

    "); +} +/* オートリンク */ +function auto_link($proto){ + $proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","\\1\\2",$proto); + return $proto; +} +/* エラー画面 */ +function error($mes){ + global $upfile_name,$path; + + if(is_file($path.$upfile_name)) unlink($path.$upfile_name); + + head($dat); + echo $dat; + echo "




    +
    $mes
    +


    "; + die(""); +} +/*-----------Main-------------*/ +switch($mode){ + case 'regist': + regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name); + break; + case 'admin': + valid($pass); + if($admin=="del") admindel($del,$chk,$pass); + if($admin=="post"){ + echo ""; + form($post,$res,1); + echo $post; + die(""); + } + break; + case 'usrdel': + usrdel($no,$pwd); + default: + head($buf); + if(!BUNRI) form($buf,$res); + main($buf,$page); + foot($buf); + echo $buf; +} +?> \ No newline at end of file diff --git a/gazou-v3.3/imglog.log b/gazou-v3.3/imglog.log new file mode 100644 index 0000000..e69de29 diff --git a/gazou-v3.5(1).zip b/gazou-v3.5(1).zip deleted file mode 100644 index 6aa3a34..0000000 Binary files a/gazou-v3.5(1).zip and /dev/null differ diff --git a/gazou-v3.5(1)/gazou.php b/gazou-v3.5(1)/gazou.php new file mode 100644 index 0000000..3280801 --- /dev/null +++ b/gazou-v3.5(1)/gazou.php @@ -0,0 +1,538 @@ +="4.1.0"){ + extract($_REQUEST); + extract($_COOKIE); + $upfile_name=$_FILES["upfile"]["name"]; + $upfile=$_FILES["upfile"]["tmp_name"]; +} +//----設定-------- +define(LOGFILE, 'imglog.log'); //ログファイル名 +define(IMG_DIR, '/img/'); //画像保存ディレクトリ。gazou.phpから見て + +define(TITLE, '画像BBS'); //タイトル(とTOP) +define(HOME, 'http://php.s3.to'); //「ホーム」へのリンク + +define(MAX_KB, '100'); //投稿容量制限 KB(phpの設定により2Mまで +define(MAX_W, '250'); //投稿サイズ幅(これ以上はwidthを縮小 +define(MAX_H, '250'); //投稿サイズ高さ + +define(PAGE_DEF, '7'); //一ページに表示する記事 +define(LOG_MAX, '200'); //ログ最大行数 + +define(ADMIN_PASS, '0123'); //管理者パス +define(CHECK, 0); //管理者がチェックしてから画像表示?yes=1 +define(SOON_ICON, 'soon.jpg'); //チェック中の時の代替画像 +define(RE_COL, '789922'); //>が付いた時の色 + +define(NIKKI, 0); //投稿フォームを表示しない? Yes=1 No=0 + +define(PHP_SELF, "gazou.php"); //このスクリプト名; + + +//画像保存絶対パス $path="/home/public_html/***/img/"; +$path = dirname($_SERVER[PATH_TRANSLATED]).IMG_DIR; + +/* 未定 +$badstring = array("dummy_string","dummy_string2"); //拒絶する文字列 +$badfile = array("dummy","dummy2"); //拒絶するファイルのmd5 +$badip = array("addr.dummy.com","addr2.dummy.com"); //拒絶するホスト +*/ +/* ヘッダ */ +function head(&$dat){ + $dat.=' +<html><head> +<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> +<STYLE TYPE="text/css"> +<!-- +body,tr,td,th { font-size:10pt } +a:hover { color:#DD0000; } +span { font-size:20pt } +small { font-size:8pt } +--> +</STYLE> +<title>'.TITLE.' + +

    +[ホーム] +[管理用] +

    + +'.TITLE.' +


    +'; +} +/* 投稿フォーム */ +function form(&$dat,$resno,$admin=""){ + global $gazoubbs; + + if (get_magic_quotes_gpc()) $gazoubbs = stripslashes($gazoubbs); + list($cname,$cemail,$cpass) = explode(",", $gazoubbs); + + $maxbyte = MAX_KB * 1024; + if($resno){ + $find = false; + $line = file(LOGFILE); + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,) = explode(",", $line[$i]); + if($no == $resno){ + $find = true; + break; + } + } + if(!$find) error("該当記事がみつかりません"); + + if(ereg("Re\[([0-9])\]:", $sub, $reg)){ + $reg[1]++; + $r_sub=ereg_replace("Re\[([0-9])\]:", "Re[$reg[1]]:", $sub); + }elseif(ereg("^Re:", $sub)){ + $r_sub=ereg_replace("^Re:", "Re[2]:", $sub); + }else{ + $r_sub = "Re:$sub"; + } + $r_com = ">$com"; + $r_com = ereg_replace("","\r>",$r_com); + $msg = "
    No. $no へのレスです
    "; + } + if($admin){ + $hidden = ""; + $msg = "

    タグがつかえます

    "; + } + $dat.=' +
    '.$msg.' +
    + +'.$hidden.' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    おなまえ
    Eメール
    題  名 + + +
    コメント +
    URL
    添付File
    削除キー + + (記事の削除用。英数字で8文字以内) +
    + +
  • 添付可能ファイル : GIF, JPG, PNG
    +
  • ブラウザによっては正常に添付できないことがあります。
    +
  • 最大投稿データ量は '.MAX_KB.' KB までです。
    +
  • 画像は横 '.MAX_W.'ピクセル、縦 '.MAX_H.'ピクセルを超えると縮小表示されます。 + +
  • +
    + '; +} +/* 記事部分 */ +function main(&$dat, $page){ + global $path; + + $line = file(LOGFILE); + $st = ($page) ? $page : 0; + + for($i = $st; $i < $st+PAGE_DEF; $i++){ + if($line[$i]=="") continue; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $line[$i]); + // URLとメールにリンク + if($url) $url = "Link"; + if($email) $name = "$name"; + $com = auto_link($com); + $com = eregi_replace("(^|>)(>[^<]*)", "\\1\\2", $com); + // 画像ファイル名 + $img = $path.$time.$ext; + $src = '.'.IMG_DIR.$time.$ext; +/* 自由に変更してください["]=[\"]に */ + // "; + }elseif($w && $h){//サイズがある時 + $imgsrc = "\"".$size.""; + }else{//それ以外 + $imgsrc = "\"".$size.""; + } + } + // メイン作成 + $dat.="No.$no $sub
    "; + $dat.="Name $name Date $now   $url [レス]"; + $dat.="

    $imgsrc $com


    \n"; + + $p++; + clearstatcache();//ファイルのstatをクリア + } + $prev = $st - PAGE_DEF; + $next = $st + PAGE_DEF; + // 改ページ処理 + $dat.="\n"; + if($prev >= 0){ + $dat.="\n"; + } + if($p >= PAGE_DEF && count($line) > $next){ + $dat.="\n"; + } + $dat.="\n
    "; + $dat.=""; + $dat.="\n"; + $dat.="
    "; + $dat.=""; + $dat.=" \n"; + $dat.="
    \n"; +} +/* フッタ */ +function foot(&$dat){ + $dat.=' + + +
    + +【記事削除】
    +記事No +削除キー + +

    +

    +- GazouBBS - +

    + + '; +} +/* 記事書き込み */ +function regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name){ + global $REQUEST_METHOD,$path; + + // フォーム内容をチェック + if(!$name||ereg("^( | )*$",$name)) error("名前が書き込まれていません"); + if(!$com||ereg("^( | |\t)*$",$com)) error("本文が書き込まれていません"); + if(!$sub||ereg("^( | )*$",$sub)) $sub="(無題)"; + if(strlen($com) > 1000) error("本文が長すぎますっ!"); + + $line = file(LOGFILE); + // 時間とホスト取得 + $tim = time(); + $host = gethostbyaddr(getenv("REMOTE_ADDR")); + // 連続投稿チェック + list($lastno,,$lname,,,$lcom,,$lhost,,,,,$ltime,) = explode(",", $line[0]); + if(RENZOKU && $host == $lhost && $tim - $ltime < RENZOKU) + error("連続投稿はもうしばらく時間を置いてからお願い致します"); + // No.とパスと時間とURLフォーマット + $no = $lastno + 1; + $c_pass = $pwd; + $pass = ($pwd) ? substr(md5($pwd),2,8) : "*"; + $now = gmdate("Y/m/d(D) H:i",$tim+9*60*60); + $url = ereg_replace("^http://", "", $url); + //テキスト整形 + $name = CleanStr($name); + $email= CleanStr($email); + $sub = CleanStr($sub); + $url = CleanStr($url); + $com = CleanStr($com); + // 改行文字の統一。 + $com = str_replace( "\r\n", "\n", $com); + $com = str_replace( "\r", "\n", $com); + // 連続する空行を一行 + $com = ereg_replace("\n(( | )*\n){3,}","\n",$com); + $com = nl2br($com); //改行文字の前に
    を代入する + $com = str_replace("\n", "", $com); //\nを文字列から消す。 + // 二重投稿チェック + if($name == $lname && $com == $lcom) + error("二重投稿は禁止です

    リロード"); + // ログ行数オーバー + if(count($line) >= LOG_MAX){ + for($d = count($line)-1; $d >= LOG_MAX-1; $d--){ + list($dno,,,,,,,,,$ext,,,$dtime,) = explode(",", $line[$d]); + if(is_file($path.$dtime.$ext)) unlink($path.$dtime.$ext); + $line[$d] = ""; + } + } + // アップロード処理 + if(file_exists($upfile)){ + $dest = $path.$upfile_name; + move_uploaded_file($upfile, $dest); + //↑でエラーなら↓に変更 + //copy($upfile, $dest); + if(!is_file($dest)) error("アップロードに失敗しました。
    サーバがサポートしていない可能性があります"); + $size = @getimagesize($dest); + if($size[2]=="") error("アップロードに失敗しました。
    画像ファイル以外は受け付けません"); + $W = $size[0]; + $H = $size[1]; + $ext = substr($upfile_name,-4); + if ($ext == ".php" || $ext == "php3" || $ext == "php4" || $ext == "html") error("アップロードに失敗しました。
    画像ファイル以外は受け付けません"); + rename($dest,$path.$tim.$ext); + // 画像表示縮小 + if($W > MAX_W || $H > MAX_H){ + $W2 = MAX_W / $W; + $H2 = MAX_H / $H; + + ($W2 < $H2) ? $key = $W2 : $key = $H2; + + $W = $W * $key; + $H = $H * $key; + } + $mes = "画像 $upfile_name のアップロードが成功しました

    "; + } + $chk = (CHECK) ? 0 : 1;//未チェックは0 + + //クッキー保存 + $cookvalue = implode(",", array($name,$email,$c_pass)); + setcookie ("gazoubbs", $cookvalue,time()+14*24*3600); /* 2週間で期限切れ */ + + $newline = "$no,$now,$name,$email,$sub,$com,$url,$host,$pass,$ext,$W,$H,$tim,$chk,\n"; + + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, $newline); + fputs($fp, implode('', $line)); + fclose($fp); + + echo "$msg 画面を切り替えます"; + echo ""; +} +/* テキスト整形 */ +function CleanStr($str){ + global $admin; + + $str = trim($str);//先頭と末尾の空白除去 + if (get_magic_quotes_gpc()) {//¥を削除 + $str = stripslashes($str); + } + if($admin!=ADMIN_PASS){//管理者はタグ可能 + $str = htmlspecialchars($str);//タグっ禁止 + $str = str_replace("&", "&", $str);//特殊文字 + } + return str_replace(",", ",", $str);//カンマを変換 +} +/* ユーザー削除 */ +function usrdel($no,$pwd){ + global $path; + + if($no == "") error("削除Noが入力漏れです"); + + $line = file(LOGFILE); + $flag = FALSE; + + for($i = 0; $i掲示板に戻る]\n"; + echo "
    \n"; + echo "管理モード\n"; + echo "
    \n"; + echo "

    \n"; + // ログインフォーム + if(!$pass){ + echo "
    記事削除 "; + echo "管理人投稿

    "; + echo "\n"; + echo ""; + echo "

    \n"; + die(""); + } +} +/* 管理者削除 */ +function admindel($delno,$chkno,$pass){ + global $path; + + if($chkno || $delno){ + $line = file(LOGFILE); + $find = FALSE; + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$tim,$chk) = explode(",",$line[$i]); + if($chkno == $no){//画像チェック$chk=1に + $find = TRUE; + $line[$i] = "$no,$now,$name,$email,$sub,$com,$url,$host,$pw,$ext,$w,$h,$tim,1,\n"; + break; + } + if($delno == $no){//削除の時は空に + $find = TRUE; + $line[$i] = ""; + $delfile = $path.$tim.$ext; //削除ファイル + break; + } + } + if($find){//ログ更新 + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, implode('', $line)); + fclose($fp); + + if(is_file($delfile)) unlink($delfile);//削除 + } + } + // 削除画面を表示 + echo "\n"; + echo "\n"; + echo "\n"; + echo "

    削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい。\n"; + echo "

    \n"; + echo ""; + echo ""; + if(CHECK) echo ""; + echo "\n"; + + $line = file(LOGFILE); + + for($j = 0; $j < count($line); $j++){ + $img_flag = FALSE; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$time,$chk) = explode(",",$line[$j]); + // フォーマット + list($now,$dmy) = split("\(", $now); + if($email) $name="$name"; + $com = str_replace("
    "," ",$com); + $com = htmlspecialchars($com); + if(strlen($com) > 40) $com = substr($com,0,38) . " ..."; + // 画像があるときはリンク + if($ext && is_file($path.$time.$ext)){ + $img_flag = TRUE; + $clip = "".$time.$ext.""; + $size = filesize($path.$time.$ext); + $all += $size; //合計計算 + }else{ + $clip = ""; + $size = 0; + } + $bg = ($j % 2) ? "d6d6f6" : "f6f6f6";//背景色 + + echo ""; + echo ""; + echo ""; + echo "\n"; + + if(CHECK){//画像チェック + if($img_flag && $chk == 1){ + echo ""; + }elseif($img_flag && $chk != 1) { + echo ""; + }else{ + echo ""; + } + } + echo "\n"; + } + if(CHECK) $msg = "or許可する"; + + echo "
    削除記事No投稿日題名投稿者コメントホスト名添付
    (Bytes)
    画像
    許可
    $no$now$sub$name$com$host$clip
    ($size)
    OK

    "; + echo ""; + + $all = (int)($all / 1024); + echo "【 画像データ合計 : $all KB 】"; + die("

    "); +} +/* オートリンク */ +function auto_link($proto){ + $proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","\\1\\2",$proto); + return $proto; +} +/* エラー画面 */ +function error($mes){ + global $upfile_name,$path; + + if(is_file($path.$upfile_name)) unlink($path.$upfile_name); + + head($dat); + echo $dat; + echo "




    +
    $mes
    +


    "; + die(""); +} +/*-----------Main-------------*/ +switch($mode){ + case 'regist': + regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name); + break; + case 'admin': + valid($pass); + if($admin=="del") admindel($del,$chk,$pass); + if($admin=="post"){ + echo ""; + form($post,$res,1); + echo $post; + die(""); + } + break; + case 'usrdel': + usrdel($no,$pwd); + default: + head($buf); + if(!NIKKI) form($buf,$res); + main($buf,$page); + foot($buf); + echo $buf; +} +?> \ No newline at end of file diff --git a/gazou-v3.5(1)/imglog.log b/gazou-v3.5(1)/imglog.log new file mode 100644 index 0000000..e69de29 diff --git a/gazou-v3.5.zip b/gazou-v3.5.zip deleted file mode 100644 index cd78b78..0000000 Binary files a/gazou-v3.5.zip and /dev/null differ diff --git a/gazou-v3.5/copy.php b/gazou-v3.5/copy.php new file mode 100644 index 0000000..84b149a --- /dev/null +++ b/gazou-v3.5/copy.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/gazou-v3.5/gazou.php b/gazou-v3.5/gazou.php new file mode 100644 index 0000000..3280801 --- /dev/null +++ b/gazou-v3.5/gazou.php @@ -0,0 +1,538 @@ +="4.1.0"){ + extract($_REQUEST); + extract($_COOKIE); + $upfile_name=$_FILES["upfile"]["name"]; + $upfile=$_FILES["upfile"]["tmp_name"]; +} +//----設定-------- +define(LOGFILE, 'imglog.log'); //ログファイル名 +define(IMG_DIR, '/img/'); //画像保存ディレクトリ。gazou.phpから見て + +define(TITLE, '画像BBS'); //タイトル(とTOP) +define(HOME, 'http://php.s3.to'); //「ホーム」へのリンク + +define(MAX_KB, '100'); //投稿容量制限 KB(phpの設定により2Mまで +define(MAX_W, '250'); //投稿サイズ幅(これ以上はwidthを縮小 +define(MAX_H, '250'); //投稿サイズ高さ + +define(PAGE_DEF, '7'); //一ページに表示する記事 +define(LOG_MAX, '200'); //ログ最大行数 + +define(ADMIN_PASS, '0123'); //管理者パス +define(CHECK, 0); //管理者がチェックしてから画像表示?yes=1 +define(SOON_ICON, 'soon.jpg'); //チェック中の時の代替画像 +define(RE_COL, '789922'); //>が付いた時の色 + +define(NIKKI, 0); //投稿フォームを表示しない? Yes=1 No=0 + +define(PHP_SELF, "gazou.php"); //このスクリプト名; + + +//画像保存絶対パス $path="/home/public_html/***/img/"; +$path = dirname($_SERVER[PATH_TRANSLATED]).IMG_DIR; + +/* 未定 +$badstring = array("dummy_string","dummy_string2"); //拒絶する文字列 +$badfile = array("dummy","dummy2"); //拒絶するファイルのmd5 +$badip = array("addr.dummy.com","addr2.dummy.com"); //拒絶するホスト +*/ +/* ヘッダ */ +function head(&$dat){ + $dat.=' +<html><head> +<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> +<STYLE TYPE="text/css"> +<!-- +body,tr,td,th { font-size:10pt } +a:hover { color:#DD0000; } +span { font-size:20pt } +small { font-size:8pt } +--> +</STYLE> +<title>'.TITLE.' + +

    +[ホーム] +[管理用] +

    + +'.TITLE.' +


    +'; +} +/* 投稿フォーム */ +function form(&$dat,$resno,$admin=""){ + global $gazoubbs; + + if (get_magic_quotes_gpc()) $gazoubbs = stripslashes($gazoubbs); + list($cname,$cemail,$cpass) = explode(",", $gazoubbs); + + $maxbyte = MAX_KB * 1024; + if($resno){ + $find = false; + $line = file(LOGFILE); + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,) = explode(",", $line[$i]); + if($no == $resno){ + $find = true; + break; + } + } + if(!$find) error("該当記事がみつかりません"); + + if(ereg("Re\[([0-9])\]:", $sub, $reg)){ + $reg[1]++; + $r_sub=ereg_replace("Re\[([0-9])\]:", "Re[$reg[1]]:", $sub); + }elseif(ereg("^Re:", $sub)){ + $r_sub=ereg_replace("^Re:", "Re[2]:", $sub); + }else{ + $r_sub = "Re:$sub"; + } + $r_com = ">$com"; + $r_com = ereg_replace("","\r>",$r_com); + $msg = "
    No. $no へのレスです
    "; + } + if($admin){ + $hidden = ""; + $msg = "

    タグがつかえます

    "; + } + $dat.=' +
    '.$msg.' +
    + +'.$hidden.' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    おなまえ
    Eメール
    題  名 + + +
    コメント +
    URL
    添付File
    削除キー + + (記事の削除用。英数字で8文字以内) +
    + +
  • 添付可能ファイル : GIF, JPG, PNG
    +
  • ブラウザによっては正常に添付できないことがあります。
    +
  • 最大投稿データ量は '.MAX_KB.' KB までです。
    +
  • 画像は横 '.MAX_W.'ピクセル、縦 '.MAX_H.'ピクセルを超えると縮小表示されます。 + +
  • +
    + '; +} +/* 記事部分 */ +function main(&$dat, $page){ + global $path; + + $line = file(LOGFILE); + $st = ($page) ? $page : 0; + + for($i = $st; $i < $st+PAGE_DEF; $i++){ + if($line[$i]=="") continue; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $line[$i]); + // URLとメールにリンク + if($url) $url = "Link"; + if($email) $name = "$name"; + $com = auto_link($com); + $com = eregi_replace("(^|>)(>[^<]*)", "\\1\\2", $com); + // 画像ファイル名 + $img = $path.$time.$ext; + $src = '.'.IMG_DIR.$time.$ext; +/* 自由に変更してください["]=[\"]に */ + // "; + }elseif($w && $h){//サイズがある時 + $imgsrc = "\"".$size.""; + }else{//それ以外 + $imgsrc = "\"".$size.""; + } + } + // メイン作成 + $dat.="No.$no $sub
    "; + $dat.="Name $name Date $now   $url [レス]"; + $dat.="

    $imgsrc $com


    \n"; + + $p++; + clearstatcache();//ファイルのstatをクリア + } + $prev = $st - PAGE_DEF; + $next = $st + PAGE_DEF; + // 改ページ処理 + $dat.="\n"; + if($prev >= 0){ + $dat.="\n"; + } + if($p >= PAGE_DEF && count($line) > $next){ + $dat.="\n"; + } + $dat.="\n
    "; + $dat.=""; + $dat.="\n"; + $dat.="
    "; + $dat.=""; + $dat.=" \n"; + $dat.="
    \n"; +} +/* フッタ */ +function foot(&$dat){ + $dat.=' + + +
    + +【記事削除】
    +記事No +削除キー + +

    +

    +- GazouBBS - +

    + + '; +} +/* 記事書き込み */ +function regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name){ + global $REQUEST_METHOD,$path; + + // フォーム内容をチェック + if(!$name||ereg("^( | )*$",$name)) error("名前が書き込まれていません"); + if(!$com||ereg("^( | |\t)*$",$com)) error("本文が書き込まれていません"); + if(!$sub||ereg("^( | )*$",$sub)) $sub="(無題)"; + if(strlen($com) > 1000) error("本文が長すぎますっ!"); + + $line = file(LOGFILE); + // 時間とホスト取得 + $tim = time(); + $host = gethostbyaddr(getenv("REMOTE_ADDR")); + // 連続投稿チェック + list($lastno,,$lname,,,$lcom,,$lhost,,,,,$ltime,) = explode(",", $line[0]); + if(RENZOKU && $host == $lhost && $tim - $ltime < RENZOKU) + error("連続投稿はもうしばらく時間を置いてからお願い致します"); + // No.とパスと時間とURLフォーマット + $no = $lastno + 1; + $c_pass = $pwd; + $pass = ($pwd) ? substr(md5($pwd),2,8) : "*"; + $now = gmdate("Y/m/d(D) H:i",$tim+9*60*60); + $url = ereg_replace("^http://", "", $url); + //テキスト整形 + $name = CleanStr($name); + $email= CleanStr($email); + $sub = CleanStr($sub); + $url = CleanStr($url); + $com = CleanStr($com); + // 改行文字の統一。 + $com = str_replace( "\r\n", "\n", $com); + $com = str_replace( "\r", "\n", $com); + // 連続する空行を一行 + $com = ereg_replace("\n(( | )*\n){3,}","\n",$com); + $com = nl2br($com); //改行文字の前に
    を代入する + $com = str_replace("\n", "", $com); //\nを文字列から消す。 + // 二重投稿チェック + if($name == $lname && $com == $lcom) + error("二重投稿は禁止です

    リロード"); + // ログ行数オーバー + if(count($line) >= LOG_MAX){ + for($d = count($line)-1; $d >= LOG_MAX-1; $d--){ + list($dno,,,,,,,,,$ext,,,$dtime,) = explode(",", $line[$d]); + if(is_file($path.$dtime.$ext)) unlink($path.$dtime.$ext); + $line[$d] = ""; + } + } + // アップロード処理 + if(file_exists($upfile)){ + $dest = $path.$upfile_name; + move_uploaded_file($upfile, $dest); + //↑でエラーなら↓に変更 + //copy($upfile, $dest); + if(!is_file($dest)) error("アップロードに失敗しました。
    サーバがサポートしていない可能性があります"); + $size = @getimagesize($dest); + if($size[2]=="") error("アップロードに失敗しました。
    画像ファイル以外は受け付けません"); + $W = $size[0]; + $H = $size[1]; + $ext = substr($upfile_name,-4); + if ($ext == ".php" || $ext == "php3" || $ext == "php4" || $ext == "html") error("アップロードに失敗しました。
    画像ファイル以外は受け付けません"); + rename($dest,$path.$tim.$ext); + // 画像表示縮小 + if($W > MAX_W || $H > MAX_H){ + $W2 = MAX_W / $W; + $H2 = MAX_H / $H; + + ($W2 < $H2) ? $key = $W2 : $key = $H2; + + $W = $W * $key; + $H = $H * $key; + } + $mes = "画像 $upfile_name のアップロードが成功しました

    "; + } + $chk = (CHECK) ? 0 : 1;//未チェックは0 + + //クッキー保存 + $cookvalue = implode(",", array($name,$email,$c_pass)); + setcookie ("gazoubbs", $cookvalue,time()+14*24*3600); /* 2週間で期限切れ */ + + $newline = "$no,$now,$name,$email,$sub,$com,$url,$host,$pass,$ext,$W,$H,$tim,$chk,\n"; + + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, $newline); + fputs($fp, implode('', $line)); + fclose($fp); + + echo "$msg 画面を切り替えます"; + echo ""; +} +/* テキスト整形 */ +function CleanStr($str){ + global $admin; + + $str = trim($str);//先頭と末尾の空白除去 + if (get_magic_quotes_gpc()) {//¥を削除 + $str = stripslashes($str); + } + if($admin!=ADMIN_PASS){//管理者はタグ可能 + $str = htmlspecialchars($str);//タグっ禁止 + $str = str_replace("&", "&", $str);//特殊文字 + } + return str_replace(",", ",", $str);//カンマを変換 +} +/* ユーザー削除 */ +function usrdel($no,$pwd){ + global $path; + + if($no == "") error("削除Noが入力漏れです"); + + $line = file(LOGFILE); + $flag = FALSE; + + for($i = 0; $i掲示板に戻る]\n"; + echo "
    \n"; + echo "管理モード\n"; + echo "
    \n"; + echo "

    \n"; + // ログインフォーム + if(!$pass){ + echo "
    記事削除 "; + echo "管理人投稿

    "; + echo "\n"; + echo ""; + echo "

    \n"; + die(""); + } +} +/* 管理者削除 */ +function admindel($delno,$chkno,$pass){ + global $path; + + if($chkno || $delno){ + $line = file(LOGFILE); + $find = FALSE; + for($i = 0; $i < count($line); $i++){ + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$tim,$chk) = explode(",",$line[$i]); + if($chkno == $no){//画像チェック$chk=1に + $find = TRUE; + $line[$i] = "$no,$now,$name,$email,$sub,$com,$url,$host,$pw,$ext,$w,$h,$tim,1,\n"; + break; + } + if($delno == $no){//削除の時は空に + $find = TRUE; + $line[$i] = ""; + $delfile = $path.$tim.$ext; //削除ファイル + break; + } + } + if($find){//ログ更新 + $fp = fopen(LOGFILE, "w"); + flock($fp, 2); + fputs($fp, implode('', $line)); + fclose($fp); + + if(is_file($delfile)) unlink($delfile);//削除 + } + } + // 削除画面を表示 + echo "\n"; + echo "\n"; + echo "\n"; + echo "

    削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい。\n"; + echo "

    \n"; + echo ""; + echo ""; + if(CHECK) echo ""; + echo "\n"; + + $line = file(LOGFILE); + + for($j = 0; $j < count($line); $j++){ + $img_flag = FALSE; + list($no,$now,$name,$email,$sub,$com,$url, + $host,$pw,$ext,$w,$h,$time,$chk) = explode(",",$line[$j]); + // フォーマット + list($now,$dmy) = split("\(", $now); + if($email) $name="$name"; + $com = str_replace("
    "," ",$com); + $com = htmlspecialchars($com); + if(strlen($com) > 40) $com = substr($com,0,38) . " ..."; + // 画像があるときはリンク + if($ext && is_file($path.$time.$ext)){ + $img_flag = TRUE; + $clip = "".$time.$ext.""; + $size = filesize($path.$time.$ext); + $all += $size; //合計計算 + }else{ + $clip = ""; + $size = 0; + } + $bg = ($j % 2) ? "d6d6f6" : "f6f6f6";//背景色 + + echo ""; + echo ""; + echo ""; + echo "\n"; + + if(CHECK){//画像チェック + if($img_flag && $chk == 1){ + echo ""; + }elseif($img_flag && $chk != 1) { + echo ""; + }else{ + echo ""; + } + } + echo "\n"; + } + if(CHECK) $msg = "or許可する"; + + echo "
    削除記事No投稿日題名投稿者コメントホスト名添付
    (Bytes)
    画像
    許可
    $no$now$sub$name$com$host$clip
    ($size)
    OK

    "; + echo ""; + + $all = (int)($all / 1024); + echo "【 画像データ合計 : $all KB 】"; + die("

    "); +} +/* オートリンク */ +function auto_link($proto){ + $proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","\\1\\2",$proto); + return $proto; +} +/* エラー画面 */ +function error($mes){ + global $upfile_name,$path; + + if(is_file($path.$upfile_name)) unlink($path.$upfile_name); + + head($dat); + echo $dat; + echo "




    +
    $mes
    +


    "; + die(""); +} +/*-----------Main-------------*/ +switch($mode){ + case 'regist': + regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name); + break; + case 'admin': + valid($pass); + if($admin=="del") admindel($del,$chk,$pass); + if($admin=="post"){ + echo ""; + form($post,$res,1); + echo $post; + die(""); + } + break; + case 'usrdel': + usrdel($no,$pwd); + default: + head($buf); + if(!NIKKI) form($buf,$res); + main($buf,$page); + foot($buf); + echo $buf; +} +?> \ No newline at end of file diff --git a/gazou-v3.5/imglog.log b/gazou-v3.5/imglog.log new file mode 100644 index 0000000..e69de29