Aynı etki alanındaki iki farklı oturumları olan

5 Cevap

Ben foo.com çalıştırın. Bir foo.com / bar ve diğer foo.com / örnek: Ben foo.com yaşayan iki farklı uygulamaları var. Ben onlar giriş yaparken kullanıcı hakkında bilgi izlemek için oturumları kullanabilirsiniz, ancak kullanıcı foo.com / örnek foo.com / bar giderse, foo.com / örnek kullanıcı foo.com / başladı oturumunu görür bar ve bu bilgileri kullanır. Benim soru nasıl iki farklı oturumları aynı anda her dizin için gidiyor olabilir, değil mi?

5 Cevap

Ayrıca aynı oturumu kullanın ama aramaya değişken isimlerini değiştirebilir.

Düzenleme: Maalesef bu sorunuza cevap ama alternatif bir çözüm verir vermez.

Session_start aramadan önce session_name aramalısınız. Bu oturum (varsayılan olarak bu PHPSESSID olduğu) tanımlamak için kullanılan tanımlama bilgisi adını ayarlar.

Her uygulama için farklı bir ad kullanın. Sen oturumda iç değişkenler ile karışıklık zorunda olmamalıdır.

Sen session_set_cookie_params etki alanını ayarlamak ve altında kaydedilecek oturumunda klasör için kullanmak mümkün olabilir. IE:

// Used on foo.com/example
session_set_cookie_params(86400, '/example');

// Used on foo.com/bar
session_set_cookie_params(86400, '/bar');

Başka bir çözüm etkili "example_" ile "bar_" ve foo.com / örnek foo.com / bardan tüm oturum değerlerini önceden bekleyen tarafından seans içinde bir ad alanı oluşturmak için.

Eğer sıkıcı olmaktan bu tutabilirsiniz yolu bir işlev veya sınıf yöntemi haline soyut bu işlevi olduğunu. Örneğin:

function set_session_value($key, $value) {

  //figure out which prefix to use by checking the current working 
  //directory, or whatever method you like. set $prefix equal to
  // "bar_" or "example_".

  $_SESSION[$prefix . $key] = $value;
}

Sonra bir eşleme fonksiyonu ile değerleri olsun.

Bunun ana avantajı size süre / örnek olarak kullandığınız hangi değişken isimleri düşünmek zorunda kalmamasıdır / bar programlama. Diğer Eğer oturum değerleri saklamak ne değiştirmeye karar verirseniz, kolayca tek bir yerde her şeyi değiştirebilir olmasıdır.

Ben bu eski olduğunu biliyoruz, ama birisi yardımcı olabileceğini düşündüm. Bu örnek bizim yönetici alanı için ayrı bir oturum ayarı nasıl gösterir.

if ( $_SERVER['REQUEST_URI'] == '/admin/' ):
    $session_name = 'session1';
else:
    $session_name = 'session2';
endif;
session_start( $session_name );