• ベストアンサー

テキストエリアの内容がメールに送信できない

テキストボックスやラジオボタンなど、フォームに書き入れた内容をメールに送信するプログラムを作っています。(アンケートフォームのようなもの) まず、nyuryoku.phpでテキストエリア内に入力されたものを kakunin.php に $area1 として、表示させました。その内容を、hidden でmail.php に送りました。 kakunin.phpでは、$area1 がきちんと表示されるのに、 メールに送られてきた内容は、1行しか送られてきません。 なぜなのでしょうか? kakunin.phpで改行させる為に、  $area2 = nl2br($_POST[area]."\n"); をしましたが、それは関係あるのでしょうか。 分かりづらい説明で、申し訳ありませんがよろしくおねがいします。

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

  • ベストアンサー
  • shu_a
  • ベストアンサー率87% (14/16)
回答No.2

解決になるかわかりませんが、 タグの要素は必ずダブルコーテーションまたはシングルコーテーションで囲んでください。 というのは改行などはホワイトスペースなので、要素の終わりと判断されてしまうような気がします。 また、文字列にこれらが含まれているようだと、またアウトなので、配慮の必要があります。

relax50s
質問者

お礼

回答ありがとうございます。 ダブルコーテーションで囲った結果、無事に複数行メール送信されてきました。 ダブルコーテーションひとつで、表示が変わってしまうんですね。改めて勉強になりました。 ありがとうございます!

その他の回答 (2)

  • sakyo-t
  • ベストアンサー率70% (19/27)
回答No.3

HTMLを見るにやはり、hiddenタグが壊れていますね。 shu aさんのおっしゃる通りクォーテーションでくくればなんとかなりますが、それだと、エスケープしたりなんやかんやで、処理が増えたりします。 解決方法としてセッションをお勧めしたのですが、表示形式を変えても良いなら、textareaタグのreadonly属性を使ってみてはいかがでしょうか? kakunin.phpの表示を <textarea name="ta01" wrap="hard" readonly>  <?= $テキストエリアの変数$ ?> </textarea> という感じでtextareaで表示すれば、そのままPOSTできますので、もっとシンプルに解決できると思います

参考URL:
http://html.eweb-design.com/0904_txt.html
relax50s
質問者

お礼

回答ありがとうございます。 結局、いまだにセッションの使い方は分かっていないのですが…。 textareaには、入力してもらいたい所なのでreadonlyを使ってしまうと、それができなくなってしまい使えないんです。 ダブルクォーテーションで囲ったら送信されました!! ありがとうございました。

  • sakyo-t
  • ベストアンサー率70% (19/27)
回答No.1

要するにhiddenに埋めてバケツリレー中にデータが壊れたということですよね? hiddenタグに複数行を突っ込むのが暴挙のような気がします。kakunin.phpの出力ソースはどうなっていますか? hiddenタグが壊れているんじゃないでしょうか? セッションに埋めるなどした方が得策では?(環境の制限にもよると思いますが) mail.phpで$_POST[hiddenタグのname]の中身を確認した方がよろしいかと。 ちなみに$area1も$area2も表示に使っただけなら、関係ないと思います。

relax50s
質問者

補足

返答が遅くなってすみません。 >hiddenタグに複数行を突っ込むのが暴挙のような気がします。 そうだったんですか…。知識不足でした。 kakunin.php の出力ソースは次の通りです。 <td width="250"> ご質問等 </td> <td width="450">あああああ <br /> いいいいい <br /> ううううう <br /> えええええ <br /> </td> <input type=hidden name=situmon2 value=あああああ いいいいい ううううう えええええ > 改行されるので、1行目のデータしか遅れないのでしょうか? セッションについて、調べて、試してみたいと思います。

関連するQ&A

専門家に質問してみよう