#!/usr/bin/perl #    # perlのパスはあなたの環境にあわせて変更してください #---------------------------------------------------------------------------- # 簡易データベース v2.1 (SJIS) 検索用 # # by www.rescue.ne.jp # [History] # v2.0 13/NOV/1998 ページ機能他 # v2.1 17/DEC/1998 全角文字マッチの不具合の訂正 #---------------------------------------------------------------------------- # このスプリクトは上記スプリクトをアレンジしたものです # 改造は自由ですが、ネットサーフレスキュー[Web裏技]の利用規程に従ってください # 2000/7/11 NIKONIKO CGI http://www.niko2.com/cgi/ #---------------------------------------------------------------------------- #日本語コード処理ライブラリ require './jcode.pl'; #データベースファイル $file = "./data.csv"; #設定 $body = ''; #タイトル $title = '予約データ'; #1ページの表示数 $page = 5; #----------------------------------------------------------------------------------- #■入力 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } if ($buffer eq "") { &error('エラー','使い方が間違っています.'); } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/, $pair); $name2 = $name; $value2 = $value; $FORM2{$name} = $value; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'euc'); $value =~ s//>/g; $value =~ s/\n//g; $value =~ s/\r//g; $value =~ s/\t//g; $value =~ s/\,//g; #フォーム変数へ $FORM{$name} = $value; } #■検索処理 if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); } @BASE = ; close(IN); if ($FORM{'FF'} eq '') { $FF = 0; } else { $FF = $FORM{'FF'}; } $TO = $FF + $page - 1; if ($TO > $#BASE) { $TO = $#BASE; } $hit = 0; $next_num = ''; foreach $num ($FF .. $#BASE) { $data = $data2 = $BASE[$num]; &jcode'convert(*data,'euc'); ($d,$DATE,$NAME,$EMAIL,$ITME,$KOSU,$PAS) = split(/\,/,$data); #変更したところ ↑↑入力フォームに合わせ変更///////////// #変更したところここから////////////////////////////////// # メールアドレス(一致) if ($FORM{'EMAIL'} ne '') { if ($EMAIL eq $FORM{'EMAIL'}) { ; } else { next; } } # お名前(マッチ) if ($FORM{'NAME'} ne 'all') { if ($NAME =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$FORM{'NAME'}/i) { ; } else { next; } } # アイテム(マッチ) if ($FORM{'ITME'} ne 'all') { if ($ITME =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$FORM{'ITME'}/i) { ; } else { next; } } #変更したところここまで////////////////////////////////// # 検索終了処理 if ($hit == $page) { $next_num = $num; last; } else { push(@NEW,$data2); $hit++; } } #■検索結果 #変更したところ////////////////////////////////// #($d,$DATE,$NAME,$EMAIL,$ITME,$KOSU,$PAS)のデータ配列と表示項目を合わせる #$d,は無視して、登録日、お名前、Eメール、商品名、数量、パスワードの順番 print "Content-type: text/html\n\n"; print <<"EOF"; $title $body
\予\約データ検索結果(ショップ専用)

EOF if (!@NEW) { print "

ご指定の条件では見当たりませんでした

\n"; } else { print "
\n"; print "
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; foreach $data (@NEW) { ($d,$DATE,$NAME,$EMAIL,$ITME,$KOSU,$PAS) = split(/\,/,$data); print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print "
登録日お名前Eメール商品名数量パスワード
$DATE$NAME$EMAIL$ITME
$KOSU
$PAS
\n"; print "

\n"; print "

\n"; if ($next_num ne '') { while (($key,$val) = each %FORM2) { if ($key ne 'FF') { $buf = "$buf&$key=$val"; } } print "

次の$page件

\n"; } } print "
\n"; print "

ブラウザの戻る(リターン)で前の画面へ戻ってください

\n"; print "
\n\n"; exit; sub error { print "Content-type: text/html\n\n"; print "$title\n"; print "$body\n"; print "

$_[0]

\n"; print "

$_[1]

\n"; print "

ブラウザの戻る(リターン)で前の画面へ戻ってください

\n"; print "\n"; exit; }