="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/'); //画像保存ディレクトリ。light.phpから見て
define(TITLE, 'BBS Script'); //タイトル(
とTOP)
define(HOME, 'http://kappa.fracter.net'); //「ホーム」へのリンク
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, "light.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.='
'.TITLE.'
[ホーム]
[管理用]
'.TITLE.'
';
}
/* 投稿フォーム */
function form(&$dat,$resno,$admin=""){
global $lightbbs;
if (get_magic_quotes_gpc()) $lightbbs = stripslashes($lightbbs);
list($cname,$cemail,$cpass) = explode(",", $lightbbs);
$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.'
';
}
/* 記事部分 */
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 = "";
}else{//それ以外
$imgsrc = "";
}
}
// メイン作成
$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";
}
/* フッタ */
function foot(&$dat){
$dat.='
- レッツ PHP! -
';
}
/* 記事書き込み */
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 ("lightbbs", $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";
die("