="4.1.0"){//PHP4.1.0以降対応
$_GET = array_map("_clean", $_GET);
$_POST = array_map("_clean", $_GET);
extract($_GET);
extract($_POST);
extract($_COOKIE);
extract($_SERVER);
$upfile_type=_clean($_FILES['up']['type']);
$upfile_size=$_FILES["upfile"]["size"];//某所で気づく・・・
$upfile_name=_clean($_FILES["upfile"]["name"]);
$upfile=$_FILES["upfile"]["tmp_name"];
}
$logfile = "myunmyun.log"; //ログファイル名(変更する事)
$updir = "./img/"; //アップ用ディレクトリ
$prefix = 'melon'; //接頭語(up001.txt,up002.jpgならup)
$logmax = 10000; //log保存行(これ以上は古いのから削除)
$commax = 250; //コメント投稿量制限(バイト。全角はこの半分)
$limitk = 3072; //アップロード制限(KB キロバイト)
$page_def = 30; //一ページの表示行数
$admin = "shiba222"; //削除管理パス
$auto_link = 1; //コメントの自動リンク(Yes=1;No=0);
$denylist = array('adsl.ppp.infoweb.ne.jp','opt2.point.ne.jp','t-com.ne.jp'); //アクセス拒否ホスト
$arrowext = array('jpg','png','gif','wav','mp3'); //許可拡張子 小文字(それ以外はエラー
$count_start = "2004/11/01"; //カウンタ開始日
$count_file = "count.txt"; //カウンタファイル(空ファイルで666)
$last_file = "last.cgi"; //連続投稿制限用ファイル(空ファイルで666)
$last_time = 0; //同一IPからの連続投稿許可する間隔(分)(0で無制限)
/* 項目表示(環境設定)の初期状態 (表示ならChecked 表示しないなら空) */
$f_act = 'checked'; //ACT(削除リンク)
$f_com = 'checked'; //コメント
$f_size = 'checked'; //ファイルサイズ
$f_mime = ''; //MIMEタイプ
$f_date = 'checked'; //日付け
$f_anot = 'checked'; //別窓で開く?
$f_orig = 'checked'; //元ファイル名
if($act=="envset"){
$cookval = implode(",", array($acte,$come,$sizee,$mimee,$datee,$anote,$orige));
setcookie ("upcook", $cookval,time()+365*24*3600);
}
function _clean($str) {
$str = htmlspecialchars($str);
if (get_magic_quotes_gpc()) $str = stripslashes($str);
return $str;
}
/* ここからヘッダー */
?>
メロン記念日うpろだ
メロン記念日用うpろだです
柴田あゆみ@メロン記念日用うpろだはこちら
いししば用うpろだはこちら
FOOT;
function FormatByte($size){//バイトのフォーマット(B→kB)
if($size == 0) $format = "";
else if($size <= 1024) $format = $size."B";
else if($size <= (1024*1024)) $format = sprintf ("%dkB",($size/1024));
else if($size <= (10*1024*1024)) $format = sprintf ("%.2fMB",($size/(1024*1024)));
else $format = $size."B";
return $format;
}
function paging($page, $total){//ページリンク作成
global $PHP_SELF,$page_def;
for ($j = 1; $j * $page_def < $total+$page_def; $j++) {
if($page == $j){//今表示しているのはリンクしない
$next .= "[ $j ]";
}else{
$next .= sprintf("[%d]", $PHP_SELF,$j,$j);//他はリンク
}
}
if($page=="all") return sprintf ("Page: %s [ALL]",$next,$PHP_SELF);
else return sprintf ("Page: %s [ALL]",$next,$PHP_SELF);
}
function error($mes1,$mes2=""){//えっらーメッセージ
global $foot;
echo "
$mes1
$mes2
";
echo $foot;
exit;
}
/* start */
$limitb = $limitk * 1024;
$host = @gethostbyaddr($REMOTE_ADDR);
if(!$upcook) $upcook=implode(",",array($f_act,$f_com,$f_size,$f_mime,$f_date,$f_anot,$f_orig));
list($c_act,$c_com,$c_size,$c_mime,$c_date,$c_anot,$c_orig)=explode(",",$upcook);
/* アクセス制限 */
if(is_array($denylist)){
while(list(,$line)=each($denylist)){
if(strstr($host, $line)) error('アクセス制限','あなたにはアクセス権限がありません。');
}
}
/* 削除実行 */
if($delid && $delpass!=""){
$old = file($logfile);
$find = false;
for($i=0; $i
パスワード入力:
");
}
/* 環境設定フォーム */
if($act=="env"){
echo "
環境設定
戻る
";
echo $foot;
exit;
}
$lines = file($logfile);
/* アプロード書き込み処理 */
if(file_exists($upfile) && $com && $upfile_size > 0){
if(strlen($com) > $commax) error('投稿エラー','コメントが長すぎます');
if($upfile_size > $limitb) error('投稿エラー','ファイルがデカすぎます');
/* 連続投稿制限 */
if($last_time > 0){
$now = time();
$last = @fopen($last_file, "r+") or die("連続投稿用ファイル $last_file を作成してください");
$lsize = fgets($last, 1024);
list($ltime, $lip) = explode("\t", $lsize);
if($host == $lip && $last_time*60 > ($now-$ltime)){
error('連続投稿制限中','時間を置いてやり直してください');
}
rewind($last);
fputs($last, "$now\t$host\t");
fclose($last);
}
/* 拡張子と新ファイル名 */
$pos = strrpos($upfile_name,"."); //拡張子取得
$ext = substr($upfile_name,$pos+1,strlen($upfile_name)-$pos);
$ext = strtolower($ext);//小文字化
if(!in_array($ext, $arrowext))
error("拡張子エラー","その拡張子ファイルはアップロードできません");
/* 拒否拡張子はtxtに変換
for($i=0; $i= $logmax){ //ログオーバーならデータ削除
for($d = count($lines)-1; $d >= $logmax-1; $d--){
list($did,$dext,)=explode("\t", $lines[$d]);
if(file_exists($updir.$prefix.$did.".".$dext)) {
unlink($updir.$prefix.$did.".".$dext);
}
}
}
$fp = fopen ($logfile , "w"); //書き込みモードでオープン
flock($fp ,2);
fputs ($fp, "$dat\n"); //先頭に書き込む
for($i = 0; $i < $logmax-1; $i++) //いままでの分を追記
fputs($fp, $lines[$i]);
fclose ($fp);
reset($lines);
$lines = file($logfile); //入れなおし
}
foreach($arrowext as $list) $arrow .= $list." ";
/* 投稿フォーム */
echo '
';
/* カウンタ */
echo "$count_start から ";
if(file_exists($count_file)){
$fp = fopen($count_file,"r+");//読み書きモードでオープン
$count = fgets($fp, 64); //64バイトorEOFまで取得、カウントアップ
$count++;
fseek($fp, 0); //ポインタを先頭に、ロックして書き込み
flock($fp,2);
fputs($fp, $count);
fclose($fp); //ファイルを閉じる
echo $count; //カウンタ表示
}
/* モードリンク */
echo '
(こわれにくさレベル1)D:投稿記事削除
環境設定 | リロード |
画像一覧
';
/* ログ開始位置 */
$st = ($page) ? ($page - 1) * $page_def : 0;
if(!$page) $page = 1;
if($page == "all"){
$st = 0;
$page_def = count($lines);
}
echo paging($page, count($lines));//ページリンク
//メインヘッダ
echo "
";
if($c_act) echo "DEL | ";
echo "NAME | ";
if($c_com) echo "COMMENT | ";
if($c_size) echo "SIZE | ";
if($c_mime) echo "MIME | ";
if($c_date) echo "DATE | ";
if($c_orig) echo "ORIG | ";
echo "
";
//メイン表示
for($i = $st; $i < $st+$page_def; $i++){
if($lines[$i]=="") continue;
list($id,$ext,$com,$host,$now,$size,$mtype,$pas,$orig,)=explode("\t",$lines[$i]);
$fsize = FormatByte($size);
if($auto_link) $com = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","\\1\\2",$com);
$filename = $prefix.$id.".$ext";
$target = $updir.$filename;
if($c_anot) $jump = "target='_new'";
// echo "";ホスト表示
if($c_act) echo "D | ";
echo "[$filename] | ";
if($c_com) echo "$com | ";
if($c_size) echo "$fsize | ";
if($c_mime) echo "$mtype | ";
if($c_date) echo "$now | ";
if($c_orig) echo "$orig | ";
echo "
\n";
}
echo "
";
echo paging($page,count($lines));
echo $foot;
?>