#!/usr/bin/perl #    # perlのパスはあなたの環境にあわせて変更してください #---------------------------------------------------------------------------- # 簡易データベース v2.1 (SJIS) 検索用 # # by www.rescue.ne.jp # [History] # v2.0 13/NOV/1998 ページ機能他 # v2.1 17/DEC/1998 全角文字マッチの不具合の訂正 #---------------------------------------------------------------------------- # このスプリクトは上記スプリクトをアレンジしたものです # search.cgi を yoyaku.cgi に名前を変更しています。 # 改造は自由ですが、ネットサーフレスキュー[Web裏技]の利用規程に従ってください # 2000/7/11 NIKONIKO CGI http://www.niko2.com/cgi/ #---------------------------------------------------------------------------- #日本語コード処理ライブラリ require './jcode.pl'; #データベースファイル #必ずファイルの名前を変更してください。違うデレクトリにある場合は相対パスで../abc/data.csv $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 ($FORM{'EMAIL'} =~ /(.*)\@(.*)\.(.*)/) { ; } else { &error('入力エラーです','E-MAILアドレスを入力してください.'); } if ($FORM{'PAS'} eq '') { &error('入力エラーです','パスワードを入力してください.'); } $FORM{'PAS'} =~ s/ //g; $FORM{'PAS'} =~ s/ //g; $FORM{'EMAIL'} =~ s/ //g; $FORM{'EMAIL'} =~ s/ //g; #変更したところここまで////////////////////////////////// #■検索処理 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{'PAS'} ne '') { if ($PAS eq $FORM{'PAS'}) { ; } else { next; } } #変更したところここまで////////////////////////////////// # 検索終了処理 if ($hit == $page) { $next_num = $num; last; } else { push(@NEW,$data2); $hit++; } } #■検索結果 #変更したところ////////////////////////////////// #($d,$DATE,$NAME,$EMAIL,$ITME,$KOSU,$PAS)のデータ配列と表示項目を合わせる #$d,は無視して、登録日、お名前、Eメール、商品名、数量、パスワードの順番 #データの$PAS(パスワード)は表示の必要が無いので*****としてあります 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
*****
\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; }