2016-04-12 10 views
0

私は自分のlocalhostで作業しています。そこには2つのアプリケーションがあります。PHPセッション変数を制限する

のは、URLがあるとしましょう:各アプリケーションはPHPを使用しているが自分のログインモジュールを持って

/localhostの/アプリケーション/ APP2

  • /

    1. はlocalhost /アプリケーション/ APP1ユーザーがアプリケーションにアクセスするのを制限または許可するためのベースのセッション。セッション変数の名前は同じです(つまりuid)。私が使っている方法は:

      しかし、私はしたくないapp2のセッション変数が動作しており、アクセス可能です。 app1で作成されたセッション変数のアクセシビリティを、他のセッション変数と干渉しないように制限するにはどうすればよいですか。

      私はこのHow to restrict a session to a directory only in PHP?を読んでいますが、これは私の場合は1つのディレクトリだけのため動作しません。

    +1

    セッションベースのアプリケーションプロパティ(例: '$ _SESSION ['current_app']')をアプリケーションベースで作成して確認することはできませんか? –

    +0

    これは実際に$ _SESSION変数をあなたのディレクトリに限定しているわけではありませんが、あなたはいつも$ _SESSION変数をこのように使い、残りは自分で処理することができます: $ _SESSION ['apps1'] ['uid']; $ _SESSION ['apps2'] ['uid']; – SamyQc

    +0

    @DavidWyly同じ名前を使用してセッション変数の範囲を制限することはできませんか? – void

    答えて

    1

    使用するセッションのために別の名前をオプションの配列(より多くの情報:http://php.net/manual/en/session.configuration.php)を使用してsession_start()を呼び出し、例えば:

    // App 1 
    session_start(['name' => 'Session1']); 
    
    // App 2 
    session_start(['name' => 'Session2']); 
    

    これは完全に分離セッションで最後に異なるセッションクッキーの名前とその結果。

    +0

    同じ名前を使用できず、セッション変数のスコープを制限できませんか? – void

    +0

    できません。完全に異なるセッション(異なるハッシュと異なるクッキー名を持つ)を持つことは、最高の(そして最も安全な)解決策です。 – Andreas