人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\htdocs\regist.php:7)
in C:\Program Files\xampp\htdocs\regist.php on line 28

というエラーが表示されます。
line28には
header("Location: home.php");
と記載しております。
記述に問題はないように思うのですが
何か問題なのかがわかりません。
どなたかアドバイスいただければと思います。

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:28 AT HOME ON PHP
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● いのくに
●19ポイント

line28 の

header("Location: home.php");

よりも前の行にて、既に何かを出力しているため、header 関数が使えないという意味のエラーです。


http://jp2.php.net/header

覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 頻出するエラーとして、include() または require() 関数、他のファイルをアクセスする関数に 空白または空行があり、header() の前に出力が 行われてしまうというものがあります。同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。

◎質問者からの返答

なるほどそういうことなんですね。

現在別のファイルから来たデータをテキストに書き込んでから

Locationで元のページに飛ばそうと思ったのですが

そうなるとLocationは使えないのでほかの方法で元のページに戻る必要があるということですね。

ですがheaderの前になにかあると使えないということは

結構使用できる場面というのは限られてきそうですね。

何かいい案があればいいんですが・・・。


2 ● b-wind
●19ポイント

ですがheaderの前になにかあると使えないということは

何も出来ないわけではありません。

ユーザーに対して出力できないだけで、裏で何か(ファイルに書き込み等)する分には問題ありません。


header の前に echo で出力をしていたり、PHP の開始タグ

<?

の前に空白等が入っていませんか?


また、header で飛ばしてから色々する分にも特に問題はありません。

◎質問者からの返答

空白行とかそのあたりはないですね。

念のためにエラーが出るファイルの中身を

header("Location: home.php");

?>

の3行だけにしてもエラーが出ます。

ますますわからないです・・・


3 ● Paul
●18ポイント

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\htdocs\regist.php:7)

in C:\Program Files\xampp\htdocs\regist.php on line 28

以下訳

警告:header情報を変更することは出来ません - ヘッダー情報は以下で既に送信済みです。(出力がC:\Program Files\xampp\htdocs\regist.php:7 で開始されています。)

C:\Program Files\xampp\htdocs\regist.php on line 28

でのエラーです。

という訳で、C:\Program Files\xampp\htdocs\regist.phpの7行目をコメントすればエラーは出なくなる。


直すとすれば、手っ取り早いのは、

  1. 28行目を7行目の前に持ってくる。
  2. 7行目を29行目以降に書く。
◎質問者からの返答

ありがとうございます。

7行目には

//説明

しかないので削ってみましたが

特に変化はありませんでした。

headerはあきらめてJavascriptか何かで

飛ばそうかと考え中です。


4 ● kn1967
●18ポイント

headers_sentを使って『本当にヘッダが既に返されているのか?』を調べてみてはどうでしょう。

http://search.net-newbie.com/php/function.headers-sent.html

◎質問者からの返答

ありがとうございます。

これで送られているかそうでないかの判断をつけることができます。

参考にさせていただきます。


5 ● chankaz
●18ポイント

確か「Location:」で飛ばす場合は、完全なURLでないとダメ(= 相対パスではダメ)だったような気がします。

<?php
header("Location: http://example.com/home.php");
?>

ではどうでしょうか。

(上記「example.com」の部分は実際のドメインに置き換えて下さい)

◎質問者からの返答

ためしにフルパスでやってみましたが

やはりダメでした。

1から作成してみようかと思います。

ありがとうございました。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