0
function sec_session_start() {
$session_name = 'exon_id_sessfval';
$secure = false;
$httponly = true;
ini_set('session.use_only_cookies', 1);
$cookieParams = session_get_cookie_params(); 
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
session_name($session_name);
session_start();
session_regenerate_id();
}

上記の次のコードは、最初の行で ob_start() を使用して問題を無視しようとしても、session_start() に関連してヘッダーが既に送信されたという警告を生成します。

次のようなページで呼び出されます。

<?php 
include('./inc/sessions.php');
sec_session_start();
header("Location: index.php");

何かアドバイス?もちろん、ユーザーがログインしていることを確認するためにヘッダーが論理演算子に含まれていますが、何も出力していません。トレースバックは session_start() に来るので、クッキーのみのセッションと関係があると思います。

警告: session_start(): セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (/customers/b/ の /customers/b/2/5/edited.com/httpd.www/beta/login.php:1 で開始された出力) 2/5/edited.com/httpd.www/beta/inc/sessions.inc.php 11 行目

警告: session_regenerate_id(): セッション ID を再生成できません - ヘッダーは既に /customers/b/2/5/edited.com/httpd.www/beta/inc/sessions.inc.php の 12 行目に送信されています

警告: ヘッダー情報を変更できません - /customers/b/2/5/ の (/customers/b/2/5/edited.com/httpd.www/beta/login.php:1 で開始された出力) によって既に送信されたヘッダーedit.com/httpd.www/beta/login.php 13行目

4

3 に答える 3

2

明らかに、ファイルの 1 つの上に出力があり、含まれているファイルの 1 つにある可能性があります。上記のすべて<?phpが出力と見なされます。

「何でも」とは、HTML、テキスト、スペース、タブ、BOM (バイト オーダー マーク)、Cookie などです。

于 2013-09-06T19:35:01.463 に答える
1

はい、確認しました。

Notepad+++ で Encoding UTF-8 without BOM を選択すると、問題は解決しました。

ありがとう。

于 2013-09-06T19:33:49.307 に答える
0

ob_start();スクリプトの先頭に置きます。出力バッファリングを有効にするため、スクリプトが終了するまで (またはバッファを手動でフラッシュするまで) 何も出力されません。

また、任意の文字 (スペース、改行などを含む) が出力と見なされることも覚えておいてください。PHP ファイルの最初の文字は<?php.

于 2013-09-06T19:34:02.220 に答える