/* 画像掲示板 futaba.php v0.8 lot.051031 このスクリプトはレッツPHP!のgazou.phpを改造したものです。 配布条件はレッツPHP!に準じます。改造、再配布は自由にどうぞ。 このスクリプトに関する質問はレッツPHP!にしないようにお願いします。 最新版はで配布しています。 ご質問は準備板@ふたばまでどうぞ。 設置法: 所望のディレクトリのパーミッションを777にします。 srcディレクトリとthumbディレクトリを作り、パーミッションを777にします。 futaba.phpを置き、ブラウザから呼出します(必要なファイルが自動設定されます)。 */ extract($_POST,EXTR_SKIP); extract($_GET,EXTR_SKIP); extract($_COOKIE,EXTR_SKIP); $upfile_name=isset($_FILES["upfile"]["name"]) ? $_FILES["upfile"]["name"] : ""; $upfile=isset($_FILES["upfile"]["tmp_name"]) ? $_FILES["upfile"]["tmp_name"] : ""; define("LOGFILE", 'img.log'); //ログファイル名 define("TREEFILE", 'tree.log'); //ログファイル名 define("IMG_DIR", 'src/'); //画像保存ディレクトリ。futaba.phpから見て define("THUMB_DIR",'thumb/'); //サムネイル保存ディレクトリ define("TITLE", 'フィギュア画像掲示板'); //タイトル(とTOP) define("HOME", 'http://nimbus.sub.jp/figure/'); //「ホーム」へのリンク define("MAX_KB", '500'); //投稿容量制限 KB(phpの設定により2Mまで define("MAX_W", '250'); //投稿サイズ幅(これ以上はwidthを縮小 define("MAX_H", '250'); //投稿サイズ高さ define("PAGE_DEF", '7'); //一ページに表示する記事 define("LOG_MAX", '500'); //ログ最大行数 define("ADMIN_PASS", '5turbo'); //管理者パス define("RE_COL", '789922'); //>が付いた時の色 define("PHP_SELF", 'figure.php'); //このスクリプト名 define("PHP_SELF2", '0.htm'); //入り口ファイル名 define("PHP_EXT", '.htm'); //1ページ以降の拡張子 define("RENZOKU", '5'); //連続投稿秒数 define("RENZOKU2", '10'); //画像連続投稿秒数 define("MAX_RES", '30'); //強制sageレス数 define("USE_THUMB", 1); //サムネイルを作る する:1 しない:0 define("PROXY_CHECK", 1); //proxyの書込みを制限する y:1 n:0 define("DISP_ID", 2); //IDを表示する 強制:2 する:1 しない:0 define("BR_CHECK", 15); //改行を抑制する行数 しない:0 define("IDSEED", 1); //idの種 define("RESIMG", 1); //レスに画像を貼る:1 貼らない:0 $path = realpath("./").'/'.IMG_DIR; $badstring = array("dummy_string","dummy_string2"); //拒絶する文字列 $badfile = array("dummy","dummy2"); //拒絶するファイルのmd5 $badip = array("bl9-227-162.dsl.telepac.pt","k173015.ppp.asahi-net.or.jp","mail.tctriada.net","81.193.59.91","eatkyo098003.adsl.ppp.infoweb.ne.jp","64-28-187-69-rev.cernel.net","112.94.58.177","188.92.74.79","188.92.78.35","195.191.54.101","h-134-56.cssgroup.lv","94.142.135.12","67.105.168.58.ptr.us.xo.net","h-131-241.cssgroup.lv","188.92.78.98","117.42.69.176","host-34-8.wyszkow.fuz.pl","mail.dawoodequities.com","vs-auctionshop101.per.syra.net.au","host9122720124.3s.pl","85.90.63.62","203.129.5.204","253.Red-79-149-57.dynamicIP.rima-tde.net","srv200918.objektvertrieb.de","198-101-222-139.static.cloud-ips.com","89-68-161-86.dynamic.chello.pl","109.104.118.122-cloud-server-london-hex.dediserve.com","ec2-23-23-94-157.compute-1.amazonaws.com","preobrazov.rs.net.ua","Bee.CS.UCLA.EDU","ip-151-142-239-11.williams.com","111.72.29.238","p-151-142-239-11.williams.com","91.232.96.10","111.72.29.238","175.184.33.132","dev.odra.com.ar","115-64-65-17.static.tpgi.com.au","static-host119-73-1-87.link.net.pk","host9122720124.3s.pl","www.seeblocks.com","host14.ge-sovac.rain.fr","ec2-54-249-26-104.ap-northeast-1.compute.amazonaws.com","115-64-65-17.static.tpgi.com.au","34.111.96.58.static.exetel.com.au","111.76.93.199","rev-061.snrm.fr","91-234-60-182.inko-telecom.ru","rsdev1.edgewater.com","static.exetel.com.au","compute.amazonaws.com","knox.tn.ena.net","barataria.tamu.edu","whiteboard.ne.jp","Illinois.hfc.comcastbusiness.net","net.upc.nl",".lnk.telstra.net","188.92.74.79","188.92.78.35","195.191.55.11","91.232.96.10","h-134-56.cssgroup.lv","111.76.93.74","cssgroup.lv","94.142.135.12","188.92.78.98","91.232.96.10","195.191.54.101","94.142.135.12","111.76.93.126","91.232.96.11","",""); //拒絶するホスト $addinfo=''; /* ヘッダ */ function head(&$dat){ $dat.=' '.TITLE.' [ホーム] [管理用] '.TITLE.' '; } /* 投稿フォーム */ function form(&$dat,$resno,$admin=""){ global $addinfo; $msg=""; $hidden=""; $maxbyte = MAX_KB * 1024; $no=$resno; if($resno){ $msg .= "[掲示板に戻る]\n"; $msg .= "\n"; $msg .= "レス送信モード\n"; $msg .= "\n"; } if($admin){ $hidden = ""; $msg = "タグがつかえます"; } $dat.=$msg.' '.$hidden.' '; if($no){$dat.=' ';} $dat.=' おなまえ E-mail 題 名 コメント '; if(RESIMG || !$resno){ $dat.='添付file [画像なし] ';} $dat.='削除キー(記事の削除用。英数字で8文字以内) 添付可能ファイル:GIF, JPG, PNG ブラウザによっては正常に添付できないことがあります。 最大投稿データ量は '.MAX_KB.' KB までです。sage機能付き。 画像は横 '.MAX_W.'ピクセル、縦 '.MAX_H.'ピクセルを超えると縮小表示されます。 '.$addinfo.' '; } /* 記事部分 */ function updatelog($resno=0){ global $path;$p=0; $tree = file(TREEFILE); $find = false; if($resno){ $counttree=count($tree); for($i = 0;$i<$counttree;$i++){ list($artno,)=explode(",",rtrim($tree[$i])); if($artno==$resno){$st=$i;$find=true;break;} //レス先検索 } if(!$find) error("該当記事がみつかりません"); } $line = file(LOGFILE); $countline=count($line); for($i = 0; $i < $countline; $i++){ list($no,) = explode(",", $line[$i]); $lineindex[$no]=$i + 1; //逆変換テーブル作成 } $counttree = count($tree); for($page=0;$page<$counttree;$page+=PAGE_DEF){ $dat=''; head($dat); form($dat,$resno); if(!$resno){ $st = $page; } $dat.=''; for($i = $st; $i < $st+PAGE_DEF; $i++){ if(empty($tree[$i])){continue;} $treeline = explode(",", rtrim($tree[$i])); $disptree = $treeline[0]; $j=$lineindex[$disptree] - 1; //該当記事を探して$jにセット if(empty($line[$j])){continue;} //$jが範囲外なら次の行 list($no,$now,$name,$email,$sub,$com,$url, $host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $line[$j]); // URLとメールにリンク if($email) $name = "$name"; $com = auto_link($com); $com = eregi_replace("(^|>)(>[^<]*)", "\\1\\2", $com); // 画像ファイル名 $img = $path.$time.$ext; $src = IMG_DIR.$time.$ext; // サムネイルを表示しています.クリックすると元のサイズを表示します."; }else{ $imgsrc = ""; } }else{//それ以外 $imgsrc = ""; } $dat.="画像タイトル:$time$ext-($size B)$imgsrc"; } // メイン作成 $dat.="$sub \n"; $dat.="Name $name $now No.$no \n"; if(!$resno) $dat.="[返信]"; $dat.="\n$com"; // そろそろ消える。 if($lineindex[$no]-1 >= LOG_MAX*0.95){ $dat.="このスレは古いので、もうすぐ消えます。\n"; } //レス作成 if(!$resno){ $s=count($treeline) - 10; if($s<1){$s=1;} elseif($s>1){ $dat.="レス". ($s - 1)."件省略。全て読むには返信ボタンを押してください。\n"; } }else{$s=1;} for($k = $s; $k < count($treeline); $k++){ $disptree = $treeline[$k]; $j=$lineindex[$disptree] - 1; if($line[$j]=="") continue; list($no,$now,$name,$email,$sub,$com,$url, $host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $line[$j]); // URLとメールにリンク if($email) $name = "$name"; $com = auto_link($com); $com = eregi_replace("(^|>)(>[^<]*)", "\\1\\2", $com); // 画像ファイル名 $img = $path.$time.$ext; $src = IMG_DIR.$time.$ext; // サムネイル表示"; }else{ $imgsrc = ""; } }else{//それ以外 $imgsrc = ""; } $imgsrc=" $time$ext-($size B) $imgsrc"; } // メイン作成 $dat.="…\n"; $dat.="$sub \n"; $dat.="Name $name $now No.$no \n"; $dat.="$imgsrc$com"; $dat.="\n"; } $dat.="\n"; clearstatcache();//ファイルのstatをクリア $p++; if($resno){break;} //res時はtree1行だけ } $dat.=' 【記事削除】[画像だけ消す] 削除キー '; if(!$resno){ //res時は表示しない $prev = $st - PAGE_DEF; $next = $st + PAGE_DEF; // 改ページ処理 $dat.=""; if($prev >= 0){ if($prev==0){ $dat.=""; }else{ $dat.=""; } $dat.=""; $dat.=""; }else{$dat.="最初のページ";} $dat.=""; for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){ if($st==$i){$dat.="[".($i/PAGE_DEF)."] ";} else{ if($i==0){$dat.="[0] ";} else{$dat.="[".($i/PAGE_DEF)."] ";} } } $dat.=""; if($p >= PAGE_DEF && count($tree) > $next){ $dat.=""; $dat.=""; $dat.=""; }else{$dat.="最後のページ";} $dat.="\n"; } foot($dat); if($resno){echo $dat;break;} if($page==0){$logfilename=PHP_SELF2;} else{$logfilename=$page/PAGE_DEF.PHP_EXT;} $fp = fopen($logfilename, "w"); set_file_buffer($fp, 0); rewind($fp); fputs($fp, $dat); fclose($fp); chmod($logfilename,0666); } if(!$resno&&is_file(($page/PAGE_DEF+1).PHP_EXT)){unlink(($page/PAGE_DEF+1).PHP_EXT);} } /* フッタ */ function foot(&$dat){ $dat.=' - GazouBBS + futaba - Project Nimbus ゆるいラジコン魂 カメラ雑感 フィギュア@よつば '; } /* オートリンク */ function auto_link($proto){ $proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","\\1\\2",$proto); return $proto; } /* エラー画面 */ function error($mes,$dest=''){ global $upfile_name,$path; if(is_file($dest)) unlink($dest); head($dat); echo $dat; echo " $mesリロード "; die("
[ホーム] [管理用]
'.TITLE.'
$com