#!/usr/local/bin/perl # ↑あなたが加入しているプロバイダの「perl」言語が使用できる # パスを指定します。一般的に「#!/usr/local/bin/perl」で大丈夫 require "./conf.cgi"; #============================================================================== # BannerEx Version 98.3 #============================================================================== #日本語コード変換モジュール require './jcode.pl'; require './ex_jump.cgi'; require './ex_random.cgi'; require './ex_main.cgi'; $script = 'search.cgi'; #======================================================================================= # 初期設定が必要なのはここまでです。 #======================================================================================= $reload = "http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}"; @ITEM = ( '\'99 Winter','\'99 Summer','\'98 Winter','\'98 Summer', '\'97 Winter','\'97 Summer','\'96 Winter','\'96 Summer', '\'95 Winter','\'95 Summer','\'94 Winter','\'94 Summer', '増刊号','\'94 より以前','−その他−', ); $agent = $ENV{'HTTP_USER_AGENT'}; $textwidth = 60; if ($agent =~ /MSIE\ 3/i) { $textwidth = $textwidth * 1.5; } if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $QUERY_DATA, $ENV{'CONTENT_LENGTH'}); } else { $QUERY_DATA = $ENV{'QUERY_STRING'}; } @PAIRS = split(/&/,$QUERY_DATA); foreach $pair (@PAIRS) { ($dummy, $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/\n//g; $value =~ s/\,/,/g; &jcode'convert(*value,'sjis'); $QUERY{$dummy} = $value; } &data_read; if ($QUERY{'genre'} eq '指定しない') { $QUERY{'genre'} = ''; } if ($QUERY{'HP'} =~ /^http\:\/\/(.*)/i) { $QUERY{'HP'} = $1; } #押されたボタンや、呼び出しに対しての分岐 if ($QUERY{'action'} eq 'preview') { &preview; } elsif ($QUERY{'action'} eq 'regist') { ®ist; } elsif ($QUERY{'action'} eq 'insert') { &insert; } elsif ($QUERY{'action'} eq 'delete') { &delete; } elsif ($QUERY{'action'} eq 'jump') { &jump; } elsif ($QUERY{'action'} eq 'random') { &random; } $QUERY{'keyword'} =~ s/ //g; $QUERY{'keyword'} =~ s/ //g; if ($QUERY{'genre'} eq '' && $QUERY{'keyword'} eq '') { @MATCH = @DATA; } else { foreach $line (@DATA) { $match = 1; ($code,$access,$name,$item,$hpname,$HP,$memo) = split(/\,/,$line); if ($QUERY{'genre'} ne '') { if ($QUERY{'genre'} ne $item) { $match = 0; } } if ($match && $QUERY{'keyword'} ne '') { if (index($line,$QUERY{'keyword'}) < 0) { $match = 0; } } if ($match) { push(@MATCH,$line); } } } if (@MATCH < 1) { &error(bad_search); } if ($QUERY{'button'} eq 'ランキング') { foreach $line (@MATCH) { ($code,$access,$name,$item,$hpname,$HP,$memo) = split(/\,/,$line); $count = sprintf("%06d",$access); $line = "$count\,$line"; } @MATCH = sort(@MATCH); @MATCH = reverse(@MATCH); } &main; #======================================================================================= sub html_head { print "Content-type: text/html\n\n"; print "$title\n\n"; print "\n"; print "
\n"; print $header; print "
\n"; } #======================================================================================= sub search_table { print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "キーワード:\n"; print "\n"; print "
\n"; print "
\n"; print "
\n"; print "
"; print "■ この検索システムは、Terra氏のCGI「BannerEx」を改造して利用しております。
\n"; print <<_EOF; ■ 著者名では以下のように略称で\表\示しています。検索の際も略称で入力して下さい。
   □ ケンメリバクシンオー → バクシンオー
   □ 金の玉東インター店  → 金の玉
   □ シローイトチャンス  → イトチャンス _EOF print "

[X'press Square]トップページへ
Search Express
Arranged by Zunkel-Land.

\n"; print "
"; } #======================================================================================= sub date_change { @DATE = localtime($_[0]); $DATE[5] += 1900; $DATE[4]++; $wday = ('日','月','火','水','木','金','土') [$DATE[6]]; $_ = "$DATE[5]年$DATE[4]月$DATE[3]日($wday) $DATE[2]時$DATE[1]分"; } #======================================================================================= sub data_read { if (open(DB,"$datafile")) { @DATA = ; close(DB); } } #======================================================================================= sub data_save { $tmpfile = 'bannerex.tmp'; foreach (1 .. 10) { unless (-f $tmpfile) { $tmpflag = 1; last; } $tmpflag = 0; sleep(1); } if ($tmpflag == 1) { $tmp_dummy = "$$\.tmp"; if (!open(TMP,">$tmp_dummy")) { &error(bad_tmpfile); } close(TMP); chmod 0666,$tmp_dummy; if (!open(TMP,">$tmp_dummy")) { &error(bad_tmpfile); } print TMP @DATA; close(TMP); foreach (1 .. 10) { unless (-f $tmpfile) { if (!open(TMP,">$tmpfile")) { &error(bad_tmpfile); } close(TMP); rename($tmp_dummy,$datafile); unlink $tmpfile; $tmpflag = 1; last; } $tmpflag = 0; sleep(1); } } $tmpflag; } #======================================================================================= sub error { $error = $_[0]; if ($error eq 'bad_file') { $msg = 'ファイルのオープン、入出力に失敗しました。'; } elsif ($error eq 'bad_tmpfile') { $msg = 'テンポラリーファイルが作成できませんでした。
ディレクトリのパーミッションを確認して下さい。'; } elsif ($error eq 'bad_save') { $msg = '混雑していて送信に失敗しました。
時間をおいて再度送信して下さい。'; } elsif ($error eq 'bad_name') { $msg = 'ニックネーム又は本名が記入されていません。'; } elsif ($error eq 'bad_memo') { $msg = '何か自己紹介、ホームページのPRを記入して下さい。'; } elsif ($error eq 'bad_hpname') { $msg = 'ホームページのタイトルを記入して下さい。'; } elsif ($error eq 'bad_email') { $msg = 'メールアドレスが不正です。'; } elsif ($error eq 'bad_pass') { $msg = 'IDまたは、パスワードが一致しません。'; } elsif ($error eq 'not_pass') { $msg = 'パスワードが記入されていません。'; } elsif ($error eq 'bad_code') { $msg = '削除するコードが指定されていないか、見つかりません。'; } elsif ($error eq 'bad_data') { $msg = '最低限度必要なデータが記入されていません。'; } elsif ($error eq 'bad_gif') { $msg = '画像ファイルアドレスが不正です。'; } elsif ($error eq 'bad_noregist') { $msg = 'すでに登録されています。'; } elsif ($error eq 'bad_addr') { $msg = 'ホームページのアドレスが不正です。'; } elsif ($error eq 'bad_search') { $msg = ''; } elsif ($error eq 'send_mail') { $msg = 'メールが送信できませんでした。'; } else { $msg = '原因不明のエラーで処理を継続できません。'; } &html_head; print "
\n"; print "\n"; print ""; print ""; print "\n"; print "
Xpress_Square

検索結果

\n"; print "検索したキーワードでは該当記事がありません。
キーワードを変えて再度検索して下さい。
$msg
\n"; &search_table; print "
\n"; exit; }