• ベストアンサー

PHPでのフォーム送信・・・・

function send_mail($name,$mail,$birth,$high,$pref,$hobby,$contents,$host,$ua,$time) { session_unset(); if(!$name) $name = "NoName"; if(!$sbj) $sbj = "From Mailform+"; $mes = "$name($mail)$high 様からのお問い合わせです。\n\n"; $contents = str_replace("<br>", "\n", $contents); if($url) $mes .= "●URL: $url\n\n"; $mes .= "【お問い合わせ内容】 (".date('Y.m.d (D) H:i:s', $time).")\n"; $mes .= "メールアドレス:::($mail)\n"; $mes .= "誕生日($birth)\n"; $mes .= "身長($high) cm\n"; $mes .= "お住い:::($pref)\n"; $mes .= "趣味:::($hobby)\n"; $mes .= "疑問点:::($msg)\n"; $mes .= "───────────────────────────────────\n"; $mes .= "$contents\n"; $mes .= "───────────────────────────────────\n"; $mes .= "$host\n$ua"; if(get_magic_quotes_gpc()) $mes = stripslashes($mes); $mes = mb_convert_encoding($mes, "JIS", "SJIS"); $header = "From:" .mb_encode_mimeheader($name) ."<$mail>"; $send = mb_send_mail(RECIPIENT, $sbj, $mes, $header); if($send) success("正常に送信されました"); else error("送信に失敗しました"); } ?> 上記PHPなのですが、送信自体は大丈夫なのですが、 誕生日・身長・お住い・趣味・疑問点 がメールを受信時に反映されません。 $mail と $name だけはちゃんと入力したとおりに出ます。 どの部分を訂正すれば正しくメールを受け取れますでしょうか・・・。 PHP初心者なので検討違いの質問をしていましたらすみません・・・。

  • ash03
  • お礼率30% (71/231)
  • PHP
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • unchikun
  • ベストアンサー率22% (2/9)
回答No.1

ご質問のソースをそのままコピーして、send_mail(1,2,3,4,5,6,7,8,9,0); と適当な値を引数に与えて呼び出したら問題なく動作しました。($msgは指定されてないので表示されませんでしたが) $birth,$high,$pref,$hobby,$contents,$host,$ua,$time にちゃんと値が入ってない可能性が大です。 echoなりファイルに書き出すなりしてみて、変数に値が入っているかチェックしてみてください。

ash03
質問者

補足

本当ですね・・・。 確認画面をみたら 未入力になってました。。。 http://www.xtrec.com/script_mf.htm こちらのPHPスクリプトを使って、項目の追加をしたいのですが・・・。 ちゃんと値を入れるにはPHP自体を変更するのでしょうか。 それともテンプレ部分?を変更するのでしょうか・・。

その他の回答 (2)

  • unchikun
  • ベストアンサー率22% (2/9)
回答No.3

MailForm+ ver.0.26(JavaScript版) をダウンロードして使ってみましたが、sample.phpではua等も表示されますので、改造の仕方がまずいのだと思います。 ソースもざっと見ましたが、テンプレートとphpの両方を変更する必要がありますね。たとえばbirthを追加するならテンプレート中のどこかに <dd><input name="birth" type="text" size="25" value="<?php e($birth) ?>"></dd> を追加したり、mail.php の関数 show_form()check_view(), check_post(), post_data(), send_main() に手を加えるなどの修正が必要です。 おそらく他のPHPスクリプトを探す方が早いような気がします。

回答No.2

$mes .= "誕生日(".$birth.")\n"; という風に書かないといけないんじゃないかな。

関連するQ&A

  • phpによるメッセージフォームからの送受信ですが、ブラウザ画面では送信

    phpによるメッセージフォームからの送受信ですが、ブラウザ画面では送信完了して、差出人と受取人双方に「下記の内容を受け付けました。」とメールされますが、受信したメールには肝心の本文内容だけが送られてきません。 Warning もerrorも表示されませんしなにが原因なのでしょうか? どなたか助言をおねがいします。 [thanks.php の内容]は下記のようですが、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>メッセージフォーム</title> </head> <body> <center> <font size="5">お問合せありがとうございました。<br><br> メールをご確認ください。</font></center> <?php $mail_name=$_POST['okyakusama']; $mail_to=$_POST['mail']; $toiawase=$_POST['toiawase']; print$mail_name; print$mail_to; print$toiawase; var_dump($_POST); $mail_mes=$mail_name."様\nお問合せありがとうございました。以下の内容を受け付けました。\n".$toi; $mail_sub='お問合せをうけました。'; $mail_head='From:akiko@****.net'; $mail_mes=html_entity_decode($mail_mes,ENT_QUOTES,"UTF-8"); mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($mail_to,$mail_sub,$mail_mes,$mail_head); $mail_mes=$mail_name."様\nお問合せありがとうございました。以下の内容を受け付けました。\n".$toi; $mail_sub='お問合せをうけました。'; $mail_head='From:akiko@****.net'; $mail_mes=html_entity_decode($mail_mes,ENT_QUOTES,"UTF-8"); mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail('akiko@****.net',$mail_sub,$mail_mes,$mail_head); ?> </body> </html>

    • ベストアンサー
    • CGI
  • phpのシンプルなメールフォーム

    あるサイトにて、単一phpのメールフォームのソースをコピーし、使用としましたが、 設定したメールアドレスに、送信ボタンを押しましたが、 受信されません。  ・送信後、「メールを送信しました」と表示されます。  ・送信のあて先は、何も反応なし。  ・ソースの「●●@●●」はダミーです。 以下ソースです。原因がわかりますでしょうか。ご教授のほどよろしくお願いします。 ―――――――――――――――――――――――――――――――――――― <?php // 送信フラグ $send_flg = false; // エラーメッセージ $err_msg = array(); // 送信ボタンを押した後の処理 if ($_POST["post_flg"]) { // エラー if ($_POST["name"] == "") { $err_msg[] = "「お名前」は必須です"; } if ($_POST["email"] == "") { $err_msg[] = "「メールアドレス」は必須です"; } // エラーが無ければ送信 if (count($err_msg) == 0) { // 宛先 $mail_to = "●●@●●"; // 送信元アドレス $mail_from = "form@example.com"; // 件名 $mail_subject = "メールフォームから送信がありました"; // 本文 $mail_body = ""; $mail_body.= "■お名前\n".$_POST["name"]."\n\n"; $mail_body.= "■メールアドレス\n".$_POST["email"]."\n\n"; $mail_body.= "■コメント\n".$_POST["comment"]; // 送信処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail($mail_to, $mail_subject, $mail_body, "From: <".$mail_from.">"); $send_flg = true; $_POST = array(); } } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <?php // 初期フォーム表示 if (!$send_flg) { ?> <h1>メールフォーム</h1> <?php // エラーメッセージがある場合 if (count($err_msg) > 0) { ?> <p style="color:red;"> <?php foreach ($err_msg as $val) { ?> ※<?php echo $val ?><br> <?php } ?> </p> <?php } ?> <form action="mail.php" method="post"> <p> お名前<br> <input type="text" cols="30" name="name" value="<?php echo $_POST["name"] ?>"><br> </p> <p> メールアドレス<br> <input type="text" cols="30" name="email" value="<?php echo $_POST["email"] ?>"><br> </p> <p> コメント<br> <textarea name="comment" cols="50" rows="10"><?php echo $_POST["comment"] ?></textarea><br> </p> <input type="submit" name="post_flg" value="送信する"><br> </form> <?php // メール送信後の表示 } else { ?> <br><br><br><br>メールを送信しました。<br> <?php } ?> </body> </html> ――――――――――――――――――――――――――――――――――――

    • ベストアンサー
    • PHP
  • phpのメール送信

    ホームページにメールフォームを作りたいのですが、 送信できなくて困っています。 ソースは次の通りです。 <?php echo "<html>"; echo "<head>"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = "アドレスA"; $subject = "件名"; $from = "アドレスB"; $header = "From: ". $from; //本文格納 $mailbody = "■お名前:" . $_post["name"] ."\n"; $mailbody .= "■内容:" . $_post["sentaku"] ."\n"; if(mb_send_mail($to, $subject, $mailbody, $header)){ echo "送信しました。"; }else{ echo "送信できませんでした。"; } echo "</body>"; echo "</html>"; ?> またif文の日本語が文字化けしてしまいます。 メール送信できて、文字化けもないようにしたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • 初めてばかりのPHPでメールフォーム作ったのですが

    メールフォームを制作したのですが、動いたのはいいのですが、 別々にformの値を送っているのですが、うまく動きません。 どうしたらいいでしょうか? mb_language("Japanese"); mb_internal_encoding("UTF-8"); if($_SERVER['REQUEST_METHOD']=="POST"){ $array = array(); $vacation_radio = htmlspecialchars($_POST["vacation_radio"], ENT_QUOTES); $name = htmlspecialchars($_POST["name"], ENT_QUOTES); $vacation_helo = htmlspecialchars($_POST["vacation_helo"], ENT_QUOTES); $kanso = htmlspecialchars($_POST["kanso"], ENT_QUOTES); $h = htmlspecialchars($_POST["h"], ENT_QUOTES); $m = htmlspecialchars($_POST["m"], ENT_QUOTES); if(isset($_POST["vacation"])){ $vacation_radio_search = array("1", "2", "3"); $vacation_radio_replace = array('午前', '午後', '深夜); $vacation_radio_a = str_replace($vacation_radio_search, $vacation_radio_replace, $vacation_radio); $vacation_helo_search = array("5", "6"); $vacation_helo_replace = array('おはようございます。', 'おつかれさまです。'); $vacation_helo_a = str_replace($vacation_helo_search, $vacation_helo_replace, $vacation_helo); mb_convert_variables('UTF-8', 'EUC-JP', $name); mb_convert_variables('UTF-8', 'EUC-JP', $kanso); $mail_object = "ITSG ". $vacation_radio_a ." ". $name ; $mail_ob = $vacation_helo_a. "\n". $name ."\n\n". $vacation_radio_a ."\n". $kanso; if (mb_send_mail("test@test.com", $mail_object, $mail_ob, "From: test@test.com")) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } } if(isset($_POST["flex"])) { $vacation_helo_search = array("7", "8"); $vacation_helo_replace = array('おはようございます。', 'おつかれさまです。'); $vacation_helo_a = str_replace($vacation_helo_search, $vacation_helo_replace, $vacation_helo); mb_convert_variables('UTF-8', 'EUC-JP', $name); mb_convert_variables('UTF-8', 'EUC-JP', $kanso); $mail_object_a = $name . " " . $h . ":" . $m ; //$mail_ob_a = $vacation_helo_a. "\n". $name ."\n\n". $h .":" . $m ."\n". $kanso; $mail_ob_a = $vacation_helo_a; if (mb_send_mail("test@test.com", $mail_object_a, $mail_ob_a, "From: test@test.com")) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } } } flexの7と8の値が帰って来ません。 どうしたらよいのでしょうか? わからないなりにつくってみたのでソースが汚いと思いますが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • メール送信フォーム

    mb_send_mail($to, $subject, $message, $from); でフォームのメール送信を作ったのですが、(エラーはでません)メールが送信されません。PHPのバージョンは4.23 HTMLでは <FORM METHOD="POST" ACTION="send.php" ENCTYPE="text/plain"> <input type="hidden" name="subject" value="質問"> </FORM> 省略 send.phpでは <?php mb_language("ja"); mb_send_mail($mail, $subject, $message, $from); ?> どこがおかしいのかわかりません? なにかヒントをいただけますか?

    • 締切済み
    • PHP
  • こんにちは。PHPでメールフォームを送信したいのですが、

    こんにちは。PHPでメールフォームを送信したいのですが、 メールが文字化けしてしまいます。 PHP初心者です。 時間をかけてゆっくりやりたいのですが、 仕事でやっているため、そうも言ってられず。。。 ======================================================= $msg= 'Name: '.$_POST['name'].'<br /> Email: '.$_POST['email'].'<br /> IP: '.$_SERVER['REMOTE_ADDR'].'<br /><br /> Message:<br /><br /> '.nl2br($_POST['message']).' '; $mail = new PHPMailer(); $mail->IsMail(); $mail->AddReplyTo($_POST['email'], $_POST['name']); $mail->AddAddress($emailAddress); $mail->SetFrom($_POST['email'], $_POST['name']); $mail->Subject = "A new ".mb_strtolower($_POST['subject'])." from ".$_POST['name']." | contact form feedback"; $mail->MsgHTML($msg); $mail->Send(); ========================================================================= 一部ですが、こちらを修正すればよいのでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 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
  • PHPでフォームメール

    いつも適切なご回答誠にありがとうございます。PHP初心者で参考書やnetを頼りに制作している者です。現在フォームを作成していて確認メールでの質問です。送信者宛てには上手く送信されるのですが、管理者宛のメールの件名と送信者がうまく表示されません。どなたかお助けください。 //----------------ここから管理者宛にMAIL送信------------------------// $subject="資料請求がございました"; $subject=mb_convert_encoding("$subject","JIS","SJIS"); $subject=mb_encode_mimeheader($subject); $other = stripslashes($other); $from="${name01}"; $from=mb_convert_encoding("${from}","JIS","SJIS"); $from = base64_encode($from); $from = "=?ISO-2022-JP?B?" . $from . "?="; $from = "From: \"".$from. "\"" . "<" . "$e_mail" . ">"; $s_msg="以下の内容で資料請求がありました。資料発送の手配をお願いします。\n _/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄\n ■お名前:${name01} ■電話番号:${tel} ■E-メール:${e_mail} ■ご意見・ご要望:\n\n${other}\n _/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄\n ${d_site}|資料請求フォーム\n \n"; $s_msg = mb_convert_encoding($s_msg,"JIS","SJIS"); $sendto = "$d_recipient"; mb_send_mail($sendto,"$subject","$s_msg","$from"); //-------------------------------------------------------------------------------------//

    • ベストアンサー
    • PHP
  • PHPでメールを送信するには

    PHP超初心者です。 参考本をもとにPHPでメールを送信するということにチャレンジしているのですが、次のような文章が出ます。 Warning: mb_send_mail() [function.mb-send-mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\Apache Group\Apache2\htdocs\php10\mail.php on line 11 エラー:送信に失敗しました 参考本に書いてあるとおり、 php.iniのSMTP=localhost を自分が使っているoooooo@ocn.ne.jpに書き換え、sendmailには自分の別アドレスを記述したのですが。 11行目のエラーも何を指しているのかわかりません。 ご回答よろしくお願いします。 【mail.php】 <html> <head><title>mail.php</title></head> <body> <?php $address=$_POST['address']; $subject=$_POST['subject']; $message=$_POST['message']; $header="Content-Type:text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address, $subject, mb_convert_encoding($message,"JIS","EUC-JP"),$header)){ print("送信完了しました。"); }else{ print("エラー:送信に失敗しました"); } ?> </body> </html> 【mail_form.html】 <html> <head><title>メールの送信</title></head> <body> <h2>メールの送信</h2> <form action="mail.php" method="post"> 宛先:<input type="text" name="address"><br /> 件名:<input type="text" name="subject"><br /> 本文:<br /><textarea name="message" rows="5" cols="30"></textarea><br /> <input type="submit" value="送信"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • php5のフォーム

    サーバーの仕様が変わってフォームが動かなくなって困っています。 現在のフォームはphp4で、仕様はphp5にしか対応しなくなったということです。 古いコードが使われているからだとは思いますが、 全くの初心者の私には何をどう書き換えたらいいのかさっぱりで、質問に至った次第であります。 現在の状況を説明しますと、フォームに内容を入力して、 エラー画面、確認画面まではしっかり動くのですが、 ”この内容で送信する”ボタンで 問い合わせフォーム真っ白になってしまいます。 ソースは以下です。 ・mail.php========================= <? include_once "func.php"; include_once "mail.pear.php"; class MainClass{ function MainClass(){ switch( $_REQUEST['type'] ){ case "step1": if( $this->Chk_Input() ){ $_REQUEST['act'] = ""; break; } break; //メール送信 case "step2": // 管理者にメール送信 $msg = "お問い合わせフォームより以下の内容が送信されました。\n\n" ."内容をご確認の上、ご担当者様へご連絡をお願いいたします。\n\n\n" ."お名前 : ".$_POST['name']."\n" ."メールアドレス : ".$_POST['mail_ad']."\n" ."お問い合わせ内容 : ".$_POST['other']."\n"; new MailSendByMTA( "**@**.jp" , "**@**.jp" , "【お問い合わせ内容】" , $msg , "" , 0 ); // 登録者にメール送信 $msg = "".$_POST['name']." 様\n\n" ."このたびは「お問い合わせ」をいただき、誠にありがとうございます。\n" ."お問い合わせ内容をご確認ください。弊社スタッフより改めてご連絡いたします。\n\n" ."お名前 : ".$_POST['name']."\n" ."メールアドレス : ".$_POST['mail_ad']."\n" ."お問い合わせ内容 : ".$_POST['other']."\n\n\n\n" ."(株)******\n\n" ."〒111-1111 **県**市****123-456\n" ."電話:000-000-0000 FAX:000-000-0000\n"; new MailSendByMTA( "**@**.jp" , $_POST['mail_ad'] ,"【お問い合わせ内容】" , $msg , "" , 0 ); pageJump( $_SERVER['PHP_SELF']."?act=step2" ); break; } switch( $_REQUEST['act'] ){ case "step1": include_once "review.html.php"; break; case "step2": include_once "thanks.html.php"; break; default: include_once "form.html.php"; } } function Chk_Input(){ if( chkErr_Func( $_POST['name'],0 ) ){ $this->errTxt .= "お名前を入力して下さい。<BR>"; } if( chkErr_Func( $_POST['mail_ad'],0 ) ){ $this->errTxt .= "メールアドレスを入力してください。<BR>"; } else{ if( chkErr_Func( $_POST['mail_ad'],3 ) ){ $this->errTxt .= "メールアドレスに誤りがないかご確認下さい。<BR>"; } else{ if( $_POST['mail_ad'] != $_POST['mail_ad2'] ){ $this->errTxt .= "メールアドレス入力確認の内容がメールアドレスの内容と異なっています。<BR>"; } } } if( chkErr_Func( $_POST['other'],0 ) ){ $this->errTxt .= "お問い合わせ内容を入力してください。<BR>"; } return ( $this->errTxt != "" ) ? true : false; } } new MainClass(); ?> 長々とすいませんが、ご教授ください。 お願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう