#!/usr/bin/perl use Encode; use MIME::Base64; #Perl 5.8.5はUTF-8を使えるので、以下3ライブラリは使用しない #require 'cgi-lib.pl'; #require 'jcode.pl'; #require 'mimew.pl'; #Perl 5.8.5だから使えないみたいです。 5.8.6以降だったらね # use UTF-8 # encode('MIME-Header-ISO_2022_JP', ); ################################################################################ # sendmailのパス $SENDMAIL = "/usr/lib/sendmail"; # 問い合わせ選択肢 @qitems = ('お問い合わせ種別を選択してください', 'キャリア採用', 'パートナー募集', 'その他お問い合わせ', '商品説明依頼・見積依頼'); # ボタンテキスト Form CGI に送られる sendchk の Value @buttonvalues = ('内容確認', '送信', '修正'); # 丸星からmailフォームのユーザーへmail送信する際のfrom <>の文字列結合ができない何か方法あるんだろうけど[]を使う $MAILFROM = 'info@maruboshi.co.jp'; # 丸星がmailフォームから問合せを受け取る際のメールのsubject $SUBJECT = "お問い合わせ"; # mailフォームの名前で受け付ける最大文字数(byte数ではなく文字数) $MAX_NAME_LENGTH = 128; # mailフォームのフリガナで受け付ける最大文字数(byte数ではなく文字数) $MAX_KANA_NAME_LENGTH = 128; # mailフォームのメールアドレスで受け付ける最大文字数(byte数ではなく文字数) $MAX_MAILADDRESS_LENGTH = 254; # mailフォームのメールアドレスで受け付ける最大文字数(byte数ではなく文字数) $MAX_INQUIRY_LENGTH = 1000; #入力エラーフラグ初期化 $errorflg = "0"; $errorname1 = ""; $errorname2 = ""; $madderror = ""; $madderror2 = ""; $errorqkind = ""; $errorbikou = ""; $pagestatus = 0; #問い合わせ種別初期化 $kindnum = 0; $qname = ""; #送信されたデータを受け取る if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'}); } else { $alldata = $ENV{'QUERY_STRING'}; } #引数分解 foreach $data (split(/&/, $alldata)) { ($key, $value) = split(/=/, $data); $value =~ s/\+/ /g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; $value =~ s/\t//g; $input{"$key"} = $value; } # 各ページのボタンの表示名で動作が変わるので、修正時注意! if ($input{'sendchk'} ne "") { #"内容確認" if ($input{'sendchk'} eq $buttonvalues[0]){ $pagestatus = 1; # }elsif ($input{'sendchk'} eq "2"){ # $pagestatus = 2; #  入力チェックでページ推移 #"送信" }elsif ($input{'sendchk'} eq $buttonvalues[1]){ $pagestatus = 3; #"修正" }elsif ($input{'sendchk'} eq $buttonvalues[2]){ $pagestatus = 5; # errorflag 判定をスキップして入力画面に推移させる } } ################################################################################ # HTML 出力 # Expires: Thu, 01 Dec 1994 16:00:00 GMT ################################################################################ #ヘッダー書き出し print <= $MAX_NAME_LENGTH) { $errorname1 = "お名前で入力可能な文字数は" . $MAX_NAME_LENGTH . "文字までです。"; $errorflg = "1"; } #フリガナ(カタカナ) if (length($input{'inpname2'}) >= $MAX_KANA_NAME_LENGTH) { $errorname2 = "フリガナ(カタカナ)で入力可能な文字数は" . $MAX_KANA_NAME_LENGTH . "文字までです。"; $errorflg = "1"; } #メールアドレス if($input{'madd'} eq ""){ $madderror = "メールアドレスを入力してください"; $errorflg = "1"; } elsif (length($input{'madd'}) >= $MAX_MAILADDRESS_LENGTH) { $madderror = "メールアドレスで入力可能な文字数は" . $MAX_MAILADDRESS_LENGTH . "文字までです。"; $errorflg = "1"; } elsif(!isMailAddress($input{'madd'}) ) { $madderror = "メールアドレス入力に不足があります"; $errorflg = "1"; } #メールアドレス2 if ($input{'madd2'} eq ""){ $madderror2 = "メールアドレスを入力してください"; $errorflg = "1"; } elsif (length($input{'madd2'}) >= $MAX_MAILADDRESS_LENGTH) { $madderror2 = "メールアドレスで入力可能な文字数は" . $MAX_MAILADDRESS_LENGTH . "文字までです。"; $errorflg = "1"; } elsif (!isMailAddress($input{'madd2'})){ $madderror2 = "メールアドレス入力に不足があります"; $errorflg = "1"; } elsif ($input{'madd'} ne $input{'madd2'}) { $madderror2 = "メールアドレスとメールアドレス(確認用)の入力内容が一致しません"; $errorflg = "1"; } #問い合わせ種別チェック if (($input{'qkind'} eq "") or ($input{'qkind'} < 1) or ($input{'qkind'} > 4)) { $errorqkind = $qitems[0]; #"お問い合わせ種別を選択してください"; $errorflg = "1"; } else { $kindnum = $input{'qkind'}; #"キャリア採用", "パートナー募集", "その他お問い合わせ", "商品説明依頼・見積依頼"; $qname = $qitems[$kindnum]; ####################################### # DEBUG COMMENT # print '
'.$qname; } #問い合わせ詳細 if (($input{'bikou'} eq "") or (length($input{'bikou'}) < 1)) { $errorbikou = "お問い合わせ詳細を入力してください"; $errorflg = "1"; } elsif (length($input{'bikou'}) >= $MAX_INQUIRY_LENGTH) { $errorbikou = "文字数が" . $MAX_INQUIRY_LENGTH . "文字を超えています。
文字数を" . $MAX_INQUIRY_LENGTH . "文字以下に減らして再度送信をお願いします
"; $errorbikou .= length($input{'bikou'}) . "文字書かれています"; $errorflg = "1"; } if (($pagestatus == 1) and ($errorflg == "0")) { $pagestatus = 2; } else { #print '
pagestatus 5 -> 1
'; $pagestatus = 1; } } ################################################################################ # HTML ファイル本体出力 ################################################################################ # =================================================================== # 共通ヘッダ # ------------------------------------------------------------------- print < お問い合わせフォーム 2018-丸星株式会社

