質問

私、私は維持していると私はこれが一点に働いていることが確認きたPHPのウェブサイトを持っています。

私たちは$_SESSION['user']変数にユーザーの情報でログインして保存するログインシステムを利用し、ウェブサイトを持っています。クリックしたときに使用されるサイトにユーザーをログアウトするには、の/logout.php の本質的セッションの一部は、その後、ホームページにリダイレクトさheader()ことを取り除いています。

session_start()はデバッグ目的で出力することに使用されたときに、最近のように、

、上部にprint_r()の/logout.php のファイルが何らかの形でセッション情報が表示されません。

私は別のページに行けば、私はではなく、それはアクセス可能ではないので、私は、セッション情報を削除することができない理由を正確にあるログアウトページ...で、うまくセッション情報を参照してください。

私は、ブラウザを閉じるまで$_SESSIONは、サイト上のグローバルなと思いました。私はそれはそれは私にセッションデータが表示されないということ奇妙なので、これが起こると私はセッションのインスタンスは、このページを開始した知っていたことがありません。

任意のアイデア?私は完全にこの1に困惑!

コード:/logout.php

<?
#session_start() is inside this file
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');

unset($_SESSION['user']);
header("location: /");
exit();
?>
別のものを必要なときに $_SESSION['user']のチェックは、その下のさまざまなアイテムにサイト全体およびI呼び出しです。他の誰かがこのサイトを構築し、それが突然彼らのために働いていない理由を私はデバッグしようとしています。

役に立ちましたか?

解決

あなたは(すなわち、example.com対www.example.com/logout.php)で始まるようにセッションを設定することをのとまったく同じのドメイン

からlogout.phpにアクセスしています

ちょうど未設定、特定のセッションデータについては、それがsession_destroy()を呼び出して、セッションを殺すためにあなたのクッキーの設定を解除するのがベストでしょう。

他のヒント

ドメイン/サブドメインは、ページの残りの部分と同じである場合、私は典型的なセッション対出力誤差のようなこの音だと思います。あなたはすべてのエラーを有効にしていることを確認し、そしてあなたがsession_start()を呼び出す前に、クライアントへの出力を印刷したかもしれないとして、それらを表示します。これは、関数を破ると、セッションが使用できなくなっています。

(それはケースの場合)

この問題を解決するには、あなたはsession_start前にすべての出力を削除する必要があります。 <?php前であってもスペースは、Apache(およびその他)での出力とみなされます。また、確認してくださいあなたは、ドキュメントに無効BOM(バイトオーダーマーク)を持っている(いずれかのまともなエディタでは、この、「現在のファイルsetings」のようなもののためだけの外観を変更できます)。

は、必ずあなたのPHPコードの最初の行はsession_start();と他には何もする必要があります覚えておいてください。あなたがやろうとしてすべてのセッション変数の設定を解除し、セッションを破棄した場合、require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');を削除してみてくださいlogout.phpファイルの末尾にsession_start()とsession_destroy()を追加し、それが動作するかどうかを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top