0

重複の可能性:
PHP によって既に送信されたヘッダー

環境

  • アパッチ 2.2.22
  • PHP 5.4.4
  • MAC OSX ライオン

免責事項

私は PHP とコミュニティ全体に非常に慣れていないため、まだ自分のやり方を学んでいます。

目的

非常に具体的な URL にリダイレクトします。

コード

以下に含めた独自の MVC ハンドラーを作成しました。現在の特定の状況を処理しようとしていuser/loginますが、ログイン後にホームページにリダイレクトしたいので、home/index. これを行うには、(かなりの検索の後)リダイレクトする正しい方法は、次のコマンドを発行することだと思いました:

header("Location: http://$host$uri/$controllerName/$action");

URL が正しいことを確認しました (たとえば、URL をアドレス バーに入力すると機能します) が、何らかの理由でブラウザーが応答しません。

誰かが私を正しい方向に向けることができますか?

アップデート

以下は、私が受け取っているエラーです。

警告: ヘッダー情報を変更できません - 70 行目の /Applications/MAMP/htdocs/test/core/bootstrap.php の (/Applications/MAMP/htdocs/test/core/bootstrap.php:66 で開始された出力) によって既に送信されたヘッダー

そして、ここに66行目があります:

if ($_SERVER['DEBUG']) { echo "<br/>$url ..."; }

それで、それが表示されることを試みる前に何も出力できないのですか?

4

1 に答える 1

2

出力が開始される前にのみ、ヘッダー情報を変更できます。ヘッダーの変更をスクリプトの先頭に配置してみてください。機能します (これらの変数が設定されていると仮定します)。

66 行目には、おそらくechoコマンドまたは何らかの HTML があります。

PHPマニュアルから:

実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から header() を呼び出す必要があることに注意してください。include 関数、require 関数、または別のファイル アクセス関数を含むコードを読み取り、header() が呼び出される前に出力されるスペースまたは空の行があることは、非常に一般的なエラーです。単一の PHP/HTML ファイルを使用する場合にも、同じ問題が存在します。

于 2012-12-17T02:06:21.543 に答える