0

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

PHP の次のコードでは、警告が表示されます。

<?php
    if(!isset($_SESSION))
    {
        session_start();  // line 4
    }

    if(!isset($_SESSION['valid_admin']))
    {
        header("location:Login.php");  //line 9
    }
?>

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 9

Googleで検索したところ、ここで質問が見つかりましたが、そこに記載されている内容がまったくわかりません。どうすれば解決できますか?

[上記のコードを使用したアプリケーションは正常に動作していましたが、数日前にシステムがブルー スクリーン エラーでクラッシュし、別のバージョンの WAMP をインストールした場所に再インストールする必要がありました。これは問題ですか? ]

4

4 に答える 4

2
<?php
    session_start();

    if(!isset($_SESSION['valid_admin']))
    {
        header("location:Login.php");  //line 9
    }
?>

session_start() を呼び出さない限り、そのifステートメントでセッションが設定されることはありません

if ステートメントの前に session_start() を呼び出すと (そうする必要があるように)、条件は常に true になり、if ステートメントが役に立たなくなります。

したがって、session_start() を最初の if ステートメントの上に配置してから、最初の if ステートメントを削除できます。

于 2012-07-11T23:56:09.897 に答える
2

スクリプトの先頭でhttp://php.net/manual/en/function.ob-start.php関数を使用することもできます。

于 2012-07-12T00:05:26.163 に答える
1

まず最初に、ブラウザへの空白の出力を確認します。これは、目にすぐには見えません。

于 2012-07-11T23:56:25.560 に答える
1

session_start()関数を誤解しているようです:

session_start — 新しいセッションを開始するか、既存のセッションを再開します

最初に存在するかどうかを確認する必要はありません。

if(!isset($_SESSION['valid_admin'])){
    header("location:Login.php");  //line 9
} 

ノート:

PHP 4.3.3 以降、セッションが以前に開始された後に session_start() を呼び出すと、レベル E_NOTICE のエラーが発生します。また、2 回目のセッション開始は単純に無視されます。

警告メッセージに基づいて、次の 2 つのファイルがあります: Order.php& Lock.php. 投稿されたコードは、これらのファイルのどれにありますか? ファイルが含まれていると、出力が既に存在するために競合が発生する可能性があります。

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

于 2012-07-11T23:58:56.437 に答える