3

重複の可能性:
PHPによってすでに送信されているヘッダー

ログアウトphpファイルで問題が発生してsession_start()います。header('Location:')

HTMLファイルの単純なアンカータグを使用してログアウトファイルにリンクしています。ログアウトphpファイルはこれです:

<?php
session_start();
session_destroy();
header("Location: index.php");
?> 

私が使用したエラーがどこにあるかを確認するには、

error_reporting(E_ALL);
ini_set('display_errors', '1');

4行目(の場合)に「警告:session_start():セッションキャッシュリミッターを送信できません-ヘッダーは既に送信されています」という警告が表示されsession_start();、警告:6行目(の場合)にヘッダー情報を変更できませんheader('Location')

私は同様の問題を抱えている他の人を探しました。の前に空白がないことを確認しましたsession_start()。その前には何も出力されていません。session_start()まだ設定されていない場合にのみ設定してみました。でバッファリングしてみましたob_start()。念のため、リダイレクトの相対パスと絶対パスを試しました。しかし、何も機能していません。

私は何かが足りないのですか?どんな助けでも大歓迎です。

4

4 に答える 4

8

BOMをチェックしてください

http://en.wikipedia.org/wiki/Byte_order_mark

notepad++で-エンコーディング->BOMなしのutf8

編集

コメントするだけです-exitを使用する必要があります。http://php.net/manual/en/function.header.phpで推奨されているように、header( "Location ...")の後に他に何も実行されないようにします

于 2012-12-16T14:17:06.397 に答える
0

場合によっては、終了?>タグがこの問題の原因であることがわかっています。PHPだけを含むファイルでは、?>ほとんどの場合、headers already sent問題を削除することで解決しました。

于 2012-12-16T14:19:30.610 に答える
0

PHP * session_destroy()*は問題の一部にすぎません。また、$_SESSION配列からデータを明示的に削除する必要があります。また、Cookieをクリーンアップする必要がある場合もあります。ブラウザの複数のインスタンス(ウィンドウまたはタブ)を同時に開いている場合、これを正常にテストすることはできません。それらはすべて同じCookie jarを共有しているため、同じPHPセッションを共有しています。

あなたはこのリンクを読むことができるかもしれません:http: //www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_2391-PHP-login-logout-and-easy-access-control.html

このコードは、ログアウトの良い例です。

<?php
session_start();
// CLEAR THE INFORMATION FROM THE $_SESSION ARRAY
$_SESSION = array();

// IF THE SESSION IS KEPT IN COOKIE, FORCE SESSION COOKIE TO EXPIRE
if (isset($_COOKIE[session_name()]))
{
   setcookie(session_name(), '', $cookie_expires, '/');
}

// TELL PHP TO ELIMINATE THE SESSION
session_destroy();

// SAY GOODBYE...
echo "YOU ARE LOGGED OUT$uid.  GOODBYE.";

// OR REMOVE THE GOODBYE MESSAGE AND ACTIVATE THESE LINES TO REDIRECT TO THE HOME PAGE
// header("Location: /");
// exit;
于 2012-12-16T14:25:13.733 に答える
-3

これをコピーして貼り付けます

<?
session_start();
session_unset();
session_destroy();
ob_start();
header("location:home.php");
ob_end_flush();
exit();
?>
于 2012-12-16T14:30:14.007 に答える