#!/usr/bin/perl #┌───────────────────────────────── #│---- Script Arranged by : area8783 ---- #│ #│ FLOWER-LINK_01 v1.0 (2003.01.12) #│ FLOWER-LINK_01 v1.1 (2003.03.22) #│ Copyright(C) area8783 2001-2003 #│ http://pureweb.jp/~area8783/ #└───────────────────────────────── #+++ 設置方法構成(具体例) #+++ #+++ public_html(ホームページディレクトリ) #+++ | #+++ |-- cgi-bin(任意のディレクトリ) #+++ | #+++ |-- jcode.pl (755)…(日本語ライブラリ) #+++ |-- flower_link.cgi (755)…(スクリプト本体) #+++ |-- flower_link.txt (666)…(ログファイル)…空のままアップロード #+++ |-- flower_link_bak01.txt(666)…(バックアップファイル)…空のままアップロード #+++ |-- flower_link_bak02.txt(666)…(バックアップファイル)…空のままアップロード #+++ |-- 〜 #+++ |-- flower_link_bakxx.txt(666)…(バックアップファイル)…空のままアップロード #+++ | #+++ +-- images / 01.gif, osusume.gif, ... #+++ #+++   ■( )内はパーミッッションの値です。 #+++   ■gif以外はアスキーモード、gif,jpgはバイナリーモードでアップロードして下さい。 #+++   ■flower_link.lockは自動作成&削除しますので、各自でご用意する必要はありません。 #+++   ■設置時にエラーになる方は、各ファイルの指定をフルパス(http://〜)で指定してみて下さい。 #+++   ■バックアップファイルは、世代分(3日間分であれば、〜bak01.txtから〜bak03.txtの3個)作成してください。 #+++ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #+++----スクリプト作成元---- #+++ #+++  [ ぷりんぷりんく Ver0.847 … 2001.06.02 #+++ ・・・・・>>> All Created by Tacky #+++ ・・・・・>>> Copyright (c) 1999.7 Tacky's Room. All rights reserved.... #+++ Email >>> tacky2@ops.dti.ne.jp #+++ Homepage >>> http://tackysroom.com/ #+++ #+++ >>> Update-History... #+++ #+++ 2001.06.02(Ver0.847) >> サイトに飛ばない事がある不具合を修正 #+++ 2001.04.29(Ver0.846) >> 管理者以外が登録しようとした場合「オススメは登録出来ません」のエラーになり登録出来ないバグ修正。 #+++ 2001.04.26(Ver0.845) >> フォントサイズの指定追加($ptの設定箇所忘れてただけ。(^^ゞ) #+++ 2001.04.25(Ver0.844) >> 「発信地」の検索不具合対応 #+++ 2001.04.10(Ver0.843) >> 削除が出来ない・・・ 「i010410」という文字が入った行が2ヶ所あるのですがそこだけ修正。 #+++ 2001.04.06(Ver0.842) >> オススメ機能を使う場合、管理人以外登録されないとんでもないバグを修正。 #+++ ランキング表示部のリンクタグ生成不正。 #+++ 2001.04.05(Ver0.841) >> オススメ画像の1番目で登録した際に登録されないバグ修正 #+++ 2001.04.03(Ver0.84) >> オススメ登録方法を変更。該当カテゴリー内でのオススメサイトをチェック出来るようになりました。 #+++ 「発信地」を使用しない場合の検索が正常動作しませんでした。 #+++ 2001.03.28(Ver0.831) >> Sendmailでメールが送信されない不具合がありました。ごめんごめんですぅぅ。m(_ _)m #+++ >> 管理人登録記事を修正したら管理人登録されていない状態(色が)になってしまう不具合。 #+++ 2001.03.26(Ver0.83) >> サイト説明文でしか検索比較していませんでしたが、HPタイトルも検索対象としました。<そりゃそうだ。(^^;;; #+++ >> 英字を小文字で検索した場合、大文字で登録されていたら検索対象外となっていたので対象とするように修正 #+++ 2001.03.22(Ver0.823) >> デバッグ用のゴミが残ってました。大至急最新版にしてください。またサーバー内にtest.txtというファイルが #+++ 存在している方はそのファイルを削除してくださいー。m(_ _)m #+++ 2001.03.19(Ver0.822) >> 戻り先URLの指定をちょっと変えてみた #+++ 2001.03.18(Ver0.821) >> タイトルロゴのタグへん。その他一部修正(^^;;; #+++ 2001.03.18(Ver0.82) >> ランキング機能追加 #+++ 自動ログバックアップ(世代管理可能)&復旧機能追加 #+++ 簡易表示機能追加 #+++ メール送信(Sendmail使えるサーバーのみ)機能追加 #+++ 2001.02.05(Ver0.81) >> 何をなおしたかわからなくなった。(笑) #+++ 2001.01.09(Ver0.80) >> サーバーがWAKWAKの方が設置出来なかったみたいですが、WAKWAKユーザーの方から対処方法を教えて頂きました。(^^ゞ #+++ 2000.08.03(Ver0.79) >> 修正時、パスワードを変更しても反映しない不具合修正 #+++ 2000.07.12(Ver0.78) >> ファイルロックが解除されない場合がある不具合修正 #+++ 2000.06.13(Ver0.77) >> 管理人が登録しても「管理人が登録した」扱いにならないバグ対応 #+++ 2000.06.10(Ver0.76) >> いきなりGo機能を使用出来なくする設定を追加・ロック処理見直し・Apache+Netscape文字化け対応・パスワード暗号化 #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ require './jcode.pl'; #日本語コード変換 $script = './flower_link.cgi'; #このCGIの名前を指定 $logfile = './flower_link.txt'; #ログファイルの名前を指定 $lockfile = './flower_link.lock'; #ロックファイルの名前を指定(修正不要) $backfile = './flower_link_bak'; #バックアップファイルの名前を指定 ※拡張子不要!※バックアップ取らない方は、$backfile='';としてね #▼何世代(何日間分)バックアップ取りますか? 余り大きい値にするとサーバー容量少なくなっちゃうよ。 # ※常に一番古い更新日付のバックアップファイルに自動で保存していきます。 # ※バックアップファイルは、上記の「$backfile」+2桁の数字+「.txt」というファイルを作成し、アップロードしてください。 #  $backfile=2の場合は、flower_link_bak01.txtとflower_link_bak02.txtの2個という事になります。 $backcnt = 2; $url = 'http://iinodot.com/'; #戻り先URLを指定 $textcolor = '#696969'; #テキストカラー $linkcolor = '#483D8B'; #未訪問リンク $alinkcolor = '#CC6699'; #アクティブリンクカラー $vlinkcolor = '#B0E0E6'; #訪問済リンク $hovercolor = '#CC6699'; #カーソルが乗ったときのリンクカラー(IEのみ) $pt = 'small'; #フォントサイズ $hr = "#B0E0E6"; #横線の色(IE4以上、NN6以上のみ反映) $hlink_bgcolor = "#FBF1F1"; #インプットボタンにマウスをのせたときの背景色 #===================CSS style start========================# sub css { print <<"CSS"; CSS } #===================CSS style end========================# #↓カテゴリーを設定します。[0]は修正しないで下さいね。 # カテゴリーを増やしたい場合は[12].[13]....[20]のように追加して下さいね。 $sinchaku = '10' ; #新着情報を何件表示させるか? #管理人以外の登録を認める? $kanrisw = 'no'; #yes,no #いきなりGo機能は使用する? $ikinarisw = 'yes'; #yes,no $CATEGORY[0] = '新着サイト'; $CATEGORY[1] = '管理人オススメのページ'; $CATEGORY[2] = 'Web material'; $CATEGORY[3] = 'HTML'; $CATEGORY[4] = 'CGI'; $CATEGORY[5] = 'gardening'; $CATEGORY[6] = 'cooking'; $CATEGORY[7] = 'diary'; $CATEGORY[8] = 'family'; $CATEGORY[9] = 'art'; $CATEGORY[10] = 'pasocom'; $CATEGORY[11] = 'hobby'; $CATEGORY[12] = 'fun'; $CATEGORY[13] = 'game'; $CATEGORY[14] = 'essay/novel'; $CATEGORY[15] = 'resort'; $CATEGORY[16] = 'country music '; $title = 'Flower-Link_01'; #タイトルを指定 $titlelogo = ''; #タイトル画像を指定 $bgcolor = '#FFFFFF'; #背景色を指定 $backpicture = 'images/tkikyou01.jpg'; #背景画像を指定(使用しない場合は、''で良い) $frmtopcolor = '#FFFFFF'; #ウインドウ上部の「カテゴリー変更・検索」のテーブル背景色 $frmtoptxcolor = '#696969'; #ウインドウ上部の「カテゴリー変更・検索」のテーブル文字色 $frmbgcolor = '#FFFFFF'; #入力フォームの背景色を指定 $frmtxcolor = '#696969'; #入力フォームの文字色を指定 #↓管理者が登録した場合の「ログ表示部分色設定」 #┏━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃ ┃   2                    ┃ #┃1┣━━━━━━━━━━━━━━━━━━━━━━━━┫ #┃ ┃   3                    ┃ #┗━┻━━━━━━━━━━━━━━━━━━━━━━━━┛ #「1」の部分の背景 $tblbgcolor1_k = '#CC6699'; #「1」の部分の背景画像 $tblbgimg1_k = 'background="images/01.gif"'; #ログ見出しの背景色を指定 #「2」の部分の色 $tblbgcolor2_k = '#FFFFFF'; #ログ表示部分の背景色を指定 $tbltxcolor2_k = '#696969'; #ログ表示部分の文字色を指定 #「3」の部分の色 $tblbgcolor3_k = '#F0F8FF'; #ログ表示部分の背景色を指定 $tbltxcolor3_k = '#696969'; #ログ表示部分の文字色を指定 #↓管理者以外が登録した場合の「ログ表示部分色設定」 #┏━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃ ┃   2                    ┃ #┃1┣━━━━━━━━━━━━━━━━━━━━━━━━┫ #┃ ┃   3                    ┃ #┗━┻━━━━━━━━━━━━━━━━━━━━━━━━┛ #「1」の部分の色 $tblbgcolor1_v = '#483D8B'; #「1」の部分の背景画像 $tblbgimg1_v = 'background="images/02.gif"'; #ログ見出しの背景色を指定 #「2」の部分の色 $tblbgcolor2_v = '#FFFFFF'; #ログ表示部分の背景色を指定 $tbltxcolor2_v = '#696969'; #ログ表示部分の文字色を指定 #「3」の部分の色 $tblbgcolor3_v = '#F0F8FF'; #ログ表示部分の背景色を指定 $tbltxcolor3_v = '#696969'; #ログ表示部分の文字色を指定 $linkbanner = 'yes'; #バナー表示でのリンクを可能とする(yes,no) $password = '9724'; #メンテナンス用パスワード $datamax = 500 ; #最大データ保存件数 $pagemax = 20 ; #1ページ内に表示する件数 $target = '_blank'; #リンク先を表示する際のTARGET指定 #※但し、「いきなりGO!」は常にtarget=_blankです。 $sougo_gif = 'images/sougo.gif'; #相互リンクの場合に使用する画像を指定。 $method = 'POST'; #METHODの指定(POST又はGET) #掲示板荒らし対策。メッセージ最大文字数を指定。特に設定しない場合は、''として下さい。 $maxword = '1000' ; #リンクバナーを固定幅で表示したい場合、以下を設定して下さい。 #どんな幅でもオッケーの場合、以下の$banner_wと$banner_hは #$banner_w = '';と$banner_h = '';としてね。 $banner_w = '' ; #バナーの横幅(Pixel) $banner_h = '' ; #バナーの縦幅(Pixel) #■■■<--- ↓2000.1.22(Ver0.74)からの追加機能 $word_next = 'NEXT!'; #次画面スクロールする場合のボタンに表示する文字 $word_back = 'BACK!'; #前画面スクロールする場合のボタンに表示する文字 #■■■<--- ↑2000.1.22(Ver0.74)からの追加機能 #投稿時のパスワードをcrypt関数を使用する(暗号化) #crypt関数が利用出来ない場合もありますので、投稿時にエラーになる場合は、「0:使用しない」にして下さいね。 $ango = 1 ; #0:使用しない 1:使用する (推奨:1:使用する) #■■■<--- ↓2001.3.4(Ver0.82)からの追加機能 $tsz = '400'; #詳細表示(通常時)ログ表示部のテーブル幅。%またはピクセル $tsz2 = '70%'; #簡易表示時のログ表示部のテーブル幅。%またはピクセル $centflg = 0 ; #バナー(またはタイトル)のテーブル内の表示位置は?(0:LEFT 1:CENTER 2:RIGHT) $areaflg = 1 ; #入力フォームに「area」は必要?(0:no 1:yes) $kanriflg = 1 ; #入力フォームに「master」は必要?(0:no 1:yes) $sougoflg = 1 ; #入力フォームに「相互リンク」は必要?(0:no 1:yes) $textflg = 2 ; #<<<メッセージ欄の形状。(1:1行テキスト 2:複数行テキスト) $col = 50 ; #<<<メッセージ欄の文字数 $row = 5 ; #<<<メッセージ欄の行数※1行テキストの場合は対象外 $hometarget = '_top'; #HOMEに戻る際のリンクTARGET指定 $bdcolor = "#CC6699"; #<<<ログ表示部のテーブル外枠罫線の色 $countflg = 1 ; #<<<HPの参照数をカウントする?(0:no 1:yes) $rankcnt = 100 ; #<<<ランキング何位まで表示しますか? #フォームCSS設定 ("EOM"〜EOMの間にメッセージを書いてください) #※使用しない場合は、$css_style = "";とし、そこから2行(先頭がEOMの行までを)を削除して下さい。 $css_style = <<"EOM"; STYLE=font-size:x-small;color:#483D8B;background-color:#FFFFFF;border-style:solid;border-color:#B0E0E6;border-width:1;font-family:"MS UI Gothic",Osaka; EOM #フォームCSS設定 ("EOM"〜EOMの間にメッセージを書いてください) ※画面上部のカテゴリー選択・検索部分のみに設定されます。 $css_style2 = <<"EOM"; STYLE=font-size:x-small;color:#483D8B;background-color:#F0F8FF;border-style:solid;border-color:#B0E0E6;border-width:1;font-family:"MS UI Gothic",Osaka; EOM $damedame = 0 ; #Locationヘッダが使えないサーバーは1。通常は0でいいはず。※トクトク、3nopage,WinNTサーバー等が1かな。 #============================================================================================================================================================================================= #タイトルの下にメッセージを表示出来ます。("EOM"の次の行〜EOMの前の行の間にメッセージを書いてください。タグ使ってオッケーです。) #※使用しない場合は、$head_comment = "";とし、その下の行から先頭がEOMの行迄を削除して下さい。 $head_comment = <<"EOM"; EOM #============================================================================================================================================================================================= #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Sendmailが使える方のみ以下の項目を設定して下さい。 # ※Sendmailとは? #   メールソフトを立ち上げないで、指定した相手にメールを送る事が出来る機能です。 #   自分のプロバイダーがSendmailに対応しているか、パスはどこ?等は、各自のプロバイダー #   のHPでご確認して下さいね。 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #投稿時に管理者にメール送信する場合、sendmailのパスを指定 $sendmail = ""; #メール送信先アドレス。(管理者のアドレス)…「@」の前には必ず「¥」を付けてね。 $smail_address = "xxxxxx\@xxx.xx.jp"; $hiho = 0 ; #プロバイダーが「hi-ho」の人のみ「1」にして下さい。 ※Sendmail使う場合 $osusumesw = 1 ; #オススメチェックを行いますか?(0:no 1:yes)(ログ表示時に「オススメ」と文字を表示したり画像を表示したり出来ます $iconsw = 1 ; #オススメアイコンパターン(0:文字で「オススメ」 1:オススメ画像を1個だけ使用 2:オススメ画像を複数使う) $osusumettl = '管理人オススメ!'; #$iconsw=0の場合のオススメ文章を書いてね。タグ使っても良いっす。 #オススメアイコンとアイコンの名前の指定。追加する場合は$icon_gif[10]...[20]のように適当に増やして下さいね。 #オススメ画像を1個だけ使う($iconsw=1の場合)は、$icon_gif[0]の設定のみ行って下さい。その他は修正不要です。 #その下は、画像サイズ。_wは幅。_hは高さです。わからない場合は_wの方だけ0にしておいてね。 $icon_gif[0] = 'images/osusume.gif' ; $iconnm[0] = '' ; $icon_gif_w[0] = 47 ; $icon_gif_h[0] = 14 ; ###utime time(), time(), __FILE__; #トクトクの人は行頭の###をとってね。 #<<<============= ↓ここから下はいじらない方がいいよ♪ ================ #<<<地域テーブル @areatbl = ('ひみつ','北海道','青 森','岩 手','秋 田','宮 城','山 形','福 島', '栃 木','群 馬','茨 城','埼 玉','東 京','千 葉','神奈川','山 梨','長 野', '新 潟','富 山','石 川','福 井','静 岡','愛 知','岐 阜','三 重','滋 賀', '京 都','大 阪','兵 庫','奈 良','和歌山','鳥 取','島 根','岡 山','広 島', '山 口','徳 島','香 川','愛 媛','高 知','福 岡','佐 賀','長 崎','熊 本', '大 分','宮 崎','鹿児島','沖 縄','海外','不明'); ###<--- システム日時・時刻取得 ------------------------------------ $ENV{'TZ'} = "JST-9"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year = sprintf("%02d",$year + 1900); $month= sprintf("%02d",$mon + 1); $mday = sprintf("%02d",$mday); $hour = sprintf("%02d",$hour); $min = sprintf("%02d",$min); $sec = sprintf("%02d",$sec); $week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') [$wday]; $today= "$year.$month.$mday($week) $hour:$min"; ($lasttime) = (stat($logfile))[9]; ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($lasttime); $year = sprintf("%02d",$year + 1900); $month = sprintf("%02d",$mon + 1); $day = sprintf("%02d",$day); $hour = sprintf("%02d",$hour); $min = sprintf("%02d",$min); $sec = sprintf("%02d",$sec); $LASTUP = "$year$month$day" ; if ($ENV{'HTTP_USER_AGENT'} !~ /MSIE/i || $acs == 1 ) { $css_style = "" ;$css_style2 = "" ; } #Netscape-CSS対応 &decode ; #デコード if ($FORM{'linkchoice'} < 1) { $FORM{'linkchoice'} = 0; } if ( $FORM{'action'} eq "maintenance" ) { &Maintenance; } #"処理"がメンテナンスの場合 if ( $FORM{'action'} eq "update" ) { &update; } #ログ更新処理 if ( $FORM{'action'} eq "regist" ) { ®ist; } #ログ書き込み処理 if ( $FORM{'action'} eq "link" ) { &link; } #カウント&URLリンク if ( $FORM{'action'} eq "rank" ) { &rank; } #ランキング表示 if ( $FORM{'action'} eq "input" ) { &formproc2; } #投稿フォーム表示 if ( $FORM{'action'} eq "repairup" ) { &repairup; } #バックアップ復旧作業 &header ; #htmlヘッダー &formproc ; #検索フォーム &view; #ログ表示 &footer; #htmlフッター &footer2; #htmlフッター ###<-------------------------------------------------------------- ###<--- デコード&変数代入 ###<-------------------------------------------------------------- sub decode{ if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # タグ禁止 $value =~ s/\/>/g; $value =~ s/\"/"/g; $value =~ s/\,/,/g; &jcode'convert(*value,'sjis'); $FORM{$name} = $value; } $FORM{'hpcomment'} =~ s/\r\n/
/g; $FORM{'hpcomment'} =~ s/\r|\n/
/g; $FORM{'hpaddress'} =~ s/^http\:\/\///; $FORM{'banner'} =~ s/^http\:\/\///; } ###<-------------------------------------------------------------- ###<--- ログファイル読み込み ###<-------------------------------------------------------------- sub dataread { if ( !(open(IN,"$logfile"))) { &error("ログファイルのオープンに失敗しました"); } @data = ; close(IN); $word = $FORM{'word'}; $word =~ tr/[a-z]/[A-Z]/; @FINDTBL = split(/ /,$word); #検索文字列 foreach ( @data ) { ($dt,$ctgr,$hpttl,$hpadr,$hpcom,$area,$banner,$pass,$kanri,$no,$sougo,$look,$osusume) = split(/,/,$_); if ( $FORM{'linkchoice'} == $ctgr || $FORM{'linkchoice'} == 0 || $FORM{'word'} ) { $hpttl2 = $hpttl; $hpcom2 = $hpcom ; $kanri2 = $kanri ; $hpttl2 =~ tr/[a-z]/[A-Z]/; $hpcom2 =~ tr/[a-z]/[A-Z]/; $kanri2 =~ tr/[a-z]/[A-Z]/; if ( $FORM{'word'} || $FORM{'area'} ne '' ) { #u010425 $found = 0 ; if ( $FORM{'word'} ) { #u010425 foreach $buf ( @FINDTBL ) { if ( ((index($hpttl2,$buf) >= 0 || index($hpcom2,$buf) >= 0 || index($kanri2,$buf) >= 0) || ( $areaflg == 1 && $FORM{'area'} != 99 && $FORM{'area'} == $area)) && ($FORM{'linkchoice'} == $ctgr || ($FORM{'linkchoice'} == 0)) ) { #u010403 $found = 1 ; last ; } } } else { if ( ($areaflg == 1 && $FORM{'area'} != 99 && $FORM{'area'} == $area) && ($FORM{'linkchoice'} == $ctgr || ($FORM{'linkchoice'} == 0)) ) { $found = 1 ; } } if ( $found == 1 ) { push(@CATEGORYLOG,$_); $ctgycnt++; } } else { $ctgrcnt++; if ( ($FORM{'linkchoice'} == 0 && $ctgrcnt <= $sinchaku) || ($FORM{'linkchoice'} != 0) ) { push(@CATEGORYLOG,$_); } } } if ( $FORM{'action'} eq 'rank' ) { push(@CATEGORYLOG,$_); } $CCNT{$ctgr}++ ; #カテゴリー毎の登録件数を集計 if ( $dt ge $updt[$ctgr] ) { $updt[$ctgr] = $dt ; } $GOKEI++ ; } @CATEGORYLOG = sort @CATEGORYLOG ; @CATEGORYLOG = reverse @CATEGORYLOG ; if ( $backfile && $FORM{'action'} eq '' ) { $OLDDATE = 99999999; $BACKFLG = 0 ; foreach ( 1..$backcnt ) { $wk = $backfile . sprintf("%02d",$_) . ".txt" ; (@STATTBL) = stat($wk); ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($STATTBL[9]); $year = sprintf("%02d",$year + 1900); $month = sprintf("%02d",$mon + 1); $day = sprintf("%02d",$day); $LASTUP2 = "$year$month$day" ; #▼初めてバックアップする時は1個目のバックアップファイルに保存 if ( $_ == 1 && $STATTBL[7] == 0 ) { $BAKFILE = sprintf("%02d",$_) ; last ; } #▼既に当日分バックアップ済 if ( $LASTUP eq $LASTUP2 ) { $BACKFLG = 1 ; } else { #▼一番古いバックアップファイルに対して現状ログファイルをバックアップ if ( $OLDDATE gt $LASTUP2 && $found != 2 ) { $OLDDATE = $LASTUP2 ; $BAKFILE = sprintf("%02d",$_) ; } if ( $STATTBL[7] == 0 && $found != 2 ) { $BAKFILE = sprintf("%02d",$_) ; $found = 2 ; } } } if ( $BACKFLG == 0 ) { &filelock ; $wk = $backfile . sprintf("%02d",$BAKFILE) . ".txt" ; if ( !(open(OUT,">$wk"))) { &fileunlock ; &error("バックアップファイル($wk)の書き込みに失敗しました"); } print OUT @data; close(OUT); &fileunlock ; #ファイルロック解除 } } } ###<-------------------------------------------------------------- ###<--- HTMLヘッダー書き出し ###<-------------------------------------------------------------- sub header { print "Content-type: text/html; charset=Shift_JIS\n\n"; print "\n\n"; print "\n"; print "$title\n"; &css ; print "\n"; print "\n"; print "\n"; } ###<-------------------------------------------------------------- ###<--- HTMLフッダー書き出し ###<-------------------------------------------------------------- sub footer { print "


\n"; if ( $FORM{'action'} ne 'maintenance' && $FORM{'action'} ne 'repair') { print "

\n"; print "1ページに $pagemax 件\表\示されます。
\n"; if ( $kanrisw eq 'yes' ) { print "は管理人が、\n"; print "は管理人以外が登録したサイトです。( は、特にオススメ!)
\n"; } print "No.\n"; print "pass.\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; } print "
\n"; } ###<-------------------------------------------------------------- ###<--- HTMLフッダー書き出し ###<-------------------------------------------------------------- sub footer2 { print "
pulinpulink Ver0.847 by Tacky\'s Room
\n"; print "Script Arranged by area8783
\n"; print "\n"; } ###<-------------------------------------------------------------- ###<--- フォーム処理 ###<-------------------------------------------------------------- sub formproc { &dataread ; #ログ読み込み print "
\n"; if ( $titlelogo ne '' ) { print "$titlelogo
\n"; } else { print "$title
\n"; } print "
\n"; print "\n"; print "\n"; print "\n"; if ( $kanrisw eq 'yes' ) { print "\n"; print "\n"; print "\n"; } print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; if ( $FORM{'kflg'} eq '' ) { print "\n"; print "\n"; } else { print "\n"; } print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "

\n"; print "\n"; print "
"; print "\n"; print "\n"; if ( $kanrisw ne 'yes' ) { $dmy = "colspan=2" ; } else { $dmy = "" ; } print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "
\n"; print "\n"; print "\n"; print "カテゴリー  
\n"; print "
\n"; print "\n"; print "\n"; print "文字検索"; if ( $areaflg == 1 ) { print " or \n"; &areaset(0) ; } print " -->
▲カテゴリー選択時はそのカテゴリー内での検索。
新着サイト選択時は全サイト検索 ※半角スペースで複数指定可
\n"; print "
\n"; print "
\n"; print "
$head_comment" if ( $head_comment ) ; } ###<-------------------------------------------------------------- ###<--- フォーム処理 ###<-------------------------------------------------------------- sub formproc2 { &header ; #htmlヘッダー print "[BACK]
\n"; print "
\n"; if ( $titlelogo ne '' ) { print "$titlelogo

\n"; } else { print "$title

\n"; } if ( $FORM{'action'} eq 'maintenance' && $FORM{'proc'} eq 'edit') { print "* * * * * 修正フォーム * * * * *
\n"; } else { print "* * * * * 登録フォーム * * * * *
\n"; } print "
\n"; if ( $FORM{'action'} eq 'maintenance' && $FORM{'proc'} eq 'edit') { print "\n"; print "\n"; print "\n"; } else { print "\n"; } print "\n"; print "\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; if ( $kanriflg == 1 ) { print "\n"; print "\n"; } print "\n"; print "\n"; if ( $areaflg == 1 ) { print "\n"; print "\n"; } if ( $sougoflg == 1 ) { print "\n"; if ( $c_sougo ) { $dmy = "checked" ; } else { $dmy = "" ; } print "\n"; } if ( $linkbanner eq 'yes' ) { print "\n"; print "\n"; } print "\n"; print "\n"; if ( $osusumesw == 1 ) { print "\n"; print "\n"; } print "
■カテゴリー\n"; print "
■タイトル
■アドレス
■master
■コメント\n"; if ( $textflg != 1 ) { print ""; } else { print "\n"; } print "
■area\n"; &areaset(1) if ( $areaflg == 1 ) ; print "
■相互リンク 相互リンクしている場合にチェック
■バナーアドレス
■パスワード(修正・削除に使用)
■オススメ"; if ( $iconsw == 2 ) { print "\n"; } else { if ( $c_osusume == 1 ) { $dmy = "value=1 checked"; } else { $dmy = ""; } print "※管理人以外はチェック出来ません。"; } print "
\n"; print "   \n"; print "
\n"; print "
\n"; if ( $FORM{'action'} eq 'maintenance' ) { print "\n"; } &footer2; #htmlフッター exit; } ###<-------------------------------------------------------------- ###<--- データ表示 ###<-------------------------------------------------------------- sub view { #表示対象ページの先頭データ件数を算出 $total = @CATEGORYLOG; if ( $total % $pagemax == 0) { $p = $total / $pagemax ; } else { $p = $total / $pagemax + 1; } $p = sprintf("%3d",$p); if ( $FORM{'disppage'} ) { $d = $FORM{'disppage'} * $pagemax - $pagemax ; } else { $d = 0 ; $FORM{'disppage'} = 1 ; } print "

\n"; if ( $ikinarisw eq 'yes' ) { print "\n"; print "\n"; print "
\n"; $c = $#CATEGORYLOG ; if ( $c > 0 ) { print "\n"; } print "



\n"; } if ( $p == 0 ) { $p = 1; } if ( $FORM{'linkchoice'} == 0 && $FORM{'word'} eq '') { print "新着サイトを$sinchaku件\表\示しています
\n"; } if ( $FORM{'word'} ) { if ( $#CATEGORYLOG + 1 <= 0 ) { print "


指定した文字列に該当する記事はありませんでした。


\n"; } else { print "
$total 件見つかりました
\n"; } } $z = 1 ; for ( $i = $d ; ( $z <= $pagemax ) && ( $i < $total ); $i++ ) { ($dt,$ctgr,$hpttl,$hpadr,$hpcom,$area,$banner,$pass,$kanri,$no,$sougo,$look,$osusume) = split(/,/,$CATEGORYLOG[$i]); $osusume =~ s/\n//g; &colorset ; #セル背景色の設定 print "
\n"; if ( $FORM{'linkchoice'} == 0 ) { print "$CATEGORY[$ctgr]
\n"; } if ( $areaflg == 1 && $kanri && $countflg == 1 ) { $dmy = "colspan=3"; } elsif ( ($areaflg == 1 && ($kanri || $countflg == 1 )) || ($areaflg == 0 && ($kanri && $countflg == 1 )) ) { $dmy = "colspan=2"; } else { $dmy = ""; } if ( $areaflg == 0 && !($kanri) && $countflg == 0 ) { $dmy4 = "rowspan=2"; } else { $dmy4 = "rowspan=3"; } if ( !($FORM{'kflg'}) ) { print "\n"; } else { print "
\n"; } print "
"; if ( !($FORM{'kflg'}) ) { print "\n"; print "\n"; if ( $centflg == 0 ) { $dmy5 = "align=left"; } elsif ( $centflg == 1 ) { $dmy5 = "align=center"; } else { $dmy5 = "align=right"; } print ""; if ( $areaflg == 1 || $kanri || $countflg == 1 ) { print ""; if ( $areaflg == 1 ) { print "\n"; } if ( $kanri ) { print "\n" if ( $kanri ) ; } if ( $countflg == 1 ) { print "\n"; } print "
\n"; print " \n"; if ( $banner eq '' ) { print ""; if ( $countflg == 0 ) { print ""; } else { print ""; } print "$hpttl\n"; } else { if ( $banner_w ) { $dmy1 = "width=$banner_w"; } else { $dmy1 = ""; } if ( $banner_h ) { $dmy2 = "height=$banner_h"; } else { $dmy2 = ""; } if ( $countflg == 0 ) { print ""; } else { print ""; } print "\"$hpttl\"\n"; } print "
"; print "area: $areatbl[$area]"; print "master: $kanri さん"; print "click: $look\n" ; } print "
"; if ( $osusumesw != 0 && $osusume ne '') { #u010405 if ( $iconsw == 0 ) { print "$osusumettl
\n"; } else { if ( $icon_gif_w[$osusume] != 0 ) { $dmy = "width=\"$icon_gif_w[$osusume]\" height=\"$icon_gif_h[$osusume]\"" ; } else { $dmy = "" ; } print "
\n" ; } } print "$hpcom
"; print "
"; print "$dt..No.[$no]\n"; if ( $sougo ) { print ""; } print "
\n"; } else { print "\n"; print "\n"; print "
\n"; print ""; if ( $countflg == 0 ) { print ""; } else { print ""; } print "$hpttl$hpcom"; print "
$dt..No.[$no]
\n"; } print "
\n"; $z++; } print "
\n"; &scrl ; } ###<-------------------------------------------------------------- ###<--- ログファイル出力 ###<-------------------------------------------------------------- sub regist { if ( $maxword ne '' && (length($FORM{'hpcomment'}) > $maxword)) { &error("メッセージは$maxword文字までしか登録出来ません。"); } if ($FORM{'hptitle'} eq '' ) { &error("ホームページのタイトルを書いて下さい"); } if ($FORM{'hpaddress'} eq '' ) { &error("ホームページのアドレスを書いて下さい"); } if ($FORM{'hpcomment'} eq '' ) { &error("ホームページの紹介文を書いて下さい"); } if ( $FORM{'osusume'} ne '' && $FORM{'pass'} ne $password ) { &error("管理者以外は、「管理者オススメ」の登録は出来ません。"); } &filelock ; #ファイルロック &dataread ; #ログ読み込み $cnt = @data ; foreach $buf ( @data ) { ($dt,$category,$hpttl,$hpadr,$hpcom,$area,$banner,$pass,$hpkanri,$no,$sougo,$look,$osusume) = split(/,/,$buf); if ( $FORM{'hpaddress'} eq $hpadr ) { &fileunlock ; &error("既に登録されています。"); } } if ($cnt >= $datamax) { &fileunlock ; &error("設定最大件数を超えた為、登録出来ません。"); } if ( $cnt > 0 ) { ($dmy,$dmy,$dmy,$dmy,$dmy,$dmy,$dmy,$dmy,$dmy,$no,$s,$look,$dmy) = split(/,/,$data[0]); $cnt = $no + 1 ; } else { $cnt = 1 ; } # パスワードの暗号化(crypt関数使用)) if ($FORM{'pass'} ne "") { &pass_enc($FORM{'pass'}); } else { $pass = '' ; } unshift(@data,"$today,$FORM{'category'},$FORM{'hptitle'},$FORM{'hpaddress'},$FORM{'hpcomment'},$FORM{'area'},$FORM{'banner'},$pass,$FORM{'hpkanri'},$cnt,$FORM{'sougo'},0,$FORM{'osusume'}\n"); if ( !(open(OUT,">$logfile"))) { &fileunlock ; &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @data; close(OUT); if ( $sendmail ) { &SMail ; } &fileunlock ; #ファイルロック解除 if ( $damedame == 0 ) { print "Location: $script?linkchoice=$FORM{'category'}?\n\n"; } else { print "Content-type: text/html\n\n"; print "\n\n"; } exit; } ###<-------------------------------------------------------------- ###<--- メンテナンスモード ###<-------------------------------------------------------------- sub Maintenance { if ( $FORM{'pass'} eq "") { &error("パスワードを入力して下さい。"); } if ( $FORM{'proc'} eq 'write' || $FORM{'proc'} eq 'repair' ) { if ( $FORM{'pass'} ne $password ) { &error("パスワードが違います。"); } if ( $FORM{'proc'} eq 'write' ) { &formproc2 ; } else { &header ; print "[BACK]\n"; print "

"; print "現在のバックアップファイルの状態\n"; print "

\n"; print ""; print "\n"; print "\n"; print "\n"; foreach ( 1..$backcnt ) { $wk = $backfile . sprintf("%02d",$_) . ".txt" ; (@STATTBL) = stat($wk); ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($STATTBL[9]); $year = sprintf("%02d",$year + 1900); $month = sprintf("%02d",$mon + 1); $day = sprintf("%02d",$day); $hour = sprintf("%02d",$hour); $min = sprintf("%02d",$min); print ""; if ( !($STATTBL[7]) ) { $STATTBL[7] = 0 ; $wk = " "; } else { $wk = "$year年$month月$day日($hour:$min)"; } print "\n"; print "\n"; print "\n"; print "\n"; } print "
バックアップファイル名ファイルサイズ最終更新日処理
" . sprintf("%02d",$_) . ".txt$STATTBL[7]byte$wk
"; $wk = sprintf("%02d",$_) ; print "\n"; print "\n"; print "
\n"; &footer ; } exit ; } $found = 0 ; &dataread ; #ログ読み込み foreach ( @data ) { ($dt,$c_category,$c_hpttl,$c_hpadr,$c_hpcom,$c_area,$c_banner,$pass,$c_hpkanri,$no,$c_sougo,$c_look,$c_osusume) = split(/,/,$_); if ( $FORM{'no'} eq $no ) { if ($FORM{'pass'} ne $password && (&pass_dec($pass))) { &error("パスワードが違います。"); } $found = 1 ; if ( $FORM{'proc'} eq "delete" ) { &update ; exit; } $c_hpcom =~ s/
/\n/g; $c_pass = $FORM{'pass'} ; &formproc2 ; } } if ( $found == 0 ) { &error("該当する記事Noのデータは存在していません。"); } exit; } ###<-------------------------------------------------------------- ###<--- ログファイル更新 ###<-------------------------------------------------------------- sub update { if ( $FORM{'proc'} eq 'edit' ) { #i010410 if ( $maxword ne '' && (length($FORM{'hpcomment'}) > $maxword)) { &error("メッセージは$maxword文字までしか登録出来ません。"); } if ($FORM{'hptitle'} eq '' ) { &error("ホームページのタイトルを書いて下さい"); } if ($FORM{'hpaddress'} eq '' ) { &error("ホームページのアドレスを書いて下さい"); } if ($FORM{'hpcomment'} eq '' ) { &error("ホームページの紹介文を書いて下さい"); } if ( $FORM{'osusume'} ne '' && $FORM{'pass'} ne $password ) { &error("管理者以外は、「管理者オススメ」の登録は出来ません。"); } } #i010410 &filelock ; #ファイルロック &dataread ; #ログ読み込み foreach (@data) { ($dt,$ctgr,$hpttl,$hpadr,$hpcom,$area,$banner,$pass,$kanri,$no,$sougo,$look,$osusume) = split(/,/,$_); if ( $FORM{'no'} eq $no) { #メンテ対象の場合 if ( $FORM{'proc'} eq "edit" ) { if ($FORM{'pass'} ne '' && $FORM{'pass'} ne $password ) { &pass_enc($FORM{'pass'}); } elsif ( $FORM{'pass'} eq '' ) { $pass = '' ; } #u010328 push(@new,"$dt,$FORM{'category'},$FORM{'hptitle'},$FORM{'hpaddress'},$FORM{'hpcomment'},$FORM{'area'},$FORM{'banner'},$pass,$FORM{'hpkanri'},$no,$FORM{'sougo'},$look,$FORM{'osusume'}\n"); } } else { push(@new,"$_"); #そのまま出力 } } if ( !(open(OUT,">$logfile"))) { &fileunlock ; &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @new; close(OUT); &fileunlock ; #ファイルロック解除 if ( $damedame == 0 ) { print "Location: $script?linkchoice=$FORM{'category'}\n\n"; } else { print "Content-type: text/html\n\n"; print "\n\n"; } exit ; } ###<-------------------------------------------------------------- ###<--- HP参照数のカウント&HPリンク ###<-------------------------------------------------------------- sub link { &filelock ; #ファイルロック &dataread ; #ログ読み込み foreach (@data) { ($dt,$ctgr,$hpttl,$hpadr,$hpcom,$area,$banner,$pass,$kanri,$no,$sougo,$look,$osusume) = split(/,/,$_); if ( $FORM{'no'} eq $no) { #メンテ対象の場合 $look++ ; $sv_hpadr = $hpadr ; push(@new,"$dt,$ctgr,$hpttl,$hpadr,$hpcom,$area,$banner,$pass,$kanri,$no,$sougo,$look,$osusume"); } else { push(@new,"$_"); #そのまま出力 } } if ( !(open(OUT,">$logfile"))) { &fileunlock ; &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @new; close(OUT); &fileunlock ; #ファイルロック解除 if ( $damedame == 0 ) { print "Location: http://$sv_hpadr\n\n"; #u010602 } else { print "Content-type: text/html\n\n"; print "\n\n"; } exit ; } ###<-------------------------------------------------------------- ###<--- ランキング表示 ###<-------------------------------------------------------------- sub rank { &header ; #htmlヘッダー &formproc ; #検索フォーム print "

\n"; foreach ( @CATEGORYLOG ) { ($dt,$ctgr,$hpttl,$hpadr,$hpcom,$area,$banner,$pass,$kanri,$no,$sougo,$look,$osusume) = split(/,/,$_); $TBL_no{$no} = $no ; $TBL_look{$no} = $look ; $TBL_ctgr{$no} = $ctgr ; $TBL_hpttl{$no} = $hpttl ; $TBL_hpadr{$no} = $hpadr ; $TBL_hpcom{$no} = $hpcom ; $TBL_banner{$no} = $banner ; } $i = 1 ; foreach ( sort { ( $TBL_look{$b} <=> $TBL_look{$a} ) || ( $a cmp $b ) } keys ( %TBL_look ) ) { if ( $i > $rankcnt ) { last ; } &colorset ; #セル背景色の設定 print "
\n"; if ( $FORM{'linkchoice'} == 0 ) { print "$CATEGORY[$TBL_ctgr{$_}]
\n"; } print "\n"; print "
"; print "\n"; print "\n"; if ( $centflg == 0 ) { $dmy5 = "align=left"; } elsif ( $centflg == 1 ) { $dmy5 = "align=center"; } else { $dmy5 = "align=right"; } print ""; print "\n"; print "
$i\n"; if ( $TBL_banner{$_} eq '' ) { print ""; if ( $countflg == 0 ) { print ""; } else { print ""; #u010406 } print "$TBL_hpttl{$_}\n"; } else { if ( $banner_w ) { $dmy1 = "width=$banner_w"; } else { $dmy1 = ""; } if ( $banner_h ) { $dmy2 = "height=$banner_h"; } else { $dmy2 = ""; } if ( $countflg == 0 ) { print ""; } else { print ""; } print "\"$TBL_hpttl{$_}\"\n"; #u010406 } print "
"; print "click: $TBL_look{$_}\n" ; print "
$TBL_hpcom{$_}"; print "
\n"; print "
\n"; $i++; } print "
\n"; &footer; #htmlフッター &footer2; #htmlフッター exit ; } ###<-------------------------------------------------------------- ###<--- 地域情報設定 ###<-------------------------------------------------------------- sub areaset { print " \n"; } ###<-------------------------------------------------------------- ###<--- ログ表示部のテーブルカラー設定 ###<-------------------------------------------------------------- sub colorset { # パスワードの暗号化(crypt関数使用)) if ( $ango == 1 ) { #i000613 $pass2 = crypt($password, $password); #i000613 } else { #i000613 $pass2 = $password; #i000613 } #i000613 if ( $pass ne $pass2 ) { $tblbgcolor1 = $tblbgcolor1_v; $tblbgimg1 = $tblbgimg1_v; $tblbgcolor2 = $tblbgcolor2_v; $tbltxcolor2 = $tbltxcolor2_v; $tblbgcolor3 = $tblbgcolor3_v; $tbltxcolor3 = $tbltxcolor3_v; } else { $tblbgcolor1 = $tblbgcolor1_k; $tblbgimg1 = $tblbgimg1_k; $tblbgcolor2 = $tblbgcolor2_k; $tbltxcolor2 = $tbltxcolor2_k; $tblbgcolor3 = $tblbgcolor3_k; $tbltxcolor3 = $tbltxcolor3_k; } } ###<-------------------------------------------------------------- ###<--- エラー処理 ###<-------------------------------------------------------------- sub error { &header ; print "[BACK]


\n"; print "$_[0]


"; &footer2; exit; } ###<-------------------------------------------------------------- ###<--- ファイルロック設定 ###<-------------------------------------------------------------- sub filelock { foreach (1 .. 5) { if (-e $lockfile) { sleep(1); } else { open(LOCK,">$lockfile"); close(LOCK); return; } } &error("只今他の方が書き込み中です。再度登録を行って下さい。"); } ###<-------------------------------------------------------------- ###<--- ファイルロック解除 ###<-------------------------------------------------------------- sub fileunlock { if (-e $lockfile) { unlink($lockfile); } } ###<------------------------------------------------------------- ###<--- パスワード暗号化 ###<-------------------------------------------------------------- sub pass_enc { if ( $ango == 1 ) { $pass = crypt($_[0], $_[0]); } else { $pass = $_[0]; } } ###<------------------------------------------------------------- ###<--- パスワードチェック ###<-------------------------------------------------------------- sub pass_dec { if ( $ango == 1 ) { if ($_[0] ne '' && ( crypt($FORM{'pass'}, $_[0]) eq $_[0]) ) { return 0 ; } } else { if ($FORM{'pass'} eq $_[0]) { return 0 ; } } return 1; } ###<-------------------------------------------------------------- ###<--- スクロール ###<-------------------------------------------------------------- sub scrl { $dm = @CATEGORYLOG; if ( $dm % $pagemax == 0) { $p = $dm / $pagemax ;} else { $p = $dm / $pagemax + 1;} $p = sprintf("%3d",$p); if ( $p > 1 ) { print "
\n"; if ( $FORM{'disppage'} + 1 <= $p && $FORM{'disppage'} != 1 ) { $dmy = "colspan=2"; } else { $dmy = ""; } print ""; if ( $FORM{'disppage'} != 0 && $FORM{'disppage'} !=1) { print "\n"; print "\n"; } if ( $FORM{'disppage'} + 1 <= $p ) { print "\n"; print "\n"; } print "
\n"; for ( $i = 1 ; $i <= $p ; $i++ ) { if ( (!($FORM{'disppage'}) && $i != 1 ) || ( $FORM{'disppage'} && ( $i ne $FORM{'disppage'}) ) ) { print "$i\n"; } else { print "$i\n"; } if ( $i != $p ) { print " "; } } print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; $pag = $FORM{'disppage'} - 1 ; print "\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; $pag = $FORM{'disppage'} + 1 ; print "\n"; print "
\n"; } } ###<-------------------------------------------------------------- ###<--- バックアップファイル復旧作業 ###<-------------------------------------------------------------- sub repairup { &filelock ; #ファイルロック $wk = $backfile . $FORM{'logno'} . ".txt" ; if ( !(open(IN,"$wk"))) { &fileunlock ; &error("ログファイル($wk)のオープンに失敗しました"); } foreach ( ) { push(@new,$_) ; } close(IN); if ( !(open(OUT,">$logfile"))) { &fileunlock ; &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @new; close(OUT); &fileunlock ; #ファイルロック解除 &header ; print "





\n"; print "ログファイルの復旧が正常終了しました。\n"; print "


[BACK]\n"; exit; } ###<-------------------------------------------------------------- ###<--- SendMail ###<-------------------------------------------------------------- sub SMail { $ttl = $title; if ( $hiho == 1 ) { &jcode'convert(*ttl,'euc'); open(MAIL,"| $sendmail -s \"$ttl\" -f $smail_address $smail_address ") || &error("Sendmail Error!!"); } else { open(MAIL,"| $sendmail -t") || &error("Sendmail Error!!"); $mailbuf = "To: $smail_address\n"; $mailbuf .= "From: $smail_address\n"; #u010328 $mailbuf .= "Subject: $ttl\n"; $mailbuf .= "MIME-Version: 1.0\n"; $mailbuf .= "Content-type: text/plain; charset=ISO-2022-JP\n"; $mailbuf .= "Content-type: text/plain\n"; $mailbuf .= "\n\n"; } $mailbuf .= "============================================================\n"; $mailbuf .= "『$title』に投稿がありました\n"; $mailbuf .= "============================================================\n\n"; $mailbuf .= "投稿日時:$today\n\n"; $mailbuf .= "▼カテゴリー\n"; $mailbuf .= "$CATEGORY[$FORM{'category'}]\n\n"; $mailbuf .= "▼HPアドレス\n"; $mailbuf .= "http://$FORM{'hpaddress'}\n\n"; $mailbuf .= "▼HPタイトル\n"; $mailbuf .= "$FORM{'hptitle'}\n\n"; if ( $kanriflg == 1 ) { $mailbuf .= "▼area\n"; $mailbuf .= "$areatbl[$FORM{'area'}]\n\n"; } if ( $FORM{'banner'} ) { $mailbuf .= "▼バナーアドレス\n"; $mailbuf .= "http://$FORM{'banner'}\n\n"; } if ( $areaflg == 1 ) { $mailbuf .= "▼master\n"; $mailbuf .= "$FORM{'hpkanri'}\n\n"; } if ( $FORM{'sougo'} ) { $mailbuf .= "▼相互リンクをしています\n\n"; } $mailbuf .= "▼パスワード\n"; $mailbuf .= "$FORM{'pass'}\n\n"; $mailbuf .= "▼HPコメント\n"; $mailbuf .= "$FORM{'hpcomment'}\n\n"; $mailbuf .= "============================================================\n"; #漢字コードJIS変換&改行コードLF変換。 $mailbuf =~ s/\r\n/\n/g; $mailbuf =~ s/\r/\n/g; $mailbuf =~ s/
/\n/g; &jcode'convert(*mailbuf,'jis'); print MAIL $mailbuf ; close(MAIL); }