質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1096閲覧

お問い合わせフォームの文字化け

unikani129

総合スコア3

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/02/09 04:30

HTMLで作成したお問い合わせフォームをcgiに渡すと
文字化けしたお問い合わせフォームページが返ってくる

HPのリニューアルに際して、
無料cgiライブラリを使ったお問い合わせフォームを作成しております。

初心者ですので前任者のコードのパスを書き換えただけですが上手に作動しません。
フォームチェック用のJavaScriptはHTMLに埋め込んでいます。

【送信前】
イメージ説明

【確認画面へボタン押下後】
イメージ説明

HTML

1<!DOCTYPE html> 2 3<html> 4 <head> 5 6 <meta charset="utf-8"> 7 <title>お問い合わせ</title> 8 <link rel="stylesheet" href="../base.css" type="text/css"> 9 10 <!--フォームチェック用JS--> 11 <script language="JavaScript"> 12<!-- 13 ////NINOオリジナルフォームチェック! 14 qNm = new Array(); 15 qJp = new Array(); 16 //Emailチェックするか? 17 EmailCheck=true; 18 //お電話番号lチェックするか? 19 PhoneCheck=true; 20 //必須項目設定 21 qNm[0] = 'name' ; 22 qJp[0] = 0; 23 ///////////////////// 24 function formCheck(){ 25 errFlag = 0; 26 messe = ''; 27 //足し算結果が2以上のものはエラーとみなす 28 for(m=0; m<qNm.length; m++){ 29 targetEle = document.myform.elements[qJp[m]].value; 30 if( targetEle == null || targetEle == ''){ 31 messe += '●'+qNm[m]+'を入力してください\n'; 32 errFlag = 1; 33 } 34 } 35 //メールチェック 36 if(EmailCheck == true){ 37 ml = /.+@.+\..+/; // チェック方式 38 mf = document.myform.elements['Email'].value; 39 if(mf){ 40 if(!mf.match(ml)) { 41 messe += '●E-mailが正しくありません\n'; 42 errFlag = 1; 43 } 44 }else{ 45 messe += '●E-mailを入力してください\n'; 46 errFlag = 1; 47 } 48 } 49 //お電話番号チェック 50 if(PhoneCheck == true){ 51 pf = document.myform.elements['tel'].value; 52 if(pf == null || pf == ''){ 53 messe += '●お電話番号を入力してください\n'; 54 errFlag = 1; 55 } 56 } 57 //エラーフラグがあれば、アラート表示 58 if(errFlag == 1){ 59 alert(messe); 60 return false; 61 } 62 } 63//--> 64</script> 65 </head> 66 67 <body> 68 <div class="content"> 69 <form id="entry" action="./form.cgi" method="POST" onSubmit="return formCheck();" name="myform"> 70 71 <dl> 72 <dt>お名前<span class="must">※</span></dt> 73 <dd><input type="text" name="name" id="name" required></dd> 74 75 <dt>企業名<span>&emsp;</span></dt> 76 <dd><input type="text" name="company" id="company"></dd> 77 78 <dt>お住まいの都道府県<span class="must">※</span></dt> 79 <dd><input type="text" name="adress" id="adress" required></dd> 80 81 <dt>メールアドレス<span class="must">※</span></dt> 82 <dd><input type="email" name="Email" id="Email" required></dd> 83 84 <dt>電話番号<span class="must">※</span></dt> 85 <dd><input type="tel" name="tel" id="tel" required></dd> 86 87 <dt>お問い合わせ内容<span class="must">※</span></dt> 88 <dd><textarea name="detail" id="detail" required></textarea></dd> 89 </dl> 90 91 <p id="submit_buttom_wrap"> 92 <input type="submit" id="submit_buttom" value="確認画面へ"> 93 </p> 94 </form> 95 </div> 96 </body> 97 98</html>

cgi

1#!/usr/bin/perl 2 3require './form/jcode.pl'; 4 5$tempFile = './contact.html'; 6 7#■□■□■□■□■□■□■□■□■□ 8$hensin = 1; 9$kakunin_Gamen = 1; 10@hisuu = (); 11$hisuu_Email = 0; 12$thispl = 'form.cgi'; 13$mailprog = '/usr/sbin/sendmail'; 14$mailaddress = '受信用アドレスを入力しています'; 15$subject = 'HPよりお問い合せがあります'; 16$mailhead = "以下の内容が送信されてきました。"; 17$Ssubject = 'お問い合せありがとうございます'; 18$Smailhead = 'お問い合せありがとうございます 19$Smailfoot = ' 20 21'; 22 23#■□■□■□■□■□■□■□■□ 24#◆◆◆◆フォーム内容を確認 25if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } 26else { $buffer = $ENV{'QUERY_STRING'}; } 27 28 foreach(@hisuu){#---------チェックボックス・ラジオボタンの必須項目チェック用 29 $hisuu_check{$_} =0; 30 } 31@ERROR = (); 32@pairs = split(/&/, $buffer); 33foreach $pair (@pairs) { 34 ($name, $value) = split(/=/, $pair); 35 36 $name =~ tr/+/ /; 37 $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 38 $value =~ tr/+/ /; 39 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 40 $value =~ s/<!--(.|\n)*-->//g; #-------------------SSIの禁止用 41 &jcode'convert(*name,'sjis'); 42 &jcode'convert(*value,'sjis'); 43 44 $FORM{$name} = $value; 45 46 if($value ne ''){ 47 push(@NAME,$name); 48 push(@VALUE,$value); 49 } 50 #必須項目の記入判断 51$hisuu_check{$name} =1;#---------チェックボックス・ラジオボタンの必須項目チェック用 52if(!$value){#---------チェックボックス・ラジオボタン”以外”の必須項目チェック用 53 if($name ne 'Email'){ 54 foreach(@hisuu){ 55 if( $_ eq $name){ push(@ERROR,$name); } 56 } 57 } 58} 59 60}#foreach 61 62 63#◆◆◆◆確認画面を表示するのかメール送るのかの判断 64if (!$FORM{'kakunin'}){ 65 if($hisuu_Email){ 66 if($FORM{Email}){ 67 if( $FORM{Email} =~ /[^\x21-\x7E]/ || $FORM{Email} =~ /[\(\)<>,;:\\"\[\]]/ || $FORM{Email} !~ /^[^@]+@[^@]+$/ ) { 68 push(@ERROR,'E-mailが正しくありません(全角文字・スペースが含まれていないかご確認ください)'); 69 } 70 }else{ 71 push(@ERROR,'E-mail'); 72 } 73 } 74 while (($name, $value) = each(%hisuu_check)) {#---------チェックボックス・ラジオボタンの必須項目チェック用 75 if(!$value){ push(@ERROR,$name); } 76 } 77 if(!@ERROR){ 78 if($kakunin_Gamen){ &kakuninGamen; } 79 else{ &okuru; } 80 }else{ &error; } 81 82}else{ 83 &okuru; 84} 85 86 87#◆◆◆◆確認画面を表示 88sub kakuninGamen{ 89 $write = '<table border="0" width="667" height="349" cellpadding="0" cellspacing="0" align="center" style="margin-top:0px; background:url(images/bg_tamago.jpg) right top no-repeat;"><tr><td valign="top">'; 90 $write .= '<table border="0" width="400" cellpadding="0" cellspacing="0"><tr><td>'; 91 $write .= "<form action=\"$thispl\" method=\"post\">"; 92 $write .= '<tr><td colspan="2" height="50" varign="middle">以下の内容をご確認の上、よろしければ<b>「送信する」</b>ボタンをクリックして下さい。</td></tr>'; 93 $write .= '<tr><td colspan="2"><hr noshade size="1" style="margin:3px 0 3px 0;"></td></tr>'; 94 95 $x = 0; 96 foreach (@NAME) { 97 if($VALUE[$x]){ 98 $write .= "<tr>\n"; 99 $write .= "<input type=\"hidden\" name=\"$NAME[$x]\" value=\"$VALUE[$x]\">\n"; 100 $VALUE[$x] =~ s/\n/<br>/g; 101 $write .= "<td width=\"10%\" nowrap>$NAME[$x]:</td>\n"; 102 $write .= "<td width=\"90%\">$VALUE[$x]</td>\n"; 103 $write .= "</tr>\n"; 104 $write .= '<td colspan="2"><hr noshade size="1" style="margin:3px 0 3px 0;"></td>'; 105 $write .= "</tr>\n"; 106 } 107 $x++; 108 } 109 $write .= ' 110 </table> 111 <br /> 112 <table border="0" cellpadding="0" cellspacing="0" width="667"><tr><td> 113 <input type="hidden" name="kakunin" value="on" > 114 <input type="submit" value="- 送信する -" class="inp"> <input type="button" name="back" onClick="history.back()" value="- 戻る -" class="inp"> 115 </td></tr></table> 116 </form> 117 </td></tr></table> 118 '; 119 120 &pageWrite; 121} 122 123#◆◆◆◆確認画面を表示 124sub pageWrite{ 125 print "Content-Type: text/html; charset=Shift_JIS\n"; 126 print "Content-Language: ja\n"; 127 print "Pragma: no-cache;\n\n"; 128 129 #テンプレート読んで書き出し 130 open(TEMP,"$tempFile"); 131 @temp = <TEMP>; 132 close(TEMP); 133 #配列をひとつの変数にまとめる 134 $tempFlag = 1; 135 foreach (@temp){ 136 if($_ =~ /<!--__systemCheck__-->/){ 137 if($tempFlag){ 138 $tempFlag = 0; 139 $tempMatome .= "<!--__write__-->\n"; 140 }else{ 141 $tempFlag = 1; 142 } 143 } 144 if($tempFlag){ 145 $tempMatome .= $_; 146 } 147 } 148 149 $tempMatome =~ s/<!--__write__-->/$write/g; 150 151 print $tempMatome; 152 exit(0); 153 154}#sub kakuninGamen 155 156 157#◆◆◆◆メールを送ってサンクスページを表示 → 終了 158sub okuru{ 159require "mimew.pl"; 160 161open(MAIL,"|$mailprog -t"); 162 $mail_head = ""; 163 $mail_head .= "Content-type: text/plain; charset=ISO-2022-JP\n"; 164 $mail_head .= "Content-Transfer-Encoding: 7bit\n"; 165 $mail_head .= "MIME-Version: 1.0\n"; 166 $mail_head .= "Return-Path: $FORM{'Email'}\n"; 167 $mail_head .= "From: $FORM{'Email'}\n"; 168 $mail_head .= "To: $mailaddress\n"; 169 if($bccaddress){ $mail_head .= "Bcc: $bccaddress\n"; } 170 $mail_head .= "Subject: $subject\n\n"; 171 $mail_head = &mimeencode($mail_head); 172 173 $mail_message .= "$date\n"; 174 $mail_message .= "$mailhead\n\n"; 175 $mail_message .= "□□□□□□□□□□□□□□□□□□□□\n\n"; 176 177 for($x = 0; $x < $#NAME; $x++) { 178 if ($NAME[$x] ne 'kakunin'){ 179 $mail_message .= "【 $NAME[$x] 】 "; 180 $mail_message .= "$VALUE[$x]\n\n"; 181 } 182 } 183 $mail_message .= "□□□□□□□□□□□□□□□□□□□□\n\n"; 184 $mail_message .= "ホスト名:$host\n"; 185 $mail_message .= "IPアドレス:$addr\n"; 186 $mail_message .= "ブラウザ:$ENV{'HTTP_USER_AGENT'}\n"; 187 &jcode'convert(*mail_message,'jis'); 188 189 print MAIL $mail_head; 190 print MAIL $mail_message; 191close (MAIL); 192 193 194#print "Location: $thanks\n\n"; 195if($hensin && $FORM{'Email'}){ &Hensin; } 196 197$write = '<table border="0" width="667" cellpadding="0" cellspacing="0" align="center" style="margin-top:0px; background:url(images/bg_tamago.jpg) right top no-repeat;"> 198<tr><td><br /><p style="height:250px;">お問い合せありがとうございます。</p></td></tr></table>'; 199&pageWrite; 200 201exit; 202 203} 204 205#◆◆◆◆エラーの表示 206sub error{ 207print "Content-Type: text/html; charset=Shift_JIS\n"; 208print "Content-Language: ja\n"; 209print "Pragma: no-cache;\n\n"; 210print <<EOF; 211<HTML> 212<HEAD> 213<TITLE>エラー</TITLE> 214<style type="text/css"> 215<!-- 216td{font-size:12px;} 217--> 218</style> 219</head> 220<body bgcolor="#ffffff" text="#000000"> 221<center> 222<br><br><br> 223<table border="0" cellpadding="1" cellspacing="0" bgcolor="#ff6600"><tr><td> 224<table border="0" cellpadding="10" cellspacing="0" bgcolor="#ffffee"> 225 <tr> 226 <td class="hutuu"><font color="#009900">■</font> 恐れ入りますが、以下の項目は必ずご記入ください <font color="#009900">■</font></td> 227 </tr> 228 <tr> 229 <td class="hutuu"><br> 230EOF 231 232$xx = 0; 233foreach $Error(@ERROR){ 234 print "<font color=\"#cc0000\">【 $Error 】 </font>"; 235 } 236 237if(!@ERROR){ 238 if($Mlhusei){ 239 print "<font color=\"#cc0000\">E-mailの記入が正しくありません</font>"; 240 } 241} 242 243print <<EOF; 244 <br><br></td> 245 </tr> 246 <tr> 247 <td class="hutuu">ブラウザの戻るボタンで前のページに戻り、再度ご記入ください。</td> 248 </tr> 249</table> 250</td></tr></table> 251</center> 252</body> 253</html> 254EOF 255 256exit(0); 257} 258

【やりたいこと】
・”確認画面へ”押下後、確認画面を表示して、メール送信

【試したこと】
・サーバー上の実行権限を既存のものと同じにした
・パスの確認

簡単なミスを見逃しているだけかもしれませんが、どなたかご教授ください。
どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2022/02/09 05:35

form.cgiファイルの文字コードはシフトJISですか?
m.ts10806

2022/02/09 06:05

Perlの質問タグもあったと思います
guest

回答2

0

cgiのファイルをutf-8で統一させては、如何でしょうか?
もちろん、保存する際にもutf-8で保存し、アップロードして下さい。
もし文字依存関係上、問題が発生した場合は、サーバーで日本語設定を行って下さい。

perl

1#!/usr/bin/perl 2 3use utf8 ; 4binmode STDIN, ":utf8"; 5binmode STDOUT, ":utf8"; 6binmode STDERR, ":utf8"; 7 8require './form/jcode.pl'; 9 10$tempFile = './contact.html'; 11 12#■□■□■□■□■□■□■□■□■□ 13$hensin = 1; 14$kakunin_Gamen = 1; 15@hisuu = (); 16$hisuu_Email = 0; 17$thispl = 'form.cgi'; 18$mailprog = '/usr/sbin/sendmail'; 19$mailaddress = '受信用アドレスを入力しています'; 20$subject = 'HPよりお問い合せがあります'; 21$mailhead = "以下の内容が送信されてきました。"; 22$Ssubject = 'お問い合せありがとうございます'; 23$Smailhead = 'お問い合せありがとうございます 24$Smailfoot = ' 25 26'; 27 28#■□■□■□■□■□■□■□■□ 29#◆◆◆◆フォーム内容を確認 30if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } 31else { $buffer = $ENV{'QUERY_STRING'}; } 32 33 foreach(@hisuu){#---------チェックボックス・ラジオボタンの必須項目チェック用 34 $hisuu_check{$_} =0; 35 } 36@ERROR = (); 37@pairs = split(/&/, $buffer); 38foreach $pair (@pairs) { 39 ($name, $value) = split(/=/, $pair); 40 41 $name =~ tr/+/ /; 42 $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 43 $value =~ tr/+/ /; 44 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 45 $value =~ s/<!--(.|\n)*-->//g; #-------------------SSIの禁止用 46 &jcode'convert(*name,'sjis'); 47 &jcode'convert(*value,'sjis'); 48 49 $FORM{$name} = $value; 50 51 if($value ne ''){ 52 push(@NAME,$name); 53 push(@VALUE,$value); 54 } 55 #必須項目の記入判断 56$hisuu_check{$name} =1;#---------チェックボックス・ラジオボタンの必須項目チェック用 57if(!$value){#---------チェックボックス・ラジオボタン”以外”の必須項目チェック用 58 if($name ne 'Email'){ 59 foreach(@hisuu){ 60 if( $_ eq $name){ push(@ERROR,$name); } 61 } 62 } 63} 64 65}#foreach 66 67 68#◆◆◆◆確認画面を表示するのかメール送るのかの判断 69if (!$FORM{'kakunin'}){ 70 if($hisuu_Email){ 71 if($FORM{Email}){ 72 if( $FORM{Email} =~ /[^\x21-\x7E]/ || $FORM{Email} =~ /[\(\)<>,;:\\"\[\]]/ || $FORM{Email} !~ /^[^@]+@[^@]+$/ ) { 73 push(@ERROR,'E-mailが正しくありません(全角文字・スペースが含まれていないかご確認ください)'); 74 } 75 }else{ 76 push(@ERROR,'E-mail'); 77 } 78 } 79 while (($name, $value) = each(%hisuu_check)) {#---------チェックボックス・ラジオボタンの必須項目チェック用 80 if(!$value){ push(@ERROR,$name); } 81 } 82 if(!@ERROR){ 83 if($kakunin_Gamen){ &kakuninGamen; } 84 else{ &okuru; } 85 }else{ &error; } 86 87}else{ 88 &okuru; 89} 90 91 92#◆◆◆◆確認画面を表示 93sub kakuninGamen{ 94 $write = '<table border="0" width="667" height="349" cellpadding="0" cellspacing="0" align="center" style="margin-top:0px; background:url(images/bg_tamago.jpg) right top no-repeat;"><tr><td valign="top">'; 95 $write .= '<table border="0" width="400" cellpadding="0" cellspacing="0"><tr><td>'; 96 $write .= "<form action=\"$thispl\" method=\"post\">"; 97 $write .= '<tr><td colspan="2" height="50" varign="middle">以下の内容をご確認の上、よろしければ<b>「送信する」</b>ボタンをクリックして下さい。</td></tr>'; 98 $write .= '<tr><td colspan="2"><hr noshade size="1" style="margin:3px 0 3px 0;"></td></tr>'; 99 100 $x = 0; 101 foreach (@NAME) { 102 if($VALUE[$x]){ 103 $write .= "<tr>\n"; 104 $write .= "<input type=\"hidden\" name=\"$NAME[$x]\" value=\"$VALUE[$x]\">\n"; 105 $VALUE[$x] =~ s/\n/<br>/g; 106 $write .= "<td width=\"10%\" nowrap>$NAME[$x]:</td>\n"; 107 $write .= "<td width=\"90%\">$VALUE[$x]</td>\n"; 108 $write .= "</tr>\n"; 109 $write .= '<td colspan="2"><hr noshade size="1" style="margin:3px 0 3px 0;"></td>'; 110 $write .= "</tr>\n"; 111 } 112 $x++; 113 } 114 $write .= ' 115 </table> 116 <br /> 117 <table border="0" cellpadding="0" cellspacing="0" width="667"><tr><td> 118 <input type="hidden" name="kakunin" value="on" > 119 <input type="submit" value="- 送信する -" class="inp"> <input type="button" name="back" onClick="history.back()" value="- 戻る -" class="inp"> 120 </td></tr></table> 121 </form> 122 </td></tr></table> 123 '; 124 125 &pageWrite; 126} 127 128#◆◆◆◆確認画面を表示 129sub pageWrite{ 130 print "Content-Type: text/html; charset=utf-8\n"; 131 print "Content-Language: ja\n"; 132 print "Pragma: no-cache;\n\n"; 133 134 #テンプレート読んで書き出し 135 open(TEMP,"$tempFile"); 136 @temp = <TEMP>; 137 close(TEMP); 138 #配列をひとつの変数にまとめる 139 $tempFlag = 1; 140 foreach (@temp){ 141 if($_ =~ /<!--__systemCheck__-->/){ 142 if($tempFlag){ 143 $tempFlag = 0; 144 $tempMatome .= "<!--__write__-->\n"; 145 }else{ 146 $tempFlag = 1; 147 } 148 } 149 if($tempFlag){ 150 $tempMatome .= $_; 151 } 152 } 153 154 $tempMatome =~ s/<!--__write__-->/$write/g; 155 156 print $tempMatome; 157 exit(0); 158 159}#sub kakuninGamen 160 161 162#◆◆◆◆メールを送ってサンクスページを表示 → 終了 163sub okuru{ 164require "mimew.pl"; 165 166open(MAIL,"|$mailprog -t"); 167 $mail_head = ""; 168 $mail_head .= "Content-type: text/plain; charset=ISO-2022-JP\n"; 169 $mail_head .= "Content-Transfer-Encoding: 7bit\n"; 170 $mail_head .= "MIME-Version: 1.0\n"; 171 $mail_head .= "Return-Path: $FORM{'Email'}\n"; 172 $mail_head .= "From: $FORM{'Email'}\n"; 173 $mail_head .= "To: $mailaddress\n"; 174 if($bccaddress){ $mail_head .= "Bcc: $bccaddress\n"; } 175 $mail_head .= "Subject: $subject\n\n"; 176 $mail_head = &mimeencode($mail_head); 177 178 $mail_message .= "$date\n"; 179 $mail_message .= "$mailhead\n\n"; 180 $mail_message .= "□□□□□□□□□□□□□□□□□□□□\n\n"; 181 182 for($x = 0; $x < $#NAME; $x++) { 183 if ($NAME[$x] ne 'kakunin'){ 184 $mail_message .= "【 $NAME[$x] 】 "; 185 $mail_message .= "$VALUE[$x]\n\n"; 186 } 187 } 188 $mail_message .= "□□□□□□□□□□□□□□□□□□□□\n\n"; 189 $mail_message .= "ホスト名:$host\n"; 190 $mail_message .= "IPアドレス:$addr\n"; 191 $mail_message .= "ブラウザ:$ENV{'HTTP_USER_AGENT'}\n"; 192 &jcode'convert(*mail_message,'jis'); 193 194 print MAIL $mail_head; 195 print MAIL $mail_message; 196close (MAIL); 197 198 199#print "Location: $thanks\n\n"; 200if($hensin && $FORM{'Email'}){ &Hensin; } 201 202$write = '<table border="0" width="667" cellpadding="0" cellspacing="0" align="center" style="margin-top:0px; background:url(images/bg_tamago.jpg) right top no-repeat;"> 203<tr><td><br /><p style="height:250px;">お問い合せありがとうございます。</p></td></tr></table>'; 204&pageWrite; 205 206exit; 207 208} 209 210#◆◆◆◆エラーの表示 211sub error{ 212print "Content-Type: text/html; charset=utf-8\n"; 213print "Content-Language: ja\n"; 214print "Pragma: no-cache;\n\n"; 215print <<EOF; 216<HTML> 217<HEAD> 218<TITLE>エラー</TITLE> 219<style type="text/css"> 220<!-- 221td{font-size:12px;} 222--> 223</style> 224</head> 225<body bgcolor="#ffffff" text="#000000"> 226<center> 227<br><br><br> 228<table border="0" cellpadding="1" cellspacing="0" bgcolor="#ff6600"><tr><td> 229<table border="0" cellpadding="10" cellspacing="0" bgcolor="#ffffee"> 230 <tr> 231 <td class="hutuu"><font color="#009900"></font> 恐れ入りますが、以下の項目は必ずご記入ください <font color="#009900"></font></td> 232 </tr> 233 <tr> 234 <td class="hutuu"><br> 235EOF 236 237$xx = 0; 238foreach $Error(@ERROR){ 239 print "<font color=\"#cc0000\">【 $Error 】 </font>"; 240 } 241 242if(!@ERROR){ 243 if($Mlhusei){ 244 print "<font color=\"#cc0000\">E-mailの記入が正しくありません</font>"; 245 } 246} 247 248print <<EOF; 249 <br><br></td> 250 </tr> 251 <tr> 252 <td class="hutuu">ブラウザの戻るボタンで前のページに戻り、再度ご記入ください。</td> 253 </tr> 254</table> 255</td></tr></table> 256</center> 257</body> 258</html> 259EOF 260 261exit(0); 262}

投稿2022/02/09 23:36

jack-low

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unikani129

2022/02/10 04:10

ご回答いただきありがとうございます。 Shift-JISかUTF-8かどちらでもいいけれど、HTMLとcgiの文字コードを統一しなければならいないということですね。 ご丁寧にありがとうございました。
guest

0

ベストアンサー

perl

1sub pageWrite{ 2 print "Content-Type: text/html; charset=Shift_JIS\n"; 3 print "Content-Language: ja\n"; 4 print "Pragma: no-cache;\n\n"; 5 6 #テンプレート読んで書き出し 7 open(TEMP,"$tempFile");

$tempFile である contact.html はシフトJISで符号化されている必要があります。UTF-8 などになってないでしょうか。

投稿2022/02/09 05:50

編集2022/02/09 05:55
int32_t

総合スコア20882

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unikani129

2022/02/09 23:38

ご回答いただきありがとうございます。 文字コードを変えたところ、文字化けが解決されました。 ですが次はサーバー内部エラーが発生し、サーバー内部のcgiが上手く作動していないようです。 文字化けの件は解決いたしましたので一度締めさせていただきます。 この度はありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問