phpとperlでメールフォーム+DB登録機能を作成する方法

このQ&Aのポイント
  • phpとperlを使用してメールフォーム+DB登録機能を作成する方法について煮詰まっています。
  • 現在使用しているsend.cgiではメール送信ができますが、phpでDB登録ができません。
  • form.html→db.php→send.cgi→thanks.htmlまたはform.html→send.cgi→db.php→thanks.htmlの流れを実現したいと考えています。
回答を見る
  • ベストアンサー

phpとperlでメールフォーム+DB登録機能

phpとperlでメールフォーム+DB登録機能を作っていますが、 だいぶ煮詰まってしまいました。 ●設計概要 https://dl.dropbox.com/u/85274673/form.jpg ●参考にしたが解決しなかったURLの一部掲載 http://okwave.jp/qa/q3086758.html http://ml.php.gr.jp/pipermail/php-users/2003-October/019138.html ●使用しているsend.cgi(配布フリー) http://www.synck.com/contents/download/cgi-perl/mailformpro.html ●状況 cgi(perl)もしくはphpだけでdb登録+メール送信両方行うプログラムが 必要となりました。 php単体でdb登録+mb_send_mailをスクラッチで書いてうまくいったと思ったのですが、 ユーザー側に送るメール内容(本文)と管理者側に送るメール内容(本文)を 分けることができず、現状使っているsend.cgiでメール送信し、phpでDBに登録 はできないかと思い、調べながらやってみました。 (cgi(perl)はphp以上に完全素人なので、dbへの登録を行うプログラムが書けませんでした。) form.html→db.php→thanks.html from.html→send.cgi→thanks.html は問題なく動作しました。 設計の通り 1. form.html→db.php→send.cgi→thanks.html もしくは 2. from.html→send.cgi→db.php→→thanks.html を実現したいと思っています。 $_POSTの値さえ渡せれば 1.は実現できそうなのですが、話はそう単純ではないのでしょうか。 ヒントでも貰えれば幸いです。宜しくお願いいたします。

  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 1,2ヶ月がじっくり腰を据えてなのか、ほかの仕事の合間なのかにもよりますが、やる気次第だと思います。 良い機会ですので一つ一つクリアしていけるように勉強しては如何でしょうか。 (perlでもPHPでも良いですが) メールを送る機能の要件を満たしているのであればperlでのDB登録を勉強するのが早いでしょう。 perlでmySQLへの接続等 http://tech.bayashi.net/pdmemo/perl_dbi_mysql.html (他のDBでも大差ないと思います)

goojyakuma
質問者

お礼

phpのライブラリ、qdmailをカスタマイズして、 何とかphpのみで要件を満たせました。 お二方ともありがとうございました。

goojyakuma
質問者

補足

ありがとうございます。 DBはmySQLです。 プログラマではないので、片手間になります。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 >ユーザー側に送るメール内容(本文)と管理者側に送るメール内容(本文)を分けることができず、現状使っているsend.cgiでメール送信し、phpでDBに登録 こっちを実現できる方向で検討したほうがスマートだと思います。 (一つのスクリプトでDB登録、ユーザ側、管理者側メール内容の区分け) 下記サイトを参考にしてみてください。 http://www.programming-magic.com/20080226023511/

goojyakuma
質問者

補足

回答ありがとうございます。 スマートに実現したいのはやまやまですので、phpのみで頑張ってみたいと思います。 しかし、サイトを拝見させてもらいましたが、 なかなか理解できません。。。 他の方法としても、 qdmail等のライブラリを使う等色々方法はあると思うのですが、 うまくいかなくて、 やはりphp1、2ヶ月程度のレベルでは難しいのでしょうか。。。

関連するQ&A

  • メール送信フォーム

    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で動作確認しています。流れといたしましては index.php(登録作業)→check/php(入力された内容の確認、よければ登録)→thanks.php(会員登録完了) という流れなのですが check.phpで「登録」を押してもthanks.phpに飛びません。 MYSQLのmemberテーブルには[id].[nama].[email].[password].[created].[men].[redy]とフィールドを入れています。データベースにはうまく接続されているみたいなのでcheck.phpがおかしいのでしょうか? ソースはこちらです <?php session_start(); require('../dbconnect.php'); if(!isset($_SESSION['join'])){ header('Location: index.php'); exit(); } if(!empty($_POST)){ //登録処理をする $sql = sprintf ('INSERT INTO member SET nama="%s", email="%s", password="%s",created="%s"', mysqli_real_escape_string($db, $_SESSION['join']['nama']), mysqli_real_escape_string($db, $_SESSION['join']['email']), mysqli_real_escape_string($db, sha1($_SESSION['join']['password'])) ); mysqli_query($db, $sql) or die(mysqli_error($db)); unset($_SESSION['join']); header('Location: thanks.php'); exit();} ?> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <form action="" method="post"> <dl> <dt>ユーザー名</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['nama'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>メールアドレス</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['email'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>パスワード</dt> <dd> 【表示されません】 </dd> </dl> <div><a href="index.php?action=rewrite">&laquo;&nbsp;書き直す</a> <input type="submit" value="登録する"></div> </form> </body> </html> その他なにか解決方法があればご指摘いただければ幸いです。 どうかよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • フォームメールから本文なしのメールが届く

    メールフォームから時々以下のような本文なしのメールが届きます。 これはなんでしょうか? 2012-09-05 08:20:35 HOST NAME / IP ADDRESS / 188.143.232.211 USER AGENT / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) HTTP REFERER / メールフォームは以下のCGIを使っています。 http://www.synck.com/contents/download/cgi-perl/mailform.html

    • ベストアンサー
    • CGI
  • PHPのメールフォームが動かない!

    プログラム言語はまったく初めてのPHP初心者です。 いきなり会社関係のサイトを管理する事になり サーバを移転したらメールフォームが動かなくなってとても困っています。 (前々任者が作ったPHPスクリプトなので、前任者もよくわかっていません) 状態は、フォームを送信すると、真っ白な画面になって何も表示されず、メールも送信されません。 移転前のサーバではちゃんと稼働していたらしいのですが… 書き替えたのはPHP本体のmailの送信先アドレスと、HTMLのaction=の後の本体スクリプトのアドレスだけです。 <form name="form1" method="post" action="./form.php"> mail関数は下のようになっています mail($mail,$subject,$message,$from,"-finfo@****.com"); include(THANKS); } 同じサーバにある、PHPの掲示板はちゃんと普通に稼働しています。 それから、いろんな初心者サイトを巡ってみたのですが、 スクリプト本体に、まだよく解らない構文もあります。 構文の一番最初が <?php $date = date ("Y-m-d"); になっているのですが、これは何をする構文でしょう? 前任者は「前のサーバで稼働していたから、サーバの問題じゃないか」 と、言っているのですが、もしそうならサーバの何が問題なのでしょう? なにしろスクリプトなどいじったこともない初心者なので、 わからない事だらけでとても困っています! 質問ばかりになってしまいましたが、どなたかよろしくお願いします!!

    • 締切済み
    • PHP
  • 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
  • Perl or PHP?

    最近はやり?の自宅サーバーを立てようかと思っているのですが、PerlかPHPどちらを使うか悩んでいます。 主に、掲示板やカウンター、できたらWikiのようなことをしたいと考えているのですが、PerlとPHPどちらを使ってプログラミングするべきでしょうか? それとも、どちらも使ったほうが、より効率的なプログラミングができるのでしょうか? PerlやPHPは個人的にですが、かじったことがあります。また、WebサーバーはApache、DBはMySQLでOSはFedoraCoreを予定しています。 Perlでも、PHPでも、CGIプログラムって作れますよね? どちらが利便性がよいのか、サーバーに負荷がかからないのか等、開発者側に立った意見をお待ちしています。

    • ベストアンサー
    • CGI
  • PHPでメールフォームを作るのは一般的なのですか?

    サイトでメールフォームや掲示板を作りたいと思い、CGI(Perl)の本を買って読んでみたのですが、C言語を少しやっていた私としてはPerlの記述が少々身に合わないと思いました。 そこで、PHPでも同じようにメールフォームや掲示板というのは一般的に使われているのでしょうか?勉強する上でPerlでメールフォームや掲示板という参考書はたくさんあったのですが、私の通っている本屋ではPHPでそのような本がありませんでした。 いずれデータベースもやりたいと思い、またC言語っぽいPHPのほうが勉強しやすいと思い、PHPでメールフォームなどを作りたいのですが、Perlとの違いや注意点などありますか? またお勧めのPHPの書籍やサイトを教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • CGI(Perl)でメールフォームを作ったのですが

    CGI(Perl)でメールアドレス、名前、内容のメールフォームを作ったのですがうまくいきません。 http://homepage.biglobe.ne.jp/errorpage/500.html CGIプログラムのエラーが発生しました。 原因 CGIプログラムの実行に問題があります。 まれに、予期しないサーバのエラーが原因でこのメッセージが出る場合があります。 と表示されます。 CGIのプログラムを作る前はHTMLだけで作っていました。 <form action="mailto:メールアドレス"~ メールアドレスを非公開で送信するには。

    • ベストアンサー
    • Perl
  • PHPからのメールがこない

    #! /usr/local/php4/bin/php<? //各種初期設定 $from="info@demo.net"; //送信元 $dest="info@demo.net"; //宛先 $header="From: $from\nReply-To: $from"; //ヘッダ $subject="お問い合わせ"; //件名 //エラーがない場合のみメール送信 if($result=="flash"){ // 文字コードの変換 mb_convert_variables("EUC-JP", "JIS, SJIS, UTF-8", &$SUBJECT, &$COMPANY, &$PERSON, &$EMAIL, &$URL, &$COMMENT); //言語を日本語に設定 mb_language("Japanese"); $message="省略"; //メールを送信する mb_send_mail($dest, $subject, $message, $header); // FlashのAns = Sender.Answer; に'Complete' を返す print "Content-type: text/plain\n\n"; print "Answer=Complete"; } ?> というFlashと連動するPHPなのですが、 メール送信完了と表示されるのにメールがきません。 どなたかお分かりになるかた是非教えて下さい。 利用サーバー環境は OS Linux (Fedora Core 3) PHP PHP-4.3.11 (CGI版) Perl Perl-5.8.5 です。よろしくお願いします。

    • ベストアンサー
    • PHP
  • メールフォームが動いてくれない。

    初心者ながら以下のようなメールフォームを書いたのですがうまく動いてくれません。どうしてなのでしょうか? ----hoge.php---- <?php $mail = $_POST['mail']; $address = $_POST['add']; if(empty($mail)){ $1 = "入力してください。"; }elseif(empty($address)){ $2 = "入力してください。"; }else{ //メール送信 echo("送信しました。"); exit; } ?> <form action="hoge.php" method="post"> E-mail <inputtype="text" name="add"><?=$1?> Message <input type="text" name="mail"><?=$2?> <input type="submit" value="send!!"> </form> ----- 一応、メールアドレスや本文が未入力の場合、エラーメッセージを出すようにしています。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう