0

PHP セッションでデータが削除され、ログイン ページにリダイレクトされるという問題が発生しています。

これは、上から見たディレクトリ構造です。


  1. ログイン // ログイン/ログアウトするためのファイルが含まれています
  2. メイン // ログインしたユーザー向けのページが含まれています
  3. index.php // 完全に機能するフォームのログイン画面

ログインディレクトリ: check_login.php

メインディレクトリ: page1.php、folder1、および folder2

フォルダー 1: home.php、include1.php

フォルダー 2: include2.php

(これが非常に理解しにくい場合は申し訳ありません)


これは、check_login.php にログインするときに実行するコードです。

session_start();
$_SESSION["id"] = $id; 
header("location:../main/page1.php"); //into main directory

すべてのページには同じスタイル (見出し、ナビゲーション、フッター) が含まれており、ページごとに変化する 1 つのメイン コンテンツ ブロックがあるため、表示するコンテンツに応じて、folder1 と folder2 に含まれる include を使用します。デフォルトでは、home.php は、folder1 にあるホームページに含まれています。他のページでは、include1.php や include2.php などのインクルードを使用しており、どちらのフォルダーからでも取得できます。

page1.php の上部:

session_start();
if($_SESSION["id"] == '')
{
header("location:../index.php");
}

page1.php から、folder1 にあるインクルードを含むページに移動すると、これは正常に機能します。ホームに戻ると、folder1 にもインクルードされますが、これは正常に機能します。どちらの場合も、セッションから id 変数を読み取ることができます。

ただし、folder2 にインクルードがあるページに移動すると、ログイン ページにリダイレクトされます。

何か案は?

4

2 に答える 2

0

私はこれを解決しましたが、私の愚かさが信じられません。

別のページへのリンクをエコーし​​ていたインクルードの 1 つで、これは間違っていて、実際にはずっと私のログイン ページを指していました。現在、すべてが正常に機能しています。すべての助けに感謝します。典型的な男子生徒の間違い。

于 2013-04-28T11:21:37.473 に答える
0

常にセッションの開始を含める必要があります。これに対する適切なアプローチは、セッションに依存する拡張する各ファイルの先頭に include_once できる header.php または bootstrap.php などを作成することです。そうすれば、適切に機能するだけでなく、コードがよりクリーンで管理しやすくなります。

于 2013-04-27T23:41:18.133 に答える