2

コードからわかるように、ユーザーは最初に名前とメッセージを入力し、[送信] をクリックします。問題はテキストエリアです。改行してもメールに改行が入っていません。

<?php
$to = "abc@xyz.com";
$subject = "Message from contact form";

//begin of HTML message
$message = <<<EOF
<html>
<body>
<b>Name:</b><br>
{$_POST['name']}
<br>
<b>Message:</b><br>
{$_POST['message']}
</body>
</html>
EOF;
//end of message

$header  = "MIME-Version: 1.0" . "\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$header .= "from:abc@xyz.com";

mail($to, $subject, $message, $header);
echo "Email sent!";
?>

<form action="sendmail.php" method="post">
Name: <br>
<input type="text" name="name" style="width: 200px;"> <br><br>

Message: <br>
<textarea name="message" style="width: 200px; height: 100px;"></textarea> <br><br>

<input type="submit" value="Send">
</form>
4

3 に答える 3

14

それが HTML の本来の姿です。HTML ソースに何度アクセスEnterしても、改行を指示する HTML タグがある場合にのみ、ブラウザーは改行を表示します。

このようなタグはnl2br()で挿入できます。生の入力をhtmlspecialchars()でエスケープすることも必要です。

$name = htmlspecialchars($_POST['name']);
$message = nl2br(htmlspecialchars($_POST['message']));

//begin of HTML message
$message = <<<EOF
<html>
<body>
<b>Name:</b><br>
{$name}
<br>
<b>Message:</b><br>
{$message}
</body>
</html>
EOF;
于 2013-04-01T16:40:45.330 に答える
0

テキストエリアのテキストに PHP の nl2br() を使用します....

于 2013-04-01T16:40:35.527 に答える