問い合わせフォームの作り方のしつもんです、

htmlとphpをつかってサーバに送るまでは出来るんですが、
その送られたデータをどうやったら受け取れるかがわかりません。

お手数ですが、やり方を教えていただけると嬉しいです。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/12/26 11:45:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:aug7251976 No.5

回答回数10ベストアンサー獲得回数4

ポイント16pt

以前作った簡単なメールフォームはこんな感じです。

参考までどうぞ。

①フォームに記入して送信を押す

②javascriptでメールを送信してくれるPHPファイルに内容を送る。

※javascriptでおくらないと、ページがリロードされてしまうので・・こうしました。

③メール送信PHPファイルでメールを送る。

<HTML側>

===上略===ここから②のjavascript(headerか外部ファイル)===

<script type="text/javascript"></p> <p><!--</p> <p>function Sendmail(){</p> <p>var fm = document.forms['mail'];</p> <p>var from = fm.elements['from'].value;</p> <p>var subject = fm.elements['subject'].value;</p> <p>var hito = fm.elements['hito'].value;</p> <p>var honbun = fm.elements['honbun'].value;</p> <p>var alert_word ="";</p> <p>//フォームのエラーチェック。本当はメルアドの形式が正しいかもチェックした方がいい</p> <p>if(honbun =="" || hito =="" || from ==""){alert_word = "メール本文、送信者のお名前、返信先メールアドレスは必記入でお願いします!";}</p> <p>if(alert_word !=""){alert(alert_word);</p> <p>return;</p> <p>}</p> <p>//エラーがなかったらフォーム内容をクリア</p> <p>fm.elements['honbun'].value = "";</p> <p>fm.elements['from'].value = "";</p> <p>fm.elements['subject'].value = "";</p> <p>fm.elements['hito'].value ="";</p> <p>//PHP側に送る処理</p> <p>var req = "from="+from+"&subject="+subject+"&hito="+hito+"&honbun="+honbun;</p> <p>var xhrObj = createXmlHttpRequest();</p> <p>xhrObj.open("post","SendMail.php",false);//ここにメールを送るPHPファイルの場所を記入。左の場合同じディレクトリにある。</p> <p>xhrObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");</p> <p>xhrObj.send(req);</p> <p>var result = xhrObj.responseText;</p> <p>//PHP側の処理結果をアラーとする。「送信完了」OR「送信失敗」</p> <p>alert(result);</p> <p>}</p> <p>//Ajax </p> <p>function createXmlHttpRequest() {</p> <p>if(window.XMLHttpRequest){ // Firefox,Opera,Safari,IE7</p> <p>return new XMLHttpRequest();</p> <p>}else if(window.ActiveXObject){ // IE6</p> <p>try{</p> <p>return new ActiveXObject("Msxml2.XMLHTTP"); // MSXML3</p> <p>}catch(e){</p> <p>return new ActiveXObject("Microsoft.XMLHTTP"); // MSXML2まで</p> <p>}</p> <p>}else{</p> <p>return null;</p> <p>}</p> <p> </p> <p>}</p> <p>--></p> <p></script>



=====中略==== ここからフォーム



<form name="mail">

お名前:<input type="text" name="hito" />
返信先:<input type="text" name="from" />
件 名:<input type="text" name="subject">
<textarea name="honbun" cols="25" rows="10" ></textarea>
<input type="button" value="メッセージ送信" onClick="Sendmail();">

</form>

======以下略======

<メール送信PHPファイル>

mb_language("ja");

mb_internal_encoding("UTF-8");

$from = strip_tags($_POST['from']);

$honbun = strip_tags($_POST['honbun']);

$subject = strip_tags($_POST['subject']);

$hito = strip_tags($_POST['hito']);

$subject2 = "ホームページよりメールです";

$naiyo = $hito . "様よりメールです\n";

$naiyo .= "件名: ".$subject . "\n";

$naiyo .= "返信先: " .$from . "\n\n";

$naiyo .= $honbun;

//$naiyo = mb_convert_encoding($naiyo,"JIS");//文字化けしたらこれ

$result = mb_send_mail(aaaaaaaaaa@yahoo.co.jp',$subject2,$naiyo);//フォーム内容を送りたいメルアド

if($result){$result ="メールを送信しました。";}else{$result ="メールの送信に失敗しました";}

echo $result;


?>

すいません、javascript部分何回書き直しても変な文字はいるかも?

ぬかしてください

その他の回答4件)

id:asuka645 No.1

回答回数856ベストアンサー獲得回数97

ポイント26pt

質問が漠然としているため具体的なお答えができません。

問い合わせフォームの内容を受け取る方法は、大別して3つあります。

  1. 電子メールで受け取る。
  2. サーバにテキストファイルとして保存する。
  3. データベースに登録する。

1.の方法については「http://php.frogstone.jp/inquiry/index.html:title=PHPプログラム実習 お問い合わせフォーム」」が参考になります。

ただし、ご利用のシステムがメール送信サーバ(SMTP)をPHPから呼び出すことを許可している場合に限られます。

id:snoopy_japan

すみません、リンク先が消えているみたいなんですが、、

方法としては1のやり方がやりたいのです。。

またよっかったら教えていただきたいです。

2010/12/21 00:40:31
id:yossiy7 No.2

回答回数778ベストアンサー獲得回数96

ポイント26pt

フォームの作り方によりますが、大きく分けて2つあります。

(1)メールとして送る

(2)管理者にしか読むことが出来ないページに書き込む

(3)データベースに書きこむ

主に(1)だと思われますが、自分自身で昔cgiを組んで(2)(3)を作った事があります。そのサーバでsendmailの使用が禁止されていたからなのですが、今時のサーバであればsendmailは使えると思いますので、ほぼ(1)で出来ると思います。

---

具体的には、phpの具体的内容を見てみないと判断できませんが、どこかにメールアドレスを設定する欄が無いでしょうか。

そのメールアドレスに自分のメアドを設定しないと、当然自分のメアドにメールは届きませんよ。

id:nob0726 No.3

回答回数290ベストアンサー獲得回数3

ポイント16pt

作り方がわからないということなのですが、CGIの設置などはできますか?

おそらく、なかなか難しいことが多いと思うので、簡単なサービスを紹介します。

http://www.form-mailer.jp/

セキュリティなど安全面も安心で、フリーと、月額料金がかかるものがあります。

id:asuka645 No.4

回答回数856ベストアンサー獲得回数97

ポイント16pt

リンク先が消えているみたいなんですが、、

方法としては1のやり方がやりたいのです。。

申し訳ありません。誤字がありました。

PHPプログラム実習 お問い合わせフォーム」を参考にして下さい。

id:aug7251976 No.5

回答回数10ベストアンサー獲得回数4ここでベストアンサー

ポイント16pt

以前作った簡単なメールフォームはこんな感じです。

参考までどうぞ。

①フォームに記入して送信を押す

②javascriptでメールを送信してくれるPHPファイルに内容を送る。

※javascriptでおくらないと、ページがリロードされてしまうので・・こうしました。

③メール送信PHPファイルでメールを送る。

<HTML側>

===上略===ここから②のjavascript(headerか外部ファイル)===

<script type="text/javascript"></p> <p><!--</p> <p>function Sendmail(){</p> <p>var fm = document.forms['mail'];</p> <p>var from = fm.elements['from'].value;</p> <p>var subject = fm.elements['subject'].value;</p> <p>var hito = fm.elements['hito'].value;</p> <p>var honbun = fm.elements['honbun'].value;</p> <p>var alert_word ="";</p> <p>//フォームのエラーチェック。本当はメルアドの形式が正しいかもチェックした方がいい</p> <p>if(honbun =="" || hito =="" || from ==""){alert_word = "メール本文、送信者のお名前、返信先メールアドレスは必記入でお願いします!";}</p> <p>if(alert_word !=""){alert(alert_word);</p> <p>return;</p> <p>}</p> <p>//エラーがなかったらフォーム内容をクリア</p> <p>fm.elements['honbun'].value = "";</p> <p>fm.elements['from'].value = "";</p> <p>fm.elements['subject'].value = "";</p> <p>fm.elements['hito'].value ="";</p> <p>//PHP側に送る処理</p> <p>var req = "from="+from+"&subject="+subject+"&hito="+hito+"&honbun="+honbun;</p> <p>var xhrObj = createXmlHttpRequest();</p> <p>xhrObj.open("post","SendMail.php",false);//ここにメールを送るPHPファイルの場所を記入。左の場合同じディレクトリにある。</p> <p>xhrObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");</p> <p>xhrObj.send(req);</p> <p>var result = xhrObj.responseText;</p> <p>//PHP側の処理結果をアラーとする。「送信完了」OR「送信失敗」</p> <p>alert(result);</p> <p>}</p> <p>//Ajax </p> <p>function createXmlHttpRequest() {</p> <p>if(window.XMLHttpRequest){ // Firefox,Opera,Safari,IE7</p> <p>return new XMLHttpRequest();</p> <p>}else if(window.ActiveXObject){ // IE6</p> <p>try{</p> <p>return new ActiveXObject("Msxml2.XMLHTTP"); // MSXML3</p> <p>}catch(e){</p> <p>return new ActiveXObject("Microsoft.XMLHTTP"); // MSXML2まで</p> <p>}</p> <p>}else{</p> <p>return null;</p> <p>}</p> <p> </p> <p>}</p> <p>--></p> <p></script>



=====中略==== ここからフォーム



<form name="mail">

お名前:<input type="text" name="hito" />
返信先:<input type="text" name="from" />
件 名:<input type="text" name="subject">
<textarea name="honbun" cols="25" rows="10" ></textarea>
<input type="button" value="メッセージ送信" onClick="Sendmail();">

</form>

======以下略======

<メール送信PHPファイル>

mb_language("ja");

mb_internal_encoding("UTF-8");

$from = strip_tags($_POST['from']);

$honbun = strip_tags($_POST['honbun']);

$subject = strip_tags($_POST['subject']);

$hito = strip_tags($_POST['hito']);

$subject2 = "ホームページよりメールです";

$naiyo = $hito . "様よりメールです\n";

$naiyo .= "件名: ".$subject . "\n";

$naiyo .= "返信先: " .$from . "\n\n";

$naiyo .= $honbun;

//$naiyo = mb_convert_encoding($naiyo,"JIS");//文字化けしたらこれ

$result = mb_send_mail(aaaaaaaaaa@yahoo.co.jp',$subject2,$naiyo);//フォーム内容を送りたいメルアド

if($result){$result ="メールを送信しました。";}else{$result ="メールの送信に失敗しました";}

echo $result;


?>

すいません、javascript部分何回書き直しても変な文字はいるかも?

ぬかしてください

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません