• ベストアンサー

PHPのメールフォームを作りました。

PHPのメールフォームを作りました。 EUC-JPしか動かないサーバーな様で、 EUC-JPで作り問題無く動いているのですが、 メールを確認すると 「性別」 という字が 「辞別」 となって送られてきます。 input の部分は普通に「性別」と送られるのですが、 nameで送っている「name="性別"」の部分だけ「辞別」となります。 文字コードで「性」といれても「辞」となります。 他の字は問題ないのですが、この「性」だけ駄目のようです。 いわゆる駄目文字なのでしょうか? どなたかご教授くださいませ。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>メールを確認 本文と表題だとエンコード方法が違いますが、どうやってますか? またmail関数とmb_send_mail()とPEARのMailだと処理が違います。 なにで送信していますか? きちんとやるならmb_send_mail()を使わずに、mail()かPEAR:Mailで ご自身でエンコードをしてやると確実性はあがります。

tomoticks
質問者

補足

ご回答ありがとうございます。 すいません。作ったというと語弊があります。 あり物のフォームを作り変えて使っているレベルです。 確認したところ、 mail()で送信している様です。 エンコードは .base64_encode(mb_convert_encoding($変数,"JIS","EUC-JP")). こんな感じでした。 inputで入力されたデータは文字化けしないのに、 なぜnemeに入っている文字が文字化け(誤変換?)されるのがわかりません。 どちらも同じエンコードのはずなのに。。。

その他の回答 (1)

  • RockmanX
  • ベストアンサー率50% (3/6)
回答No.2

そのファイル自体のエンコードもEUC-JPですよね? 念のためですがファイルをメモ帳などで開いて名前を付けて保存するさいに エンコードの種類がShiftJISとかUTF-8とかASCIIになってないか見たほうがいいかもです。

tomoticks
質問者

補足

ご回答ありがとうございます。 ファイル自体もEUC-JPです。 念の為、別名でエンコード選択で保存もしたので間違いないです。

関連するQ&A

  • PHPメールフォームでの文字化け

    プログラミング&PHP超初心者です。 PHPでメールフォームを作成して、送信には成功しましたが、受信したメールが文字化けしています。 いろいろ調べたのですが、解決できませんでした。 どなたか詳しいかた、教えていただけると嬉しいです。 送信する部分: if ($name != \"\" and $from != \"\" and $title != \"\" and $naiyou != \"\" ) { if (mb_send_mail($to, $title, $naiyou, \"From:$from\")) { echo \"メールを送信しました\"; } else { echo \"メール送信失敗です\"; } 文字コードはEUC-JPです。 サーバーはロリポップです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • フォーム検索先の文字コードが自動的にEUC-JPに

    タイトルの通りですが、フォーム検索先の文字コードが自動的にEUC-JPになってしまって困っています。 最終的には、フォームの検索先をUTF-8の文字コードを指定して開きたいです。 UTF-8でphpファイルを作成しました。内容は下記のものです。 (おそらくphpは問題ないと思いますが、一応リンクを載せます) 2つの検索フォームのリーベンシュタイン距離を求める http://okwave.jp/qa/q7398842.html 上記のPHPにアクセスするように、FC2ブログのプラグイン(HTML編集にて)で、下記のようにフォームアクション先を設置しています。 (仮にここでは2つの検索フォームに名前を入れるものとします) <form name="formleven" method="post" form action = "http://〇〇.〇〇.jp/php/formleven.php" target="_blank" style="margin:0;padding:0;" onsubmit="return false;" accept-charset="utf-8"> 名前1:<input type="text" name="nm"> と 名前2:<input type="text" name="nm2">    <input type="submit" name="exec" value="検索" onclick="document.charset='utf-8'; document.formleven.submit();" /> </form> 仮に 名前1に「あō å 1g」 名前2に「いš ë ā 」 と入力します。(日本語、アクセント文字、ローマ字などの混合文字でも対応できるように) 本来ならば、『(名前1)と(名前2)は◯%マッチ』と表示されるはずなのですが、 これで検索すると、検索先の別ウィンドウが自動的にEUC-JPの文字コードで読み込まれてしまい、下記のように文字化けします。 ��� 奪 鐚�鐔� �� ��邸 谷 � �� 1鐚� ������(6) ブラウザの文字コードを「UTF-8」に戻すと下記のように正常に表示されます。 あō å 1g と いš ë ā は 1% マッチ(6) ちなみにローカルサーバーや有料サーバーで実験した際には、勝手にEUC-JPの文字コードが出力先になったりはしませんでした。(もちろんPHPはUTF-8で作成し、EUC-JPは使っていません。) またフォームの「accept-charset="utf-8"」の部分を抜くと、検索フォームの入力文字は正常に表示される(出力先が勝手にEUC-JPにされるため)のですが、「と」「は」「%マッチ」のUTF-8で書かれたPHPファイルの文字列が文字化けします。 どうやらFC2自体がEUC-JPなようで、FC2のプラグイン(HTML編集)経由でなってしまうようです。 そこでFC2のテンプレートの冒頭のメタ部分を <?xml version="1.0" encoding="EUC-JP"?> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> ↓ <?xml version="1.0" encoding="UTF-8"?> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> と書き換えてもみたのですが、やはり結果は同じように勝手に検索出力先がEUC-JPにされてしまいます。 HTMLフォームのmethod="post"の部分をmethod="get"に書き換えると、出力先は問題なくUTF-8で表示され文字化けは起こらなくなりますが、検索フォームに入力した文字列のリーベンシュタイン距離の計算ができなくなります。数値が全て「0」になってしまいます。 (おそらく出力先はUTF-8なのですが、入力文字がEUC-JPになって文字化けして、PHPへと受け渡されるので計算できないのだと思います。) これらのことから察するに、FC2プラグイン(HTML)に設置した検索フォームの方(あるいはテンプレート?)に問題があると思うのですが、 <form name="formleven" method="post" form action = "http://〇〇.〇〇.jp/php/formleven.php" target="_blank" style="margin:0;padding:0;" onsubmit="return false;" accept-charset="utf-8"> 名前1:<input type="text" name="nm"> と 名前2:<input type="text" name="nm2">    <input type="submit" name="exec" value="検索" onclick="document.charset='utf-8'; document.formleven.submit();" /> </form> これをどう修正すればいいでしょうか? 稚拙ながら恐縮ですが、ご存じの方がいらっしゃいましたら、ご指摘・ご教授のほどよろしくお願い申し上げます。

    • ベストアンサー
    • HTML
  • PHPでの”能”などの文字化け(ファイル送信フォーム)

    サーバー環境 Win2000 Apache/2.0.55 PHP Version 4.4.1 MySQL Version 3.23.49 (SJIS) php.iniの設定 magic_quotes_gpc=Off mbstring.http_input=auto mbstring.http_output=SJIS mbstring.internal_encoding=SJIS にて運用しています。 携帯での利用を考慮して、SJISでの運用が必要であったため、EUC-JPへの変更は考えていません。 能などの「文字化け文字」の表示は、addslashes,stripslashes等で処理しており問題はありません。 今回、ファイル送信<input type=file name=userfile>のファイル送信での\の処理についてお聞きしたく質問しました。 過去の例にも挙げられていますが、可能性などの文字は、SJIS環境で送信すると、可能\性と表示されます。表示は、stripslashesで\をとればいいと思いますが、上記のinput type=fileでファイルを指定すると C:\MyDocument\可能性.doc は D:\MyDocument\可能\性.doc となってしまい、パスと判断され フォームの送信後の $userfile_nameでは、「性.doc」となってしまいます。 現在のサーバー環境を変えることで大きな影響がでるのは、できるだけ避けたいです。 なにかよい意見がございましたら、ご教授ください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • EUC-JPでのメールフォームについて

    レンタルサーバー(isle)提供の提供の無料CGIを使い、サイトを作ることになりました。 日本語版と海外向け(英語版)が必要なのですが、そこで使うメールフォームがEUC-JPで書かれているので悩んでいます。 自作のCGIが使えない契約のため、海外向けにもこれを使うしかありません。 日本語版以外のOS、ブラウザを使った環境からメールフォームに入力しようとした場合、EUC-JPで作ってあるメールフォームでは文字化けしたりの問題が起きたりしますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • フォームから送信されたメールアドレスの表示ですが・・

    スクリプトでメールフォームを設置したのですが、送信されるメールアドレスが下記のように表示されます。クリックしてすぐに返信したいので、アドレスだけ表示されるようにしたいのですが、どうしたらいいかご存知の方がいらっしゃいましたらよろしくお願いします。 <ソース> <INPUT TYPE=HIDDEN NAME="題名" VALUE="フォームメール"><INPUT TYPE=HIDDEN NAME="題名" VALUE="フォームメール"> <FORM ENCTYPE="text/plain" METHOD="POST" ACTION="mailto:***@******.com"><INPUT TYPE=HIDDEN NAME="題名" VALUE="フォームメール">■お名前:<BR> <INPUT TYPE=TEXT NAME="名前" SIZE=40><BR> <BR> ■E-Mail:<BR> <INPUT TYPE=TEXT NAME="e-mail" SIZE=40><BR> <BR> ■性別:<BR> <INPUT TYPE=RADIO NAME="性別" VALUE="男" CHECKED>男性 <INPUT TYPE=RADIO NAME="性別" VALUE="女">女性<BR> <BR> ■お問い合わせ内容:<BR> <TEXTAREA name="メッセージ" rows="7" cols="49"></TEXTAREA><BR> <BR> <INPUT TYPE=SUBMIT VALUE="送信する"> <INPUT type="reset" name="クリア"></FORM> このように表記すると、 題名=フォームメール 名前=***** e-mail=*****@*****.com 性別=男性 メッセージ=これはテストです これはテストです これはテストです これはテストです これはテストです これはテストです これはテストです これはテストです となり、「e-mail=*****@*****.com」がアドレスとなってしまいます。 「e-mail=」が表示されないようにするか、表示されても「e-mail=」がアドレスとして認識されないようにしたいのですが・・・よろしくお願いします。

  • PHPでフォーム作成

    テキストボックス、ラジオボタン、チェックボックスをHTMLで作成し、ユーザーが選択した値をPOSTで受け取り、 表示するプログラムを作成するとどのようになるか教えてください。 <?php // 送信ボタンがクリックされた場合の処理 if ($_SERVER['REQUEST_METHOD'] === 'POST') { } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>フォーム</title> </head> <body> <h1>フォーム</h1> <form method="post"> <p>お名前: <input id="my_name" type="text" name="my_name" value=""></p> <p>性別: <input type="radio" name="gender" value="man">男 <input type="radio" name="gender" value="woman">女</p> <p><input type="checkbox" name="mail" value="OK">お知らせメールを受け取る</p> <input type="submit" name="submit" value="送信"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • メールフォームで良いサイト

    いくつかの無料のメールフォームを使っていますが 自分に送られてくるメールで、こちらである程度フォームを カスタムできるレンタルCGIはありますか? 今現在のでもある程度はカスタムできるのですが、 今困っているのが下記の例で言いますと 仮にフォームで○○と□□をチェックし送信を押すと <input type="radio" name="○○" value="○○" />○○ <input type="radio" name="△△" value="△△" />△△ <input type="radio" name="□□" value="□□" />□□ 自分の所には -------------------------- ・チェックで選んだもの ○○ ##△△## □□ -------------------------- とメールで自分の所に返ってきます。 nameで書かれた所がメールにて飛んでくるので選んでない場合は 上記のような形で残ってしまいます。 希望としては選んだものだけが飛んでくるのが理想です。 下記のように・・・ -------------------------- ・チェックで選んだもの ○○ □□ -------------------------- このような形でできるようなフリー、もくしは有料でも構いません。 ありますでしょうか? メールからソフトに自動的にもってくる為にいらない文字などが あると困るのでこのような質問をしました。 よろしくお願いします。

    • 締切済み
    • CGI
  • phpでのメールフォームの作成について

    HTMLで <form action="mail.php" method="post"> <input name="aaa" type="checkbox" id="aaa" value="AAA" checked> <input name="bbb" type="checkbox" id="bbb" value="BBB" checked> <input name="ccc" type="checkbox" id="ccc" value="CCC" checked> </form> として、次に進むボタンを押すとmail.phpに飛び mail.phpでは、チェックされたものだけを表示したいのですが、どうすればよいでしょうか? もし、AAAとBBBが選ばれたら あなたが選んだのは AAA、BBBです。 と表示したいです。そのあとにメールフォームを続けるつもりです。 ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • PHPのメールフォームでチェックボックス

    PHPでメールフォームを作っているのですが、チェックボックスの値がメールで送信されません。 ソースは・・・(チェックボックスの部分だけ) *フォームページ <form method="post" action="form1.php" name="infoform" id="infoform" onsubmit="return checkForm();"> <INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー1" />メニュー1&nbsp;<INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー2" />メニュー12&nbsp;<INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー3" />メニュー3 <input type="reset" name="no" id="no" value="リセット" /><input type="submit" name="send" id="send" value="確認" /> </form> *確認ページ <?php $p_k_menu = $_REQUEST['k_menu']; ?> <table> <th>興味のあるメニューは?</th> <td> <?php for($i=0; $i<sizeof($p_k_menu); $i++){ print "${p_k_menu[$i]}<br />"; } ?></td> </tr> </table> <form method="post" action="form2.php" name="h_form" id="h_form"> <input type="hidden" name="k_menu" id="k_menu" value="<?php print htmlspecialchars($k_menu); ?>" /> *メール送信ページ <?php $p_k_menu = $_POST['k_menu']; mb_language("Ja"); mb_internal_encoding("EUC-JP"); $mailbody = "興味のあるメニューは?:".$k_menu; $address = "メールアドレス"; $subject = "件名"; if(mb_send_mail($address,$subject,$mailbody,"from:メールアドレス")){ print "応募を受け付けました。"."<br />"."ありがとうございました。"; }else{ print "応募を確認できませんでした。"."<br />"."申し訳ございませんが、もう一度ご送信下さい。"."<br />"."<form><input type='button' name='bk' id='bk' value='戻る' onclick='history.go(-2)'></form>"; } ?> ソースは以上です。 何処が悪いんでしょうか??

  • PHPを勉強しながらメールフォームの作成をしています。

    PHPを勉強しながらメールフォームの作成をしています。 PHPは初心者です。 ご質問なのですが、メールフォームでinput type="hidden"で値の受け渡しをしたいと思っています。 SESSIONなどありますが、こちらはのちのち勉強していきます。 まずメールフォームから確認画面を表示する流れにしていきたいのですが、ここでご質問があります。 ソースは下記のとおりになります。 <!-- index.php --> <form action="comfirm.php" method="post"> <dl> <dt>名前</dt> <dd><input type="text" name="name" value="" /></dd> <dt>性別</dt> <dd> <input type="radio" name="sex" value="男" />男 <input type="radio" name="sex" value="女" />女 </dd> <dt>カテゴリ</dt> <dd> <select name="category"> <option value="サッカー">サッカー</option> <option value="野球">野球</option> <option value="バスケ">バスケ</option> <option value="バレー">バレー</option> </select> </dd> </dl> <input type="hidden" name="contact" value="form" /> <input type="submit" value="送信" /> </form> としており、 <!-- comfirm.php --> <?php $name = $_POST['name']; $sex = $_POST['sex']; $category = $_POST['category']; ?> <html> <body> <dl> <dt>名前</dt> <dd><?php echo $name; ?></dd> <dt>性別</dt> <dd><?php echo $sex; ?></dd> <dt>カテゴリ</dt> <dd><?php echo $category; ?></dd> </dl> </body> </html> となっております。 ここでconfirm.phpに渡る際ににエラー表示をしたいのですが、記述の仕方がどうもわかりません・・・ confirm.phpに渡るときに名前が記入されていなかったらindex.phpに名前が記入されていませんと表示させたいのですがどなたかご教授いただけませんでしょうか? 初心者のため、わからないことがあると思いますが、いろいろと教えていただけたら幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう