今まで仕事でサイトを作る時、お問い合わせフォームはフリーのお問い合わせフォームCGIをカスタマイズしてましたが、wordpressをやるようになりphpの勉強もする様になったので、今回はphpで作ろうと思いやってみましたがうまくいきません。
送信ボタンを押して「送信ありがとうございました」となりますが、実際に送信はされません。
制作中のお問い合わせフォームhttp://glossy-wax.com/contact.htmlcss等の見た目は、まだです。
※初めて作りましたので、そのほかにも何かご指摘あればよろしくお願いします。自分でもぼんやりな所があります。
contact.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<h1>お問い合わせフォーム</h1> <form name="input_form" action="confirm.php" method="post"> <table> <caption>以下の項目に入力して下さい。</caption> <tr> <th>お名前(必須)</th> <td><input type="text" name="your_name"></td> </tr> <tr> <th>お名前カナ</th> <td><input type="text" name="kana"></td> </tr> <tr> <th>ご住所</th> <td><input type="text" name="address"></td> </tr> <tr> <th>TEL(必須)</th> <td><input type="text" name="tel"></td> </tr> <tr> <th>メールアドレス(必須)</th> <td><input type="text" name="mail"></td> </tr> <tr> <th>お問い合わせ内容(必須)</th> <td><textarea name="inquiry" rows="3" cols="30" ></textarea></td> </tr> </table> <input type="submit" value="送信"> </form> |
confirm.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
<h1>お問い合わせフォームの確認</h1> <?php function pr( $string ){ if( empty( $string )){ return; } print( htmlspecialchars( $string, ENT_QUOTES)); } $is_error = false; print( '<font color="red">' ); if( empty( $_REQUEST["your_name"])){ print( 'お名前が未入力です。<br />'); $is_error =true; } if( empty( $_REQUEST["tel"])){ print( '電話番号が未入力です。<br />'); $is_error =true; } if( empty( $_REQUEST["mail"])){ print( 'メールアドレスが未入力です。<br />'); $is_error =true; } if( empty( $_REQUEST["inquiry"])){ print( 'お問い合わせ内容が未入力です。<br />'); $is_error =true; } print('</font>'); ?> <table> <caption>以下の内容を確認して下さい。</caption> <tr> <th>お名前(必須)</th> <td><?php pr( $_REQUEST["your_name"]); ?></td> </tr> <tr> <th>お名前カナ</th> <td><?php pr( $_REQUEST["kana"]); ?></td> </tr> <tr> <th>ご住所</th> <td><?php pr( $_REQUEST["address"]); ?></td> </tr> <tr> <th>TEL(必須)</th> <td><?php pr( $_REQUEST["tel"]); ?></td> </tr> <tr> <th>メールアドレス(必須)</th> <td><?php pr( $_REQUEST["mail"]); ?></td> </tr> <tr> <th>お問い合わせ内容(必須)</th> <td><?php print( nl2br( htmlspecialchars( $_REQUEST["inquiry"], ENT_QUOTES ))); ?></td> </tr> </table> <form name="input_form" action="thanks.php" method="post"> <input type="hidden" name="your_name" value="<?php pr( $_REQUEST["your_name"]); ?>" /> <input type="hidden" name="kana" value="<?php pr( $_REQUEST["kana"]); ?>" /> <input type="hidden" name="address" value="<?php pr( $_REQUEST["address"]); ?>" /> <input type="hidden" name="tel" value="<?php pr( $_REQUEST["tel"]); ?>" /> <input type="hidden" name="mail" value="<?php pr( $_REQUEST["mail"]); ?>" /> <input type="hidden" name="inquiry" value="<?php pr( $_REQUEST["inquiry"]); ?>" /> <?php if( $is_error == false ){ print( '<input type="submit" value="送信" class="Btn-gray button"/>'); } ?> </form> |
thanks.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?php mb_language("Ja"); mb_internal_encoding("UTF-8"); $from = "Form: [Form:info@nobu-69.com]"; $to = " [info@nobu-69.com]"; $subject = "お問い合わせを受け付けました。"; $contents = <<< EOF 以下のお問い合わせを受け付けました。 ■お名前 {$_REQUEST["your_name"]} ■カナ {$_REQUEST["kana"]} ■ご住所 {$_REQUEST["address"]} ■TEL {$_REQUEST["tel"]} ■メールアドレス {$_REQUEST["mail"]} ■お問い合わせ内容 {$_REQUEST["inquiry"]} EOF; mb_send_mail($to, $submit, $contents, $form); ?> <h1>お問い合わせフォーム</h1> <p>送信ありがとうございました。</p> |
解決しました!
thanks.phpの5,6,7行目が間違えていました。
間違い
1 2 3 |
$from = "Form: [Form:info@nobu-69.com]"; $to = " [info@nobu-69.com]"; $subject = "お問い合わせを受け付けました。"; |
正解
1 2 3 |
$from = "From:info@nobu-69.com"; $to = "info@nobu-69.com"; $subject = "お問い合わせを受け付けました。"; |
[…..]←このカッコが不必要でした。本を見ながらやっていたのですが、このカッコは、この中に任意のものを入れて下さいという意味のカッコでした。(一言書いてくれればいいのになぁ)
先生、ありがとうございました。
テスト中は、自分で受け取れるメールアドレスを設定しておくといいでしょう。
後でクライアントのメールアドレスに差し替えます。
テスト送信してどうなったのか、教えて下さい。
あと、このコードを書くのに参考にしたサイトや本があるなら、
それも明記しておくと読む人の参考になるので、お願いします。
送信ボタンを押して「送信ありがとうございました」となりますが、実際に送信はされません。と、記事の本文にあるように
送信されません。テスト送信先のメアドはinfo@nobu-69.comです。(僕のメアド)
メールを開いてチェックしても着信がないようです。多分メールが送られていないと思います。
コードの書き方が違うのかなあ。
参考書http://www.shuwasystem.co.jp/products/7980html/3509.html
とりあえず、thanks.phpの最後、
mb_send_mail($to, $submit, $contents, $form);
の部分を、
$ret = mb_send_mail($to, $submit, $contents, $form);
if( !$ret ){
echo( “メール送信エラー” );
}
にすれば、send_mailが成功したか失敗したか分かると思います。
参考
http://blog.livedoor.jp/kumagai_nori/archives/52268912.html
ピンバック: 2013-6-28 勉強会 | パソコン倶楽部りんご
ピンバック: phpでお問い合わせフォームを作る。そして確認画面から最初の編集画面に戻る際に入力したテキストをクリアーしないようにするには。 | パソコン倶楽部りんご