#!/usr/bin/perl #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #+++  [ 目指せ全国制覇!! Ver0.71 ] … 99.12.20 Update #+++ #+++ ・・・・・>>> All Created by Tacky #+++ #+++ ・・・・・>>> Copyright (c) 1999.6 Tacky's Room. All rights reserved.... #+++ #+++ Email >>> tacky2@ops.dti.ne.jp #+++ Homepage >>> http://www.eva.hi-ho.ne.jp/takeuchi/ #+++ #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ require 'jcode.pl'; #日本語コード変換 $url = "http://www.all-5.com/Baby-Gdetective/index.shtml"; #<<<戻り先URL $script = "./mezase.cgi"; #<<<このCGIの名前を指定 $method = 'POST'; #<</g; $value =~ s/\r|\n/\/g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; #タグ無効 $value =~ s//>/g; $value =~ s/\,/,/g; &jcode'convert(*value,'sjis'); $FORM{$name} = $value; } $page = $FORM{'page'}; #NEXT,BACKを保持 $disppage = $FORM{'disppage'}; #表示されているページ数 } ###<-------------------------------------------------------------- ###<--- 入力フォーム ###<-------------------------------------------------------------- sub forminput { &header ; print "HOME  \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"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; #アンケート部分の表示 if ( $ans ne '' ) { print "\n"; print "
Name\n"; print "性別\n"; print "\n"; print "
EmailAddress\n"; &areaset ; print "
\n"; print "\n"; print "
URL\n"; print "Password\n"; print "
\n"; print "$ans\n"; print "\n"; } else { print "\n"; } print "   \n"; print "
\n"; print "
\n"; print "
\n"; print "\n"; &areaset2 ; print ""; print "
\n"; print "
\n"; ###<-------------------------------------------------------------- ###<--- 地域情報設定 ###<-------------------------------------------------------------- sub areaset { print " \n"; } ###<-------------------------------------------------------------- ###<--- 地域情報設定2 ###<-------------------------------------------------------------- sub areaset2 { print " \n"; } ###<-------------------------------------------------------------- ###<--- 地域情報設定3 ###<-------------------------------------------------------------- sub areaset3 { print " \n"; } ###<-------------------------------------------------------------- ###<--- HTMLヘッダー書き出し ###<-------------------------------------------------------------- sub header { print "Content-type: text/html\n\n"; print "\n\n"; print "\n"; print "$title\n"; if ($backpicture) { $set = "background=\"$backpicture\""; } elsif ($bgcolor ) { $set = "bgcolor=\"$bgcolor\""; } print "\n"; } ###<-------------------------------------------------------------- ###<--- HTMLフッダー書き出し ###<-------------------------------------------------------------- sub footer { #<<< ↓消さないでネ♪ print "

mezase! Ver0.71 Created by Tacky

\n"; print "\n"; } ###<-------------------------------------------------------------- ###<--- ログファイル読み込み ###<-------------------------------------------------------------- sub dataread { if ( !(open(IN,"$logfile"))) { &error("ログファイル($logfile)のオープンに失敗しました"); } @LOG = ; close(IN); } ###<-------------------------------------------------------------- ###<--- ログ表示 ###<-------------------------------------------------------------- sub view { print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; if ( $ans ne '' ) { print "\n"; } print "\n"; print "\n"; if ($FORM{'action'} eq 'reference' && $FORM{'area2'} == 48) { @sortlog = sort @LOG; } else { @sortlog = @LOG; } @new = (); foreach $buf ( @sortlog ) { ($no,$address,$name,$email,$sex,$hp,$pillo,$dummy) = split(/,/,$buf); if ((($FORM{'action'} eq 'reference') && ($FORM{'area2'} == $address || $FORM{'area2'} == 48 || $FORM{'area2'} == 50 || $FORM{'area2'} == 49 && $pillo == 1)) || ($FORM{'action'} ne 'reference')) { push(@new,$buf); } } #表示対象ページの先頭データ件数を算出 $dm = @new; if ( $dm % $pagemax == 0) { $p = $dm / $pagemax ; } else { $p = $dm / $pagemax + 1; } $p = sprintf("%3d",$p); if ( $page eq "NEXT" ) { if ( $disppage == 0 ) { $disppage = 1 } ; $d = ($disppage + 1) * $pagemax - $pagemax ; $disppage = $disppage + 1 ; } elsif ( $page eq "BACK" ) { $d = ($disppage - 1) * $pagemax - $pagemax ; $disppage = $disppage - 1 ; } else { $d = 0 ; $disppage = 1 ; } $z = 1; for ( $i = $d ; ( $z <= $pagemax ) && ( $i < $dm ); $i++ ) { ($no,$address,$name,$email,$sex,$hp,$pillo,$comment,$regdate,$p) = split(/,/,@new[$i]); $comment =~ s/\r/
/g; if ( $bg eq $cellbgcolor1 ) { $bg = $cellbgcolor2; } else { $bg = $cellbgcolor1; } print "\n"; print "\n"; if ( $email ne '' ) { print "\n"; } else { print "\n"; } if ( $sex == 1 ) { print "\n"; if ( $hp ne '' ) { print "\n"; } else { print "\n"; } } elsif ( $sex == 2 ) { print "\n"; if ( $hp ne '' ) { print "\n"; } else { print "\n"; } } else { print "\n"; if ( $hp ne '' ) { print "\n"; } else { print "\n"; } } if ( $ans ne '' ) { if ( $pillo == 1 ) { print "\n"; } else { print "\n"; } } $comment =~ s/\r/
/g; if ( $comment ne '' ) { print "\n"; } else { print "\n"; } print "\n"; $z++; } print "
地域お名前性別HP$headansコメント登録日
$areatbl[$address]\n"; print "$name$name    $comment $regdate($no)

\n"; if ( $dm % $pagemax == 0) { $p = $dm / $pagemax ; } else { $p = $dm / $pagemax + 1; } $p = sprintf("%3d",$p); print "
\n"; print "\n"; print "\n"; if ( $disppage != 0 && $disppage !=1) { print "\n"; } if ( $disppage + 1 <= $p ) { print "\n"; } print "


\n"; print "
\n"; print "\n"; print "
\n"; print "No\n"; print "Pass\n"; print "\n"; print "\n"; print "\n"; print "
\n"; } } ###<-------------------------------------------------------------- ###<--- ログ出力 ###<-------------------------------------------------------------- sub regist { if ( $FORM{'name'} eq "") { &error("お名前を入力して下さい。") ; } $FORM{'comment'} =~ s/\n//g; $dcnt = @LOG; if ($dcnt >= $datamax) { pop(@LOG); } if ( $dcnt < 1 ) { $no = 1; #1件目 } else { ($no,$dummy) = split(/,/,$LOG[0]); #最新記事No取得 $no++; } unshift(@LOG,"$no,$FORM{'area'},$FORM{'name'},$FORM{'email'},$FORM{'sex'},$FORM{'hp'},$FORM{'ans'},$FORM{'comment'},$today,$FORM{'pass'}\n"); &filelock ; #ファイルロック if ( !(open(OUT,">$logfile"))) { &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @LOG; close(OUT); &fileunlock ; #ファイルロック解除 } ###<-------------------------------------------------------------- ###<--- メンテナンスモード ###<-------------------------------------------------------------- sub Maintenance { if ( $FORM{'no'} eq "") { &error("メンテナンスする記事b入力して下さい。") ; } if ( $FORM{'pass'} eq "") { &error("パスワードを入力して下さい") ; } $found = 0 ; foreach ( @LOG ) { chop $_; ($n,$address,$name,$email,$sex,$hp,$pillo,$comment,$regdate,$p) = split(/,/,$_); if ( $FORM{'no'} eq $n ) { $found = 1 ; if ( $FORM{'pass'} ne $p && $FORM{'pass'} ne $master_password) { &header ; print "パスワードが違います。

\n"; print "戻る\n"; &footer; exit; } if ( $FORM{'proc'} eq "delete" ) { &update ; exit; } &header ; 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"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; #アンケート部分の表示 if ( $ans ne '' ) { print "\n"; print "\n"; print "
Name$name性別\n"; print "\n"; print "
EmailAddress\n"; &areaset3 ; print "
\n"; print "\n"; print "
Homepage\n"; print "
\n"; if ( $pillo == 1 ) { print "\n"; } else { print "\n"; } print "$ans\n"; print "\n"; } else { print "\n"; } print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "
\n"; last; } } if ( $found == 0 ) { &header ; print "該当する記事bフデータは存在していません。

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

戻る

\n"; print "HOMEに戻る\n"; &footer ; exit; } ###<-------------------------------------------------------------- ###<--- ログファイル更新 ###<-------------------------------------------------------------- sub update { @new = (); foreach (@LOG) { chop $_; ($no,$dummy,$n,$dummy) = split(/,/,$_); if ( $FORM{'no'} eq $no) { #<<<メンテ対象者の場合 if ( $FORM{'proc'} eq "edit" ) { $FORM{'comment'} =~ s/\n//g; push(@new,"$no,$FORM{'area'},$FORM{'name'},$FORM{'email'},$FORM{'sex'},$FORM{'hp'},$FORM{'ans'},$FORM{'comment'},$today,$FORM{'pass'}\n"); } } else { push(@new,"$_\n"); #<<<そのまま出力 } } &filelock ; #ファイルロック if ( !(open(OUT,">$logfile"))) { &error("ログファイル($logfile)のオープンに失敗しました"); } print OUT @new; close(OUT); &fileunlock ; #ファイルロック解除 print "Location: $script?\n\n"; #メインCGIに戻る } ###<-------------------------------------------------------------- ###<--- 全国制覇状況表示 ###<-------------------------------------------------------------- sub seiha { &header ; for ( @LOG ) { ($no,$address,$name,$email,$sex,$hp,$pillo,$comment,$regdate,$p) = split(/,/,$_); $seiha[$address] = 1 ; } print "

*--全国の人が訪問してくれますように--*\n"; print "

登録した内容が反映されていない場合は、ブラウザの「更新」ボタンを押して下さい\n"; print "

\n"; for ( $i = 0 ; $i <= 47 ; $i++ ) { print "\n"; if ( $seiha[$i] == 1 ) { print "\n"; } else { print "\n"; } print "\n"; } print "
$areatbl[$i]制覇!! 
\n"; &footer; exit; } ###<-------------------------------------------------------------- ###<--- エラー処理 ###<-------------------------------------------------------------- sub error { &header ; print "$_[0]\n"; &footer; exit; } ###<-------------------------------------------------------------- ###<--- ファイルロック設定 ###<-------------------------------------------------------------- sub filelock { $sw = 0; foreach (1 .. 5) { if (-e $lockfile) { sleep(1); } else { open(LOCK,">$lockfile"); close(LOCK); $sw = 1; return; } } &error("只今他の方が書き込み中です。ブラウザの「戻る」で戻って再度登録を行って下さい。"); } ###<-------------------------------------------------------------- ###<--- ファイルロック解除 ###<-------------------------------------------------------------- sub fileunlock { if (-e $lockfile) { unlink($lockfile); } }