質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

解決済

2回答

9691閲覧

【PHP工房】送信完了画面がNotFoundになってしまう

141kanae

総合スコア28

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

0クリップ

投稿2015/06/29 07:21

編集2015/07/01 04:50

引用元サイトの記述

PHP工房【MailForm01】 http://www.php-factory.net/mail/01.php

とりあえずであればファイル内に受信するメルアドとサイトのトップページのURLを記述し、サーバーにアップすれば設置は完了です。
使うファイルはたった1つだけです。(mail.phpのみ)なので設置・管理が容易です

PHPを触るのは今回が初めてのド初心者なので、
有り合わせの物で作れればと思い、上記の物を利用しているのですが、
サンクスページへの移動がうまく行かない状態です。

確認画面までは動作するのですが、「送信する」のボタンを押すと
http://〇〇.jp/.php-bin/php」というURLで「Not Found ページがみつかりません」と表示されてしまいます。

lang

1//--------------------------- 必須設定 必ず設定してください ----------------------- 2 3//サイトのトップページのURL ※デフォルトでは送信完了後に「トップページへ戻る」ボタンが表示されますので 4$site_top = "http://www.○○.jp/〇〇/〇〇/〇〇.html";(※正規のTOPページではなくテスト用ページのURL) 5 6// 管理者メールアドレス ※メールを受け取るメールアドレス(複数指定する場合は「,」で区切ってください 例 $to = "aa@aa.aa,bb@bb.bb";) 7$to = "aa@aa.aa,bb@bb.bb"; 8 9//フォームのメールアドレス入力箇所のname属性の値(name="○○" の○○部分) 10$Email = "Email"; 11 12/*------------------------------------------------------------------------------------------------ 13以下スパム防止のための設定 14※有効にするにはこのファイルとフォームページが同一ドメイン内にある必要があります 15------------------------------------------------------------------------------------------------*/ 16 17//スパム防止のためのリファラチェック(フォームページが同一ドメインであるかどうかのチェック)(する=1, しない=0) 18$Referer_check = 0; 19 20//リファラチェックを「する」場合のドメイン ※以下例を参考に設置するサイトのドメインを指定して下さい。 21$Referer_check_domain = "〇〇.jp"; 22 23//--------------------------- 必須設定 ここまで ------------------------------------ 24 25 26//---------------------- 任意設定 以下は必要に応じて設定してください ------------------------ 27 28 29// 管理者宛のメールで差出人を送信者のメールアドレスにする(する=1, しない=0) 30// する場合は、メール入力欄のname属性の値を「$Email」で指定した値にしてください。 31//メーラーなどで返信する場合に便利なので「する」がおすすめです。 32$userMail = 1; 33 34// Bccで送るメールアドレス(複数指定する場合は「,」で区切ってください 例 $BccMail = "aa@aa.aa,bb@bb.bb";) 35$BccMail = ""; 36 37// 管理者宛に送信されるメールのタイトル(件名) 38$subject = "ホームページのお問い合わせ"; 39 40// 送信確認画面の表示(する=1, しない=0) 41$confirmDsp = 1; 42 43// 送信完了後に自動的に指定のページ(サンクスページなど)に移動する(する=1, しない=0) 44// CV率を解析したい場合などはサンクスページを別途用意し、URLをこの下の項目で指定してください。 45// 0にすると、デフォルトの送信完了画面が表示されます。 46$jumpPage = 1; 47 48// 送信完了後に表示するページURL(上記で1を設定した場合のみ)※httpから始まるURLで指定ください。 49$thanksPage = "http://www.〇〇.jp/〇〇/〇〇/〇〇/〇〇/〇〇.html";(テスト用URL) 50 51// 必須入力項目を設定する(する=1, しない=0) 52$requireCheck = 1; 53 54/* 必須入力項目(入力フォームで指定したname属性の値を指定してください。(上記で1を設定した場合のみ) 55値はシングルクォーテーションで囲み、複数の場合はカンマで区切ってください。フォーム側と順番を合わせると良いです。 56配列の形「name="○○[]"」の場合には必ず後ろの[]を取ったものを指定して下さい。*/ 57$require = array('お名前','Email'); 58 59 60//---------------------------------------------------------------------- 61// 自動返信メール設定(START) 62//---------------------------------------------------------------------- 63 64// 差出人に送信内容確認メール(自動返信メール)を送る(送る=1, 送らない=0) 65// 送る場合は、フォーム側のメール入力欄のname属性の値が上記「$Email」で指定した値と同じである必要があります 66$remail = 0; 67 68//自動返信メールの送信者欄に表示される名前 ※あなたの名前や会社名など(もし自動返信メールの送信者名が文字化けする場合ここは空にしてください) 69$refrom_name = ""; 70 71// 差出人に送信確認メールを送る場合のメールのタイトル(上記で1を設定した場合のみ) 72$re_subject = "送信ありがとうございました"; 73 74//フォーム側の「名前」箇所のname属性の値 ※自動返信メールの「○○様」の表示で使用します。 75//指定しない、または存在しない場合は、○○様と表示されないだけです。あえて無効にしてもOK 76$dsp_name = 'お名前'; 77 78//自動返信メールの冒頭の文言 ※日本語部分のみ変更可 79$remail_text = <<< TEXT 80 81お問い合わせありがとうございました。 82早急にご返信致しますので今しばらくお待ちください。 83 84送信内容は以下になります。 85 86TEXT; 87 88 89//自動返信メールに署名(フッター)を表示(する=1, しない=0)※管理者宛にも表示されます。 90$mailFooterDsp = 0; 91 92//上記で「1」を選択時に表示する署名(フッター)(FOOTER~FOOTER;の間に記述してください) 93$mailSignature = <<< FOOTER 94 95────────────────────── 96株式会社○○○○ 佐藤太郎 97〒150-XXXX 東京都○○区○○ ○○ビル○F 98TEL:03- XXXX - XXXX FAX:03- XXXX - XXXX 99携帯:090- XXXX - XXXX 100E-mail:xxxx@xxxx.com 101URL: http://www.php-factory.net/ 102────────────────────── 103 104FOOTER; 105 106 107//---------------------------------------------------------------------- 108// 自動返信メール設定(END) 109//---------------------------------------------------------------------- 110 111//メールアドレスの形式チェックを行うかどうか。(する=1, しない=0) 112//※デフォルトは「する」。特に理由がなければ変更しないで下さい。メール入力欄のname属性の値が上記「$Email」で指定した値である必要があります。 113$mail_check = 1; 114 115//全角英数字→半角変換を行うかどうか。(する=1, しない=0) 116$hankaku = 0; 117 118//全角英数字→半角変換を行う項目のname属性の値(name="○○"の「○○」部分) 119//※複数の場合にはカンマで区切って下さい。(上記で「1」を指定した場合のみ有効) 120//配列の形「name="○○[]"」の場合には必ず後ろの[]を取ったものを指定して下さい。 121$hankaku_array = array('電話番号','金額'); 122 123 124//------------------------------- 任意設定ここまで ---------------------------------------------

上記のコメント内に書かれている部分のみ設定を変更してあります。
$jumpPage = 1;の数値を0にしても、同じように「Not Found」が表示されます。

あと、関係ありそうなのは下記の部分なのですが、
ダウンロードしたPHPにも**「変更するのはコメントに書かれた"必須"という部分と、"任意"の部分だけでよい」**と書かれており、それ以外の部分なので変更する必要はないと認識しております…。

lang

1if(($jumpPage == 0 && $sendmail == 1) || ($jumpPage == 0 && ($confirmDsp == 0 && $sendmail == 0))) { 2 3/* ▼▼▼送信完了画面のレイアウト 編集可 ※送信完了後に指定のページに移動しない場合のみ表示▼▼▼ */ 4?> 5<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 6<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> 7<head> 8<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9<title>完了画面</title> 10</head> 11<body> 12<div align="center"> 13<?php if($empty_flag == 1){ ?> 14<h4>入力にエラーがあります。下記をご確認の上「戻る」ボタンにて修正をお願い致します。</h4> 15<div style="color:red"><?php echo $errm; ?></div> 16<br /><br /><input type="button" value=" 前画面に戻る " onClick="history.back()"> 17</div> 18</body> 19</html> 20<?php }else{ ?> 21送信ありがとうございました。<br /> 22送信は正常に完了しました。<br /><br /> 23<a href="<?php echo $site_top ;?>">トップページへ戻る&raquo;</a> 24</div> 25<?php copyright(); ?> 26<!-- CV率を計測する場合ここにAnalyticsコードを貼り付け --> 27</body> 28</html> 29<?php 30/* ▲▲▲送信完了画面のレイアウト 編集可 ※送信完了後に指定のページに移動しない場合のみ表示▲▲▲ */ 31 } 32} 33//確認画面無しの場合の表示、指定のページに移動する設定の場合、エラーチェックで問題が無ければ指定ページヘリダイレクト 34else if(($jumpPage == 1 && $sendmail == 1) || $confirmDsp == 0) { 35 if($empty_flag == 1){ ?> 36<div align="center"><h4>入力にエラーがあります。下記をご確認の上「戻る」ボタンにて修正をお願い致します。</h4><div style="color:red"><?php echo $errm; ?></div><br /><br /><input type="button" value=" 前画面に戻る " onClick="history.back()"></div> 37<?php 38 }else{ header("Location: ".$thanksPage); } 39} 40

サンプルファイルをそのままアップロードして検証してみたのですが、
それでも同じように送信完了画面だけ表示されない状況です。

原因がお分かりになる方いらっしゃいましたら、ご意見・ご教授頂けると助かります。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

以下の2つの理由が考えられます。

1.確認画面<form> タグのとび先指定
確認画面に、以下のようなformタグがあるかと思いますが、そのとび先が目的のphpを指しているか確認の必要があるかと思います。
※例えば、mail.phpを別の名称に変更していた場合、確認画面のフォームタグのとび先の変更を忘れがちです。

lang

1<form action="/demo/mail/MailForm01_02/mail.php" method="POST">

2.$sendmail が 0になっていないでしょうか?

ソースを見る限り、$sendmail=0、 $confirmDsp=1 の時、処理結果を何も表示しないような動きになっています。

投稿2015/06/29 07:39

KenjiObata

総合スコア440

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

141kanae

2015/06/29 08:40

1.確認画面<form> タグのとび先指定 について 確認画面の<form action="">部分のタグはPHPで下記のようになっており、 配布サイトで「編集してください」と指定されている箇所ではないのですが、 変更してしまって大丈夫なのでしょうか…?>< <form action="<?php echo h($_SERVER['SCRIPT_NAME']); ?>" method="POST"> 2.$sendmail が 0になっていないでしょうか? 質問に記載させていただた箇所に関してでしょうか? こちらも、必須と任意の設定箇所以外の項目ですが、変更した方がよいのでしょうか。
KenjiObata

2015/06/29 11:01

PHP工房から、メールフォームの一式をダウンロードし、$thanksPage の設定を行いテストしてみたところ、正しく送信完了画面が表示されました。 同じ現象を再現させてみようとしてみたところ、$thanksPage のパスをあえて間違えてみたところ、同様の現象が発生しました。 もし、1、2共にクリアであるならば、 具体的な $thanksPage の設定値と、 Not Foundになった時の具体的なURLを教えていただけないでしょうか? 質問文では、Not Found のURLが 「http://〇〇.jp/.php-bin/php」と 表記されていますが、そもそもこの時点で $jumpPage=0/$jumpPage=1 いずれの設定でもあり得ないURLになっているように思われます。 まず以下のテストをされることをお勧めいたします。 ①$jumpPage=0; に設定してみる デフォルトの送信完了画面が出るかどうか ② ①がOKならば、 $thanksPage= "http://www.yahoo.co.jp"; を設定し、送信完了後にヤフーが表示されるかどうかを確認。 ③ ②がOKならば、テストURLのトップページを指定し、送信完了後にトップページが表示されるかどうかを確認 ④ ②がNGならば、PHP工房より、再ダウンロードし、 $toの設定、 $jumpPage = 1; $thanksPage="http://www.〇〇.jp/〇〇/〇〇/〇〇/〇〇/〇〇.html"; に設定し該当のサンクスページをアップロードの上確認 ③、④共にNGであるならば、$thanksPage に設定したパスが間違っています。
141kanae

