フォームメールでの改行について - PHPプロ!Q&A掲示板

1086

  • 0P

フォームメールでの改行について

質問日時 / 2008年4月5日 23:21    回答数 / 1件

Questioner:  youhei  このエントリーをはてなブックマークに追加 

キーワード / フォーム    メール    改行   

メールフォームを作成し(mail_make.php)
そこからPOSTで確認画面に移動(mail_check.php)
さらにPOSTで移動し送信完了というものを作成しました。

本文のテキストエリア(name=body)を
確認画面で表示する際

$echobody = nl2br($HTTP_POST_VARS['body']);
echo $echobody; 

で、画面上フォーム内での改行をきちんと再現することができました。

そのあとhidden属性で送信処理のPHPに遷移し送信するのですが
ここへはnl2brしていないものを渡しています

PCのメールに送信すると改行が反映されませんが
携帯へのメールではきちんと反映されています。


PC側ではエンコード問題かと思い受信したメーラーOutlookでエンコードを変換してみました。


日本語(自動) > 改行反映なし
 ↓
日本語(EUC) > 文字化け
 ↓
日本語(JIS) > 文字化け
 ↓
日本語(自動) > 改行が反映される ただし1回の改行に付き2~3行ずつされている


という状況です。
ページは形態にも対応できるようにするためSJISで行っています。

改善方法等教えていただければと思います。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01mgngmgng改行反映なし、の状況はちょっとよくわかりませんが、

回答一覧

並び替え:

A01
answerermgngmgng [4月7日 10:19]

改行反映なし、の状況はちょっとよくわかりませんが、
1回の改行につき2-3行ずつされているっていうのは、
本文中の改行コードがおかしなことになっているためだと思います。

http://jp.php.net/manual/ja/function.mail.php
を見ると「改行コードは LF (\n) となります」てかいてあるので、
送信する直前に改行コード変換しておくといいかもしれません。
  1. // \r\nを\rに変換
  2. $body = str_replace("\r\n","\r", $body);
  3. // \rを\nに変換
  4. $body = str_replace("\r","\n", $body);

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)