PHPについて質問です。

メールフォームを作成しました。

http://oskuni7.sakura.ne.jp/yahoo1.php

確認ページも作成したのですが確認ページでエラーが発生してしまいます。

http://oskuni7.sakura.ne.jp/yahoo2.php

どの様なエラーかというとメールフォームを記入して送信するボタンを押すと次の確認ページで空白のページが表示されてしまうエラーです。

【コードを載せてみました。】

メールフォームのページ : http://oskuni7.sakura.ne.jp/yahoo1.txt

メールフォーム確認のページ : http://oskuni7.sakura.ne.jp/yahoo2.txt

プログラム初心者です。コードの書き方でもう少しこうしたらいい等のアドバイスがありましたらよろしくお願いいたします。

なるべく分かりやすく簡潔にプログラムがかけるようになれたらいいと思っています。

コツなどもご教授いただけると嬉しいです。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/04 14:33:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント50pt

どの様なエラーかというとメールフォームを記入して送信するボタンを押すと次の確認ページで空白のページが表示されてしまうエラーです

"yahoo2.php" の HTML ヘッダの title タグの位置が間違っています。

	<META http-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>メールフォーム内容確認</title>

title タグに日本語が含まれていますから、文字コードセットの後に指定しなければなりません。


その他、DOCTYPE の指定や、空白がないなどが気になりますが、typo でしょうか。

正しくは、こんな感じになるのではないかと思います。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>メールフォーム内容確認</title>
</head>

プログラムが巨大なので、ここで細かく添削する余裕はありませんが、1つだけ気になったことを――$_SESSION変数を使う必要はあるのでしょうか。$_POST変数だけでやり繰りできているように思えるのですが。

id:aiomock

ご回答ありがとうございます。

変更して実行してみました。

しかし今度はwebサイト側でページを表示できないというエラーが出てきました。

自分でももう少し問題解決に当たってみたいと思います。

2008/09/02 21:45:42

その他の回答1件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633ここでベストアンサー

ポイント50pt

どの様なエラーかというとメールフォームを記入して送信するボタンを押すと次の確認ページで空白のページが表示されてしまうエラーです

"yahoo2.php" の HTML ヘッダの title タグの位置が間違っています。

	<META http-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>メールフォーム内容確認</title>

title タグに日本語が含まれていますから、文字コードセットの後に指定しなければなりません。


その他、DOCTYPE の指定や、空白がないなどが気になりますが、typo でしょうか。

正しくは、こんな感じになるのではないかと思います。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>メールフォーム内容確認</title>
</head>

プログラムが巨大なので、ここで細かく添削する余裕はありませんが、1つだけ気になったことを――$_SESSION変数を使う必要はあるのでしょうか。$_POST変数だけでやり繰りできているように思えるのですが。

id:aiomock

ご回答ありがとうございます。

変更して実行してみました。

しかし今度はwebサイト側でページを表示できないというエラーが出てきました。

自分でももう少し問題解決に当たってみたいと思います。

2008/09/02 21:45:42
id:hackshonn No.2

回答回数104ベストアンサー獲得回数1

ポイント20pt

既製のものをそのまま利用してはどうでしょうか?

id:aiomock

考えて見ます。ありがとうございます。

2008/09/04 12:02:44
  • id:pahoo
    > しかし今度はwebサイト側でページを表示できないというエラーが出てきました

    ローカル環境でのテストはしていますか?
  • id:kou32rr
    まずはシンプルなものから進めていくと問題点が分かりますよ。
    いきなりたくさんのコードを見るのはきついです。

    POSTではなくSESSIONの受け渡しがしたいようであれば、
    単純にそれだけで動かしてみると良いと思います。
  • id:aiomock
    pahooさん

    ご回答ありがとうございます。

    ローカル環境整えました。

    エラーですが

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\CDSITE\sites\yahoo1.php:1) in C:\Program Files\CDSITE\sites\yahoo1.php on line 147

    Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\CDSITE\sites\yahoo1.php:1) in C:\Program Files\CDSITE\sites\yahoo1.php on line 440


    のようなセッションでのエラーでした。
    プログラムの順番は間違っていないと思うのですが、、今一度考えてみようと思います。
  • id:aiomock
    kou32rr さん

    ご回答ありがとうございます。

    分割して処理をするとは考えにありませんでした。

    貴重なアドバイスありがとうございます。
  • id:yellow_73
    "output started at C:\Program Files\CDSITE\sites\yahoo1.php:1" となっているので、1行目で既にHTTPヘッダを出してしまっている状態ですね。
    もしかしてBOMつきUTF-8にしているのが原因とか?
  • id:aiomock
    yellow_73 さん

    BOMつきUTF-8が原因でした。ありがとうございます。

    UTFにUTF-8Nがあるという事を知りませんでした。

    無事解決しました。ありがとうございます。

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

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

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

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