1

2 つのセッションのユーザー名とパスワードを登録するログイン ページがあります。次に、別のページにリダイレクトします。このページに一度

$_SESSION['username'] = "";
$_SESSION['password'] = "";

ログインチェックの後、次のページでセッションが登録されているかどうかを確認します

session_start();

if(isset($_SESSION["username"]){


continue

}else go back to login page

ログインしたら、セッション変数が設定されているかどうかに応じて、ページに異なるものを表示する別のページに移動したいと思います。

だから私がしているギャラリーページで

私がするページの一番上に

<?php 
session_start();

?>

次に、ボタンを配置する場所をさらに下に移動します

<?php
if (isset($_SESSION['username'])){


show a new button

}

?>

ボタンを表示しますが、ページの上部に

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

そして、私のページがどのように表示されるかを台無しにします。何か案は?session_start(); があります。ページの冒頭で、なぜこれが起こっているのかわかりません。何か案は?

私の session_start() がある場所

4

4 に答える 4

3

を呼び出す前に何かがブラウザに出力されると、そのエラーが発生しますsession_start()。たとえば、次のことはできません。

<?php

echo "Test";

session_start();

次のこともできません。

 <?php session_start();

( の前のスペースに注意してください<?php)

呼び出しの前に、HTML、空白行、スペースなど何も書き出されていないことを確認してください。問題ありません。session_start()

于 2012-04-12T18:36:55.277 に答える
1

の前に何もないこと(空白、UTF-8 BOM)を確認する必要があります<?phpsession_start()これは、通話前に含めるすべてのファイルにも適用されます。

于 2012-04-12T18:36:20.760 に答える
0

ギャラリー ページは別のファイルに含まれていますか?

<?php

// lots of php code

include('/path/to/gallery.php');

?>

session_start(); の前に何かがブラウザに送信されている場合。このエラーが発生します。

于 2012-04-12T18:37:47.640 に答える
-1

セッションはヘッダーです。出力の後にヘッダーを送信することはできません (単一のスペースであっても)。2 つのオプションがあります。任意の出力の前に session_start() を配置するか、出力バッファリングを使用することもできます。これにより、出力後にヘッダーを送信できます。

これをスクリプトの先頭に配置します

ob_start();

そして最後にこれ

echo ob_get_clean();
于 2012-04-12T18:45:35.417 に答える