PHPのtxtファイルの使い方について

このQ&Aのポイント
  • PHPでお問合せフォーム(メールフォーム)を作成する際に、txtファイルを使って「お礼メール」の定型文を管理したいと考えていますが、txtファイルの扱い方がわかりません。
  • 現在、PHPでお問合せフォームを作成していますが、お礼メールの定型文をtxtファイルで管理したいと思っています。しかし、txtファイルの扱い方がうまくいきません。
  • PHPを使用してお問合せフォームを作成していますが、お礼メールの定型文をtxtファイルで管理したいと考えています。しかし、txtファイルの扱い方について詳しく知りたいです。
回答を見る
  • ベストアンサー

PHPのtxtファイルの使い方について

今、PHPでお問合せフォーム(メールフォーム)を作っています。 そこで、よくある「お礼メール」の定型文を、txtファイルで管理しようと考えています。 でも、txtファイルの扱い方がどうもうまくいきません。 あてもなく、「file_get_contents」や「preg_replace」を使って いろいろやってみましたが、どうしてもうまくいきませんでした。 もし、PHPでのtxtファイルの使い方について、ご存じの方がいましたらご教示ください。 ============================================== お問合せフォームの、大まかな流れとしては下記の通りです。 ------------------------------- 1)入力  ・名前・メアド・問合せ内容を入力  ↓ 2)確認  ・入力内容をチェック  ↓ 3)完了  ・入力された内容をメールで送信。 ------------------------------- とりあえず、上記1)~3)までは出来ました。 ============================================== ============================================== 実現したいのは下記のようなことです。 下記のようなtxtファイル(お礼メールの定型文)を 準備しておいて・・・ -[お礼メールの定型文]------------ お問合せありがとうございます。 入力内容は下記の通りです。 【お名前】 {@name} 【メールアドレス】 {@mail} 【お問合せ内容】 {@body} ------------------------------- {@name} と {@mail} と {@body} の部分に フォームに入力された内容が、自動で入るようにして お礼メールが送信されるようにしたいと考えています。 ============================================== ※{@***}という記述のしかたについては特に意味はありません。 ※特にこだわっているわけではありませんが、  txtファイルだと管理が簡単そうな感じがしたので  txtファイルにしようと思っています。 どうぞよろしくお願いいたします。

  • PHP
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.3

内容は .txtで良いのですが、拡張子を .pl とかにして、requireするのはどうでしょうか。 .plの記述内容は、 <?php $my_msg = 'お礼メールの定型文'; ?>

okfish
質問者

お礼

回答ありがとうございます。 確かにtxtファイルで、中身を検索して置換すより、 phpファイルで変数に代入したほうが、簡単な感じですね。 この方法も試してみます。

その他の回答 (3)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.4

どのように記述して「うまくいかなかった」のでしょうか? テキストファイルの名前をmessage.txt、POSTされた名前やメールアドレスや本文を$name,$mail,$bodyに格納しているとして、 $mailbody = file_get_contents('message.txt'); $mailbody = str_replace('{@name}', $name, $mailbody); $mailbody = str_replace('{@mail}', $mail, $mailbody); $mailbody = str_replace('{@body}', $body, $mailbody); とすれば、いいように思います。 なお、message.txtはphpスクリプトと同じ文字コードという前提です。違っている場合(phpがEUC-JPもしくはUTF-8でテキストファイルがSJISなど)はmb_convert_encodingを通してください。

okfish
質問者

お礼

ご回答ありがとうございます。 特定の文字列を一つずつ変換していく方法もあるのですね。 参考になりました。 ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

単純な変数の置き換えならこんな感じでも 配列とかも処理したい場合は結構めんどうです //mail.txt 【お名前】 {@name} 【メールアドレス】 {@mail} 【お問合せ内容】 {@body} //mail.php <?php $name="hoge"; $mail="fuga@exsample.com"; $body="testtesttest"; $pattern='/{@(.+?)}/e'; $replacement="isset($\\1)?$\\1:''"; $str=file_get_contents("mail.txt"); $str=preg_replace($pattern,$replacement,$str); print $str; ?>

okfish
質問者

お礼

回答ありがとうございます。 教えていただいたやり方でできました。 ありがとうございます。

回答No.1

なにがどううまくいかないのか良くわかりませんので基本的なことを書かせていただきます。 1.たとえば、あとで入れ替えたい部分を %body% などと書いておいたテキストファイルを用意しておき 2.file_get_contents()でそのテキストファイルを文字列として取り込んでおき、 3.str_replase()で%body%を別の文字列に置換 4.こんな風にして最終的に置換し終わった文字列をメールで送信 以下に真似できそうな関数使用例がありますので参考になれば。 http://php.net/manual/ja/function.str-replace.php

okfish
質問者

お礼

回答ありがとうございます。 file_get_contents() でできました。 私のやり方が間違っていたみたいです。 ありがとうございます。

関連するQ&A

  • phpで書き出したtxtをflashで読み込みたい

    phpを使ってtxtファイルを生成し、それをphpのダイナミックテキストに反映したいと思っています。 ■PHP <html> <body> <form method="post" action="rei.php"> <input type="text" name="moji"> <input type="submit" value="送信"> </form> <?php $moji = $_POST['moji']; if($moji){ $fp = @fopen("test.txt", "a") or die("Error!\n"); fputs($fp, $moji); fclose($fp); print "書き出し成功。"; } ?> </body> </html> ■Flash 1フレーム目に以下のように記述。 System.useCodepage = true; loadVariablesNum("test.txt", 0); 現在上のような表記でつくっています。 test.txtファイルにはすでに文章がかかれてあり、その続きからフォームに入力したテキストが反映されるかたちです。 結果、1回目は反映されるのですが、2回目を試し、Flashの方の再読み込みしても新しく書き出したはずのデータが反映されません。 test.txtへの書き出しはうまくいっているのですが、Flashへきちんと読み込まれていないようです。 これは一種の更新ツールとして使いたいので、何度も書き出しできるようにしたいのです。 どのあたりに問題があるかご指摘いただきたいです。 どなたかご指摘いただければと思います。どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • PHPによる問い合わせフォームのデーターの受け渡し

    Webサイトを作成しており、現在は問い合わせフォームに取り組んでおります。 そこで、問い合わせフォームで入力したデータを送信した後の、確認画面が上手くできません。 PHPのファイルには以下のように記載しました。 しかし、実際のブラウザの問い合わせフォームのページから送信ボタンを押しても、全く何も表示されておりません。真っ白のままです。 そういえば、問い合わせフォームのページ全体のデザインのまま、データを引き継ぐにはどうしたら良いのでしょうか? PHPファイルに何か特別なコードを記載する必要があるのでしょうか? ちなみに、htmlファイルとphpファイルのhead情報は同じです。 何かアドバイスをして下さる方、お願いします!! <?php $name=$_POST['name']; if($name=='') { print'入力されておりません。'; } else { print $name; } ?>

    • ベストアンサー
    • PHP
  • PHPについて(初心者)

    はじめまして、PHPの初心者の者です。xamppをインストールしたあと、様々な設定をしました。その後、お問い合わせフォームというプログラムのために2つファイルを作りました。 一つ目は、inquiery.htmlというファイルで、ソースコードは <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title>お問い合わせフォーム</title> </head> <body> ■お問い合わせ内容を入力してください。 <br> <form action="check_inquiry.php" method="POST"> お問い合わせタイトル: <br> <input type="text" name="title" size="50"> <br> <br> <input type="submit" value="お問い合わせ内容の確認"> </form> </body> </html> というHTMLファイルで、入力した内容を、下の「check_inquiry.php」に飛ばします。その後、 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>お問い合わせフォーム</title> </head> <body> ■お問い合わせ内容を確認してください。 <br> お問い合わせタイトル: <br> <?php echo $_POST['title']; ?> </body> </html> check_inquiry.phpファイルでinquiry.htmlファイルの内容を受け取ります。 うまくいけば、$_POST['title' ]: でinquiry.htmlの内容を受け取るはずなのですが、うまくいきません。 inquiry.htmlの送信ボタンをクリックすると、check_inquiry.phpのソースコード全体が表示されてしまいます。 何が間違っているのかわかりません。もし、詳しい方がいましたら、アドバイスいただけないでしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • phpのメール送信での質問になります

    メールとお問い合わせ内容は届くのですが、名前とアドレスが届かないので間違っている箇所を教えていただけるとありがたいです。 以下コードになります。 html <body> <main> <section> <h2>お問合せ内容の確認</h2> <form action="mailto.php" method="post"> <div class="contant-area"> <div class="label-container"> <label class="item intem-name">名前</label> <label class="item item-email">メールアドレス</label> <label class="item item-message">問い合わせ内容</label> </div> <div class="text"> <p class="item-post" name="name"><?php echo $_POST["name"]; ?></p> <p class="item-post" name="email"><?php echo $_POST["email"]; ?></p> <textarea class="item-post item-textarea" name="message"><?php echo $_POST["message"]; ?></textarea> </div> </div> <div class="button-area"> <input type="submit" value="送信"> </div> </form> </section> </main> </body> php <?php // フォームデータの取得 $name = $_POST[&#039;name&#039;]; $email = $_POST[&#039;email&#039;]; $message = $_POST[&#039;message&#039;]; // 送信先のメールアドレス $to = &#039;*****@gmail.com&#039;; // 件名 $subject = &#039;お問い合わせがありました&#039;; // メール本文 $body = "名前: $name\n"; $body .= "メールアドレス: $email\n"; $body .= "問い合わせ内容:\n$message"; // 送信元のメールアドレスと名前 $from = &#039;*****1690.xsrv.jp&#039;; $fromName = &#039;お問い合わせフォーム&#039;; // ヘッダー $headers = "From: $fromName <$from>"; // メール送信 $mailResult = mail($to, $subject, $body, $headers); ?>

    • ベストアンサー
    • PHP
  • PHPで内容確認画面表示後メールに内容が届かない

    PHPを独学で勉強中なのですが、フォームで入力した項目(名前、住所、メールアドレスなど)をPHPで作成した確認画面に内容を反映後、その内容をメールで送信すると内容は送信されてなくメールフォームだけが送信されてしまいます?? 確認画面の内容と同じ文を送信送信して、メールの本文に確認画面と同じ内容をいれるにはどうすればいいのでしょうか?教えてください。よろしくお願いします。 流れ 入力画面(inquiry.html) ⇒ 確認画面(sendmail01.php) ⇒ 送信画面(sendmail02.php) 各画面のソースを一部掲載しました。 【入力画面】 <form action="sendmail01.php" method="POST" name="fmck" onSubmit="return checkSB()"> <tr> <td width="130"><div align="center">氏名</div></td> <td width="430"><input type="text" name="name" size="25" class="zenk1"> ※必須事項</td> </tr> <tr> <td width="130"><div align="center">住所</div></td> <td width="430"><input type="text" name="address" size="60" class="zenk1"> ※必須事項</td> </tr> <tr> <td colspan="2" height="50"><div align="center"><input type="submit" value="入力内容のご確認">   <input type="reset" value="入力内容のクリア"></div></td> </tr></form> 【確認画面】 <tr> <td width="130"><div align="center">氏名</div></td> <td width="430"><?php echo $_POST["name"] ?></td> </tr> <tr> <td width="130"><div align="center">住所</div></td> <td width="430"><?php echo $_POST["address"] ?></td> </tr> <tr> <td colspan="2" height="50"> <form action="sendmail02.php" mane="fmck" method="POST"><div align="center"><input type="submit" value="送信する">    <input type="button" value="前画面に戻る" onClick="history.back()"></div></form></td> </tr> 【送信画面】 // メールを送信するアドレス設定(複数指定する場合は「,」で区切る) $to = "abc@yahoo.co.jp"; // 送信するメールの件名を設定 $subject = "メールフォームお問い合わせ"; // メール本文のヘッダーを設定 $body = "###### お問い合わせ ######" . "\n\n"; // 送信結果をお知らせする変数を初期化する $message = ''; // 投稿内容の取得 $name= $_POST["name"]; $address= $_POST["address"]; // メールのレイアウトの編集 $header = "From:" .$name ." <" .$email .">"; $body .= "お問い合わせがありました。対応よろしくお願いします。" ."\n\n"; $body .= "送信日時:". date( "Y/m/d (D) H:i:s", time() ) ."\n\n"; $body .= "----- お問い合わせ情報 -------------------------" ."\n"; $body .= "■氏名:" .$name ."\n"; $body .= "■フリガナ:" .$address ."\n"; if (mb_send_mail($to,$subject,$body,$header)) { $message = "メール送信は無事に終了しました。 お問い合わせありがとうございました。"; } else { $message = "メール送信は失敗しました。"; }

    • 締切済み
    • PHP
  • PHPに関して質問です

    簡単な問い合わせフォームを作っていますが HTMLページで入力した文章がPHP画面で表示できません。 ソースは <html> <head> <meta http-equiv="Content-Type" content="text/html; charset_JIS"> <tittle>お問い合わせフォーム</tittle> </head> <body> ■お問い合わせ内容を入力してください。 <br> <form action="check_inquiry.php" method="POST"> お問い合わせタイトル: <br> <input type="text" name="tittle" size="50"> <br> <br> <input type="submit" value="お問い合わせ内容の確認"> </form> </body> </html> と <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <tittle>お問い合わせフォーム</tittle> </head> <body> ■お問い合わせ内容の確認をしてみてください。 <br> お問い合わせタイトル: <br> <?php echo $_POST["tittle"]; ?> </body> </html> どこが問題なのでしょうか?

    • 締切済み
    • PHP
  • 問い合わせフォームからPHPを使って、、、、、

    問い合わせフォームからPHPを使って指定のアドレスにメールを送ろうとしているのですが、届きません、、、、、、 原因が分かりません。助けていただけないでしょうか。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>お問い合わせページ</title> <link rel="stylesheet" href="styles.css"> </head> <body> <h1>お問い合わせページ</h1> <form action="send_email.php" method="post"> <label for="name">お名前:</label> <input type="text" id="name" name="name" required><br><br> <label for="email">メールアドレス:</label> <input type="email" id="email" name="email" required><br><br> <label for="message">お問い合わせ内容:</label><br> <textarea id="message" name="message" rows="4" cols="50" required></textarea><br><br> <input type="submit" value="送信"> </form> </body> </html> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 以下がPHPのプログラムです。 <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $email = $_POST["email"]; $message = $_POST["message"]; // 送信先のメールアドレス $to = "***@gmail.com"; // 件名 $subject = "お問い合わせがありました"; // 本文 $body = "お名前: $name\n"; $body .= "メールアドレス: $email\n\n"; $body .= "お問い合わせ内容:\n$message"; // メールを送信 mail($to, $subject, $body); // 送信後のリダイレクト header("Location: thank_you.html"); exit; } ?>

    • 締切済み
    • PHP
  • ファイルにコーテーション類を書き込む方法

    HTMLのフォーム(Textarea)で入力したテキストを そのまま、ファイルに書き込みたいです。 (正式にはHTMLエディタのようにしたいです) 以下のソースのように作成しましたが、 シングルコーテーションやダブルコーテーションが ファイルに書き込まれる時に¥がついてしまいます。 ================== 入力フォーム =================== <html> <body> <form name='fm' action='fsave.php' method='post'> <textarea name='txt' rows='20' cols='40'> </textarea> <input type='submit' value='ファイル保存'> </body> </html> ================== fsave.php =================== <?php $txt = $_REQUEST["txt"]; $fp = fopen("sample.html","w"); fwrite($fp,$txt); echo "ファイル書き込み完了"; ?> =============== TEXTAREAへの入力値 =================== <a href='aaa.html'>LINK </a> =============== sample.htmlの中身 =================== <a href=\'aaa.html\'>LINK </a> シングルコーテーションやダブルコーテーションを フォームからPHPに渡して、ファイルに書き込むには どうすればよろしのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • php

    テキストに入力した文字を送信後 data.txtの空のファイルに保存する方法はどういった文でかけますかね? phpです

    • ベストアンサー
    • PHP
  • PHPのメールフォーム(お問合せフォーム)について

    PHPのメールフォーム(お問合せフォーム)について 今、PHPでメールフォームを作っています。 (よくあるお問合せフォームです。) 書籍やウェブサイトを参考に 見よう見まねで、一通り作ってみました。 ただ、メールフォームを作るのは初めてなので 自分が作ったのものが公開できるレベルなのか (一般的なレベルに達しているかどうか)不安な感じです。 そこで、メールフォームについて詳しい方いらっしゃいましたら メールフォームを作る際に、押さえておくポイントについて 箇条書きで構いませんので、簡単に教えていただけないでしょうか。 例えばこんな感じで↓ ------------------- ・データの受け渡しはセッションを使う ・入力されたデータは必ずチェック ・Nullバイト攻撃対策をする ・セッションハイジャック対策する -------------------- ■私が作ってみたメールフォームの入力項目は下記のとおりです。 ------------------- <入力項目> 名前 電話番号 郵便番号 住所 メールアドレス メールアドレス(確認のため2回入力) お問合せ内容 ------------------- ■流れとしては下記のとおりです。 ------------------- 1)入力画面 ↓ 2)確認画面 ↓ 3)完了画面 ↓ 4-1)サイト運営者に入力内容が記載されたメールを送信。 4-2)ユーザーにサンクスメールを送信。 -------------------

    • ベストアンサー
    • PHP

専門家に質問してみよう