お問い合わせフォーム

    HTML00 # ------------------------------------------------------------------- # ページ推移ステータス ー 入力 ー # ------------------------------------------------------------------- if ($pagestatus < 2){ print '
  1. '; } elsif ($pagestatus == 2){ print '
  2. '; } else { #pagestatus == 3 print '
  3. '; } print <入力
  4. HTML00 # ------------------------------------------------------------------- # ページ推移ステータス ー 確認 ー # ------------------------------------------------------------------- if ($pagestatus < 2){ print '
  5. '; } elsif ($pagestatus == 2){ print '
  6. '; } else { #pagestatus == 3 print '
  7. '; } print <確認
  8. HTML00 # ------------------------------------------------------------------- # ページ推移ステータス ー 完了 ー # ------------------------------------------------------------------- if ($pagestatus < 2){ print '
  9. '; } elsif ($pagestatus == 2){ print '
  10. '; } else { #pagestatus == 3 print '
  11. '; } print <完了
HTML00 # =================================================================== # 内容 ー お問い合わせ種別 # ------------------------------------------------------------------- # ー 0 初回 ー ー 1 入力 ー ー 2 確認 ー # ------------------------------------------------------------------- if ($pagestatus < 3) { print <

内容


HTML00 } # ------------------------------------------------------------------- # ー 2 確認 ー # ------------------------------------------------------------------- elsif ($pagestatus eq 2) { print <  
HTML00 } # ------------------------------------------------------------------- # ー 0 初回 ー ー 1 入力 ー ー 2 確認 ー # ------------------------------------------------------------------- if ($pagestatus < 3) { print <
HTML00 } # ------------------------------------------------------------------- # ー 0 初回 ー ー 1 入力 ー (問い合わせの種別ドロップダウンリスト) # ------------------------------------------------------------------- if ($pagestatus < 2) { # お問い合わせの種別を選択してください print < HTML00 } if ($pagestatus < 3) { print <
HTML00 } # =================================================================== # 内容 ー お問い合わせ詳細 # ------------------------------------------------------------------- # ー 0 初回 ー ー 1 入力 ー ー 2 確認 ー # ------------------------------------------------------------------- if ($pagestatus < 3) { print <
HTML00 } if ($pagestatus < 2) { print < HTML00 } if (($pagestatus == 1) and ($errorflg == "1") and ($errorbikou ne "")) { print <
$errorbikou
HTML00 } if ($pagestatus == 2) { my $bikou = enter2Br($input{'bikou'}); print <

$bikou

HTML00 } if ($pagestatus < 3) { print <
HTML00 } # =================================================================== # 連絡先 ー お名前 # ------------------------------------------------------------------- # ー 0 初回 ー ー 1 入力 ー ー 2 確認 ー # ------------------------------------------------------------------- if ($pagestatus < 3) { print <連絡先
HTML00 } # ------------------------------------------------------------------- # ー 2 確認 ー # ------------------------------------------------------------------- elsif ($pagestatus eq 2) { print <   HTML00 } if ($pagestatus < 3) { print <
HTML00 } if ($pagestatus < 2) { print < HTML00 } if (($pagestatus == 1) and ($errorflg == "1") and ($errorname1 ne "")) { print <
$errorname1
HTML00 } if ($pagestatus == 2) { print <

$input{'inpname1'}

HTML00 } if ($pagestatus < 3) { print <
HTML00 } # =================================================================== # 連絡先 ー フリガナ(カタカナ) # ------------------------------------------------------------------- # ー 0 初回 ー ー 1 入力 ー ー 2 確認 ー # ------------------------------------------------------------------- if ($pagestatus < 3) { print <