0

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

あるページから別のページ (php) に変数を渡そうとしているときに問題に直面しています (jquery を使用して) アクセスすると、ページ 1 が自動的にページ 2 をロードします。ページ 2 を適切に機能させるには、2 つの変数を渡す必要があるため、次のようにします。

on Page 1:
session_start();
$_SESSION['username'] = $username;
$_SESSION['user_id'] = $user_id;

on Page 2:
session_start();
$username = $_SESSION['username'];
$user_id = $_SESSION['user_id'] ;

最初のロードでは、機能しません。リフレッシュすれば、すべて問題ありません。別のコンピューターに移動するか、現在のブラウザーのキャッシュをクリアすると、同じ問題が発生します。最初の読み込みでは機能しません。リフレッシュした後は、すべて問題ありません。

エラー ログ メッセージ:

[01-Oct-2012 20:02:59] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /public_html/php/info.php:1) in /public_html/php/info.php on line 26

誰かがこの問題の原因を知っていますか?

4

2 に答える 2

0

古典的なheaders already sentエラー*(コメントに見られるように)。問題は、 (他の可能な出力メソッドの中でも)通常のHTMLsession_start()を介して、または通常のHTMLを介して何かを出力した後で呼び出していることです。echo

session_start()呼び出しを両方/すべてのページのスクリプトの一番上に移動すると、問題が解決するはずです。

*headers already sentエラーは、私が言ったように、ヘッダーを送信する前にページにデータを出力しているためです。Webアプリケーションでは、データ/コンテンツを出力する前に、最初にすべてのヘッダー(セッションヘッダーを含む)を送信する必要があります。

于 2012-10-02T02:12:07.987 に答える
0

セッション処理には Cookie が必要です (サーバーの構成によっては例外もあります)。また、他の情報が送信される前に、ヘッダーで Cookie が送信されます。

表示されるエラー メッセージは、session_start(); を実行する前に一部のコンテンツが送信されたことを示しています。

通常の容疑者の 1 つは、行 1 の開始 PHP タグ (<?php) の前に空白行があることです。

詳細については、この質問を参照してください。

于 2012-10-02T02:12:29.653 に答える