2015/06/30 01:46 編集

ご回答感謝致します。 ①は成功しましたが、他はすべてNot Foundになりました。 Not Found のURLも確認いたしましたが、記載された通りのURで間違いありませんでした…。 ちなみに、①で成功した際のメール送信が「$to」で設定したアドレスに届いていない状態です。 $thanksPage に設定したパスが間違っている可能性について心当たりがあるのですが、 FTPの最初の階層に「doc_root」というフォルダがあり、 その中にサンクスページ含め、サイトのHTMLなど一式が入っています。 何故か「doc_root」の階層だけ、URLを記述する際に「doc_root」を含めてしまうとエラーページが表示されてしまいます。 例) http://www.〇〇.jp/doc_root/〇〇/〇〇/〇〇/〇〇.html → エラー http://www.〇〇.jp/〇〇/〇〇/〇〇/〇〇.html → 正常に表示される 試しに「doc_root」を含めて反映させてみましたが、やっぱりNot Foundだったので、 関係ないかもしれないのですが、これが原因だったりしますでしょうか… 私自身が製作したサイトではなく、今回手をつけるまで4、5年放置されていたようなので、 もしかしてPHPのバージョンが合ってないという可能性もあるかもしれません…orz -------- $confirmDspを0(表示しない)に設定して、$jumpPageを有効にした所 サンクスページがきちんと表示され、メールも送信されてきました。 確認画面からの遷移がうまく言っていないみたいです…
KenjiObata

2015/06/30 02:42

doc_root は、お使いのサーバーで設定されている、ドキュメントが閲覧できるトップ位置のフォルダかと存じます。 http://www.〇〇.jp/index.html = doc_root/index.html = /index.html そのためパスにdoc_rootを含めてはダメかと思います。 又④がNGということは、修正をしていないサンプルすら動作しないサーバーということになります。差し支えなければ、どのサーバーをご利用されておられるか教えていただければ幸いです。
KenjiObata

2015/06/30 05:46

サーバーの仕様と、フォームの仕様を確認しましょう。 サーバーの仕様は、フォームの仕様を満たしております。 動作しないということは、設置、設定のいずれかに必ず不備があります。 現在の状況を整理すると、$confirmDsp=0; で動作した実績が出来たということですので、ほかに動く実績がないか、模索する必要がございます。 以下のURLから、再度ダウンロードし、doc_root の下に、testフォルダを作り、(doc_root/test/)サンプルの動作テストをしてみてはいかがでしょう。 http://www.php-factory.net/download_count/download.php?download=12 /test/ フォルダの中身 ------------------------- contact.html mail.php thanks.html(←オリジナルで作成したもの) ------------------------- 上記のような、単純な構成にしてまず動作テストをしてみてはいかがでしょう。 少なくとも、$confirmDsp=0; でメールが飛んだ実績があるのですから、そのメールフォームは、niftyで必ず動きます。 まずは、最小設定のみ行い、階層等は単純な状態にして動くことを確認しましょう。
guest

0

さくらサーバで確認画面→送信を押すとエラー(NOT FOUND、Internal Server Errorなど)、または「You don't have permission to access」(さくらサーバ共有SSLで確認)と表示される
http://www.php-factory.net/faq.php

上記を参考に修正したところ、うまく動作致しました。
さくらサーバーではないので、完全にスルーしておりました…。

KenjiObataさんには、本当に長々お付き合い頂き、感謝とお詫びを申し上げます…

投稿2015/07/01 04:42

141kanae

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問