#!/usr/local/bin/perl #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #+++  [ アン帳 Ver0.99 ] 2001.03.24 #+++ #+++ ・・・・・>>> All Created by Tacky #+++ #+++ ・・・・・>>> Copyright (c) 1999.6 Tacky's Room. All rights reserved.... #+++ #+++ Email >>> tacky2@ops.dti.ne.jp #+++ Homepage >>> http://tackysroom.com/ #+++ #+++ 設置方法構成(具体例) # #+++ public_html(ホームページディレクトリ) #+++ | #+++ |-- cgi-bin(任意のディレクトリ) #+++ | #+++ |-- jcode.pl (755)…(日本語ライブラリ) #+++ |-- annecho.cgi (755)…(スクリプト本体) #+++ |-- annecho.txt (666)…(ログファイル) #+++ |-- annecho.lock   …(ロックファイル)※スクリプト側で自動生成及び削除 #+++ #+++ ■( )内はパーミッッションの値です。 #+++ ■annecho.cgi:Perlのパス、その他の項目を修正、テキストモードでアップロード。 #+++ ■annecho.txt:空のファイルを作成し、テキストモードでアップロード。 #+++ ■annecho.lock:各自で用意する必要ありません。 #+++ #+++ ※管理人専用として使用する場合、以下のように同スクリプトをよびだして下さい。 #+++  http://www.〜/annecho.cgi?action=input&pass=設定したパスワード #+++ #+++ >>> Update-History... #+++ #+++ 2001.03.24(Ver0.98) >> Sendmail追加 #+++ 検索機能追加 #+++ 春分の日・秋分の日を自動算出するようにしました。 #+++ Locationが使えないサーバー対応 #+++ 2000.11.12(Ver0.97) >> ログのダウンロード機能を追加 #+++ 管理人専用とした場合でも「新規投稿」ボタンが表示されていました #+++ 2000.10.20(Ver0.96) >> 修正機能を追加。 #+++ 2000.07.12 >> ファイルロックが解除されない場合がある不具合修正 #+++ 2000.06.10 >> ロック処理見直し・Apache+Netscape文字化け対応・ログファイル保存形式変更(COMMENT欄の改行を
で保存するようにしました)・新規投稿のボタン位置を変更 #+++ 2000.06.17 >> hpリンクにバグ #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ require './jcode.pl'; #日本語コード変換 $url = "../info.html"; #<<<戻り先URL $script = "./g1.cgi"; #<<<このCGIの名前を指定 $logfile = './annecho.txt'; #<<<ログファイルの名前を指定 $lockfile = './annecho.lock'; #<<<ロックファイルの名前を指定 $method = 'POST'; #<<*; $tcolor = "#003300"; # 文字色 $linkcolor = "#006666"; # リンク色(未読リンク) $vlinkcolor = "#336633"; # リンク色(既読リンク) $alinkcolor = "#FFFF00"; # リンク色(押した時) $pt = '10pt'; #全体のフォントサイズ(pt指定以外何があるのか、僕知らない。(^^ゞ) $calsize = 60 ; #カレンダー「一日分」のセル幅(Pixel) $back_gif = './b_102.gif'; #「1ヶ月戻る」用画像(使用しない場合は'') $next_gif = './b_103.gif'; #「1ヶ月進む」用画像(使用しない場合は'') $write_gif = './b_110.gif'; #「Write」用画像(使用しない場合は'') $setyear_b = 1; #カレンダーを年月指定で移動する場合、「年」は過去何年まで表示します?(1の場合、前年まで表示) $setyear_a = 5; #カレンダーを年月指定で移動する場合、「年」は未来何年まで表示します?(5の場合、5年先まで表示) $msg_col = 64; #メッセージ欄の入力文字数 $msg_row = 5 ; #メッセージ欄の入力行数 $cal_bordercolor = '#ffcc00'; #カレンダー枠の色 $form_flg = 2 ; #入力フォームを別画面にする(0:しない 1:する 2:入力フォームをリンクせず、管理人専用として使用する) $tsz = '60%' ; #ログ表示部テーブルサイズ。pixel又は% #============================================================================================================================================================================================= #フォームCSS設定 ※使用しない場合は、$css_style = "";とし、そこから2行(先頭がEOMの行までを)を削除して下さい。 $css_style = <<"EOM"; STYLE=font-size:$pt;color:#000000;background-color:#ffffcc;border-style:solid;border-color:#000066;border-width:1; EOM #投稿時のパスワードをcrypt関数を使用する(暗号化) #crypt関数が利用出来ない場合もありますので、投稿時にエラーになる場合は、「0:使用しない」にして下さいね。 $ango = 1 ; #0:使用しない 1:使用する (推奨:1:使用する) #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Sendmailが使える方のみ以下の項目を設定して下さい。(Ver0.85からの機能) # ※Sendmailとは? #   メールソフトを立ち上げないで、指定した相手にメールを送る事が出来る機能です。 #   自分のプロバイダーがSendmailに対応しているか、パスはどこ?等は、各自のプロバイダー #   のHPでご確認して下さいね。 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #投稿時に管理者にメール送信する場合、sendmailのパスを指定 $sendmail = ""; #メール送信先アドレス。(管理者のアドレス)…「@」の前には必ず「¥」を付けてね。 $smail_address = "xxxxx\@xxx.ne.jp"; $hiho = 0 ; #プロバイダーが「hi-ho」の人のみ「1」にして下さい。 ※Sendmail使う場合 $damedame = 0 ; #Locationヘッダが使えないサーバーは1。通常は0でいいはず。※トクトク、3nopage,WinNTサーバー等が1かな。 #<<< ここから下はいじらない方がいいですよ♪ ############################################################################### #### Main Process START ##################################################### ############################################################################### #<<<システム日時・時刻取得 @cdays = (0,31,28,31,30,31,30,31,31,30,31,30,31); @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') ; $ENV{'TZ'} = "JST-9"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $syear = sprintf("%02d",$year + 1900); $smonth = sprintf("%2d",$mon + 1); $sday = sprintf("%2d",$mday); $smonth2 = sprintf("%2d",$mon + 1); $sday2 = sprintf("%2d",$mday); $hour = sprintf("%2d",$hour); $min = sprintf("%2d",$min); $today = "$smonth2月$sday2日($week[$wday]) $hour時$min分"; if ($ENV{'HTTP_USER_AGENT'} !~ /MSIE/i) { $css_style = "" ; } &cookieget; #<<\n\n"; } exit; } &header ; #<</g; $FORM{'comment'} =~ s/\r|\n/
/g; $FORM{'hp'} =~ s/^http\:\/\///; } ###<-------------------------------------------------------------- ###<--- 入力フォーム ###<-------------------------------------------------------------- sub forminput { print "
\n"; print "\n"; print "
\n"; print "
\n"; print "\n"; print "
\n"; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print "\n"; print "
Name:Email:
Date:\n"; print "\n"; print "HP:
"; print "
Password:  (修正・削除に使用)\n"; print "            
\n"; print "
\n"; print "
\n"; print "
\n"; print "

\n"; } ###<-------------------------------------------------------------- ###<--- HTMLヘッダー書き出し ###<-------------------------------------------------------------- sub header { print "Content-type: text/html; charset=Shift_JIS\n\n"; print "\n\n"; print "\n"; print "\n"; print "\n"; print "$title\n"; $wk = "bgcolor=\"$bgcolor\""; $wk2 = "background=\"$backpicture\""; print "\n"; print "
[戻る]\n"; print "
\n"; if ( $titlelogo ne '' ) { print "
\n"; } else { print "$title\n"; } print "
\n"; } ###<-------------------------------------------------------------- ###<--- HTMLフッダー書き出し ###<-------------------------------------------------------------- sub footer { if ( $FORM{'action'} ne 'download' && $FORM{'action'} ne 'look') { print "
\n" ; print "\n"; print "\n"; } #<<< ↓消さないでネ♪ print "\n"; } ###<-------------------------------------------------------------- ###<--- ログファイル読み込み ###<-------------------------------------------------------------- sub dataread { #<<<ログ読み込み if ( !(open(IN,"$logfile"))) { &error("ログファイル($logfile)のオープンに失敗しました"); } @LOG = ; @LOG2 = @LOG ; @LOG2 = sort @LOG2 ; @SVLOG = (); @FINDTBL = split(/ /,$FORM{'word'}); #検索文字列 foreach $buf ( @LOG2 ) { ($targetdate,$regdate,$no,$name,$email,$hp,$comment,$hst,$ps) = split(/,/,$buf); $found = 0 ; if ( $FORM{'word'} ) { $cnt = @FINDTBL ; if ( $cnt > 0 ) { foreach $buf ( @FINDTBL ) { #検索文字列 if ( index($name,$buf) >= 0 ) { $found = 1 ; last ;} if ( index($email,$buf) >= 0 ) { $found = 1 ; last ;} if ( index($hp,$buf) >= 0 ) { $found = 1 ; last ;} if ( index($comment,$buf) >= 0 ) { $found = 1 ; last ;} } } } $yy = substr($targetdate,0,4); $mm = substr($targetdate,4,2); if ( ( ($FORM{'word'} eq '' && $yy == $year && $mm == $mon )) || $FORM{'all'} == 1 || $found == 1 || ( $FORM{'action'} eq 'look' ) ) { push(@SVLOG,$buf); } } close(IN); } ###<-------------------------------------------------------------- ###<--- ログ表示 ###<-------------------------------------------------------------- sub view { print "
\n"; print "$title
\n" if ( $FORM{'action'} eq 'download' ) ; print "

\n"; &dataread ; #<<<ログ読み込み if ( $FORM{'word'} ne '' ) { print "
\n"; print "
\n"; print "『$FORM{'word'}』は、" . @SVLOG . "件見つかりました\n"; print "
\n"; } foreach $buf ( @SVLOG ) { ($targetdate,$regdate,$no,$name,$email,$hp,$comment,$hst,$ps) = split(/,/,$buf); $yy = substr($targetdate,0,4); $mm = substr($targetdate,4,2); if ( substr($mm,0,1) == 0 ) { $mm =~ s/0/ /; } $dd = substr($targetdate,6,2); if ( substr($dd,0,1) == 0 ) { $dd =~ s/0/ /; } print "
\n"; print "\n"; print "\n"; print "
\n"; print "\n"; print "\n"; $comment =~ s/([^=^\"]|^)(http|ftp)([\w|\!\#\&\=\-\%\@\~\;\+\:\.\?\/]+)/$1こちら<\/a>/g; print "\n"; print "
\n"; if ( $FORM{'action'} eq 'look' || $FORM{'action'} eq 'download') { print "$yy年$mm月$dd日\n"; } else { print "$mm月$dd日\n"; } print " >> \n"; if ( $email ne '' ) { print "$name\n"; } else { print "$name"; } print "\n"; print "\n"; if ( $hp ne '' ) { print " URL\n"; } print "  "; print "$regdate No\($no)
\n"; print "
$comment
\n"; print "
\n"; } print "
\n"; } ###<-------------------------------------------------------------- ###<--- ログ出力 ###<-------------------------------------------------------------- sub regist { # ホスト名を取得 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq "$addr") { ($p1,$p2,$p3,$p4) = split(/\./,$addr); $temp = pack("C4",$p1,$p2,$p3,$p4); $host = gethostbyaddr("$temp", 2); if ($host eq "") { $host = $addr; } } #掲示板荒らし対策 foreach $buf(@DANGER_LIST){ if ( $buf ) { # パターンマッチを変換 $buf=~ s/\./\\./g; $buf=~ s/\?/\./g; $buf=~ s/\*/\.\*/g; if($host =~ /$buf/gi){ exit; } } } if ( $maxword ne '' && (length($FORM{'comment'}) > $maxword)) { &error("メッセージは$maxword文字までしか登録出来ません。"); } if ( $FORM{'name'} eq "") { &error("名前は省略出来ません。"); } if ( $FORM{'comment'} eq "") { &error("メッセージは省略出来ません。"); } &filelock ; #ファイルロック &dataread ; #<<<ログ読み込み $dcnt = @LOG; if ($dcnt >= $datamax) { pop(@LOG); } $imonth = sprintf("%02d",$FORM{'month'}); $iday = sprintf("%02d",$FORM{'day'}); if ( $dcnt < 1 ) { $no = 1; #1件目 } else { ($dummy,$dummy,$no,$dummy) = split(/,/,$LOG[0]); #最新記事No取得 $no++; } # パスワードの暗号化(crypt関数使用)) if ($FORM{'pass'} ne "") { &pass_enc($FORM{'pass'}); } else { $pass = '' ; } unshift(@LOG,"$FORM{'year'}$imonth$iday,$today,$no,$FORM{'name'},$FORM{'email'},$FORM{'hp'},$FORM{'comment'},$host,$pass\n"); if ( !(open(OUT,">$logfile"))) { &fileunlock ; &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @LOG; close(OUT); if ( $sendmail ) { &SMail ; } &fileunlock ; #ファイルロック解除 #COOKIE設定 &cookieset ; } ###<------------------------------------------------------------- ###<--- カレンダー表示部 ###<-------------------------------------------------------------- sub calender { #春分・秋分の日算出 local($haru,$aki); $haru = "03" . int(20.8431 + 0.242194 * ($year - 1980) - int(($year - 1980) / 4)); push(@holiday,$haru); $aki = "09" . int(23.248 + 0.242194 * ($year - 1980) - int(($year - 1980) / 4)); push(@holiday,$aki); &dataread ; #<<<ログ読み込み #現在年〜1989年の年差 $ydat = $year - $cyear; #上記の年差/4 $udat = $ydat /4; #365*年差+閏年の年回数=1989〜前年迄の日数が求まる $days = $cday * $ydat +$udat; $days2 = 0; if ($mon >= 2){ if (($year % 4) == 0){ if (($year %100) != 0){ $cdays[2] = 29; }elsif (($year % 400) == 0){ $cdays[2] = 29; } } } #1月〜対象月前月迄の日数を求める for ($i= 1; $i<$mon ;$i++){ $days2 += $cdays[$i]; } $days += $days2; #対象月1日の曜日が求まる $sday2 = $days % 7; #1日〜月末日までループ print "
\n"; if ( substr($mon,0,1) == 0 ) { $wmon = $mon ; $wmon =~ s/0/ /; } else { $wmon = $mon ; } print "
\n"; print "
\n"; print "$year年$wmon月\n"; print "
\n"; if ( $mon == 1 ) { $wmon1 = 12 ; $wyear1 = $year - 1 ; } else { $wmon1 = $mon - 1 ; $wyear1 = $year ; } print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; if ( $mon == 12 ) { $wmon2 = 1 ; $wyear2 = $year + 1 ; } else { $wmon2 = $mon + 1 ; $wyear2 = $year ; } print "\n"; print "\n"; print "\n"; print "\n"; if ( $form_flg != 2 ) { if ( $form_flg == 1 ) { print "\n"; print "\n"; } elsif ( $form_flg == 0 ) { print "\n"; } print "\n"; } else { print "\n"; } print "
\n"; if ( $back_gif ) { print "\n"; } else { print "\n"; } print "   
\n"; if ( $next_gif ) { print "\n"; } else { print "\n"; } print "   
\n"; if ( $write_gif ) { print "\n"; } else { print "\n"; } print "   
\n"; print "\n"; print "\n"; print "
\n"; print "\n"; print "  
半角スペースで複数指定可\n"; print "

\n"; if ( $FORM{'word'} ne '' ) { return; } print "
\n"; print "\n"; print "\n"; for ($j = 0 ; $j < 7 ; $j++ ) { print "\n"; } print "\n"; $editsw = 0 ; $cnt_monday = 0 ; #カレンダーを表示 $j = 0 ; #曜日=日曜日 $editsw = 0 ; $cnt_monday = 0 ; for ( $i = 1; $i <= $cdays[$mon] ;){ if ( $sday2 == 0 || $j == 0) { print "\n"; } if ( $j >= $sday2 || $editsw == 1) { #$sday2=対象月1日の曜日 $editsw = 1 ; $ii = sprintf("%02d",$i); $v = "$mon$ii"; $k = 0; $hol = 0 ; foreach ( @holiday ) { if ( $v == $holiday[$k] ) { if ( $year >= 2000 && ( $v == '0115' || $v == '1010' ) ) { } else { $hol = 1 ; } last ; } $k++; } #成人の日算出 if ( $year >= 2000 && $mon == 1 && $sday2 == 1 ) { #1月で「月曜日」の場合 $cnt_monday++ ; if ( $cnt_monday == 2 ) { $hol = 1 ; } } #体育の日算出 if ( $year >= 2000 && $mon == 10 && $sday2 == 1 ) { #1月で「月曜日」の場合 $cnt_monday++ ; if ( $cnt_monday == 2 ) { $hol = 1 ; } } print "\n"; $sday2++; if ( $sday2 == 7 || $i == $cdays[$mon]) { if ( $i == $cdays[$mon] ) { for ( ; $sday2 < 7 ; $sday2++ ) { print "\n"; } } print "\n"; $sday2 = 0 ; } $i++; $j=99; } else { print "\n"; $j++; } } print "
$week[$j]
"; if ( $hol == 1 || $sday2 == 0 || $svhol == 1) { print ""; } else { if ( $sday2 == 6 ) { print ""; } else { print ""; } } print "$i\n"; #祝日で日曜日の場合、翌日が振替祝日の為、退避 if ( $hol == 1 && $sday2 == 0 ) { $svhol = 1 ; } else { $svhol = 0 ; } #日記帳ログを検索 foreach $buf ( @SVLOG ) { ($targetdate,$regdate,$no,$name,$email,$hp,$comment,$hst,$dmy) = split(/,/,$buf); $dd = substr($targetdate,6,2); if ( $i == $dd ) { print "
◆$name" ; } } 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 "\n"; print "
\n"; } ###<-------------------------------------------------------------- ###<--- メンテナンスモード ###<-------------------------------------------------------------- sub Maintenance { if ( $FORM{'no'} eq "") { &error("メンテナンス対象の記事Noを指定して下さい。"); } if ( $FORM{'pass'} eq "") { &error("パスワードを入力して下さい。"); } $found = 0 ; &dataread ; #<<<ログ読み込み foreach $buf ( @LOG ) { ($targetdate,$regdate,$n,$name,$email,$hp,$comment,$hst,$ps) = split(/,/,$buf); if ( $FORM{'no'} eq $n ) { $ps =~ s/\n//; if ($FORM{'pass'} ne $password && (&pass_dec($ps))) { &error("パスワードが違います。"); } $found = 1 ; if ( $FORM{'proc'} eq "delete" ) { &update ; exit; } &header ; $comment =~ s/\/\n/g; print "
\n"; print "メンテナンス画面\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print ""; print "\n"; print ""; print "\n"; print "\n"; print ""; print "\n"; print "\n"; print "
Name:Email:
\n"; $mm = substr($targetdate,4,2); if ( substr($mm,0,1) == 0 ) { $mm =~ s/0/ /; } print "\n"; $dd = substr($targetdate,6,2); if ( substr($dd,0,1) == 0 ) { $dd =~ s/0/ /; } print "HP:
"; print "
Password:  (修正・削除に使用)\n"; print "            
\n"; print "
\n"; print "
\n"; print "
\n"; last; } } if ( $found == 0 ) { &header ; print "該当する記事Noのデータは存在していません。

\n"; print "
戻る\n"; &footer; exit; } print "

戻る

\n"; print "HOMEに戻る\n"; &footer ; exit; } ###<-------------------------------------------------------------- ###<--- ログファイル更新 ###<-------------------------------------------------------------- sub update { &filelock ; #ファイルロック &dataread ; #<<<ログ読み込み $imonth = sprintf("%02d",$FORM{'month'}); $iday = sprintf("%02d",$FORM{'day'}); @new = (); foreach ( @LOG ) { ($targetdate,$regdate,$n,$name,$email,$hp,$comment,$hst,$ps) = split(/,/,$_); if ( $FORM{'no'} eq $n) { #<<<メンテ対象者の場合 if ( $FORM{'proc'} eq "edit" ) { $ps =~ s/\n//; if ( $FORM{'pass'} ne $password ) { # パスワードの暗号化(crypt関数使用)) if ($FORM{'pass'} ne "") { &pass_enc($FORM{'pass'}); } else { $pass = '' ; } } else { $pass = $ps; } push(@new,"$FORM{'year'}$imonth$iday,$regdate,$n,$FORM{'name'},$FORM{'email'},$FORM{'hp'},$FORM{'comment'},$hst,$pass\n"); } } else { push(@new,"$_"); #<<<そのまま出力 } } if ( !(open(OUT,">$logfile"))) { &fileunlock ; &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @new; close(OUT); &fileunlock ; #ファイルロック解除 if ( $damedame == 0 ) { print "Location: $script?\n\n"; } else { print "Content-type: text/html\n\n"; print "\n\n"; } exit ; } ###<-------------------------------------------------------------- ###<--- エラー処理 ###<-------------------------------------------------------------- sub error { &header ; print "$_[0]"; &footer; exit; } ###<------------------------------------------------------------- ###<--- クッキー取得 ###<-------------------------------------------------------------- sub cookieget { $cookies = $ENV{'HTTP_COOKIE'}; @pairs = split(/;/,$cookies); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ s/ //g; $DUMMY{$name} = $value; } @pairs = split(/,/,$DUMMY{'annecho'}); foreach $pair (@pairs) { ($name, $value) = split(/\!/, $pair); $COOKIE{$name} = $value; } } ###<------------------------------------------------------------- ###<--- クッキー設定 ###<-------------------------------------------------------------- sub cookieset { ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg)=gmtime(time + 30*24*60*60); $yearg += 1900 ; if ($secg < 10) { $secg = "0$secg"; } if ($ming < 10) { $ming = "0$ming"; } if ($hourg < 10) { $hourg = "0$hourg"; } if ($mdayg < 10) { $mdayg = "0$mdayg"; } $mong = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mong]; $youbi = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wdayg]; $date_gmt = "$youbi, $mdayg\-$mong\-$yearg $hourg:$ming:$secg GMT"; $cook="nm\!$FORM{'name'}\,em\!$FORM{'email'}\,hp\!$FORM{'hp'}\,ps\!$FORM{'pass'}"; print "Set-Cookie: annecho=$cook; expires=$date_gmt\n"; } ###<-------------------------------------------------------------- ###<--- ファイルロック設定 ###<-------------------------------------------------------------- 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; } ###<------------------------------------------------------------- ###<--- ログダウンロードi001112 ###<-------------------------------------------------------------- sub download { print "Content-type: text/download\n\n"; print "$title"; $wk = "bgcolor=\"$bgcolor\""; print "\n"; &view ; print "


\n"; &footer ; exit; } ###<-------------------------------------------------------------- ###<--- SendMail ###<-------------------------------------------------------------- sub SMail { $mailbuf = ""; $cv_ttl = $title; if ( $hiho == 1 ) { &jcode'convert(*cv_ttl,'euc'); open(MAIL,"| $sendmail -s \"$cv_ttl\" -f $FORM{'email'} $smail_address ") || &error("Sendmail Error!!"); } else { &jcode'convert(*ttl,'jis'); open(MAIL,"| $sendmail -t") || &error("Sendmail Error!!"); $mailbuf = "To: $smail_address\n"; $mailbuf .= "From: $FORM{'email'}\n"; $mailbuf .= "Subject: $cv_ttl\n"; $mailbuf .= "Content-Transfer-Encoding: 7bit\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 .= "$FORM{'year'}年$imonth月$iday日\n\n"; $mailbuf .= "▼お名前\n"; $mailbuf .= "$FORM{'name'}\n\n"; $mailbuf .= "▼メールアドレス\n"; $mailbuf .= "$FORM{'email'}\n\n"; $mailbuf .= "▼HPアドレス\n"; if ( $FORM{'hp'} ne '' ) { $wk = "http://$FORM{'hp'}"; } else { $wk=""; } $mailbuf .= "$wk\n\n"; $mailbuf .= "▼パスワード\n"; $mailbuf .= "$FORM{'pass'}\n\n"; $mailbuf .= "▼コメント\n"; $mailbuf .= "$FORM{'comment'}\n\n"; $mailbuf .= "▼リモートホスト\n"; $mailbuf .= "$host\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); }