2011-05-12 20 views
5

PHP oturum verilerini bir Apache sanal sunucusundan diğerine nasıl geçiririm? Şu anda Apache 2.2.17 ve PHP 5.3.3 çalıştırıyorum ve tek bir oturum açma uygulamasını yönetmek için bir ana bilgisayar kurdum ve bunu, ayrı uygulamaları çalıştıran diğer iki sanal ana bilgisayara iletmem gerekiyor. Bu, daha fazla geliştirmeyi düşündüğüm bir şeydir, ancak şimdilik oturum verilerini geçmek en kolayı olacaktır.Apache Sanal Sunucuları arasında Oturum Verileri Aktarımı

Şu anda bu kod TOA alt alan auth.domain.com ilk oturum oluşturur ve daha sonra (kesilmiş oldu) uygulaması arayüzüne app.domain.com geri kullanıcıyı geçirir:

$user = new User; 
    $user->set_user_session(); 
    Header("Location: $redirectURL"); 
    exit; 

sunucu tamamen kişisel olarak yönetilir, bu nedenle çoklu kullanıcı güvenliği bir endişe değildir. Ancak, herhangi bir güvenlik sorununu daha ötesinde görürse lütfen bize bildirin. Daha iyi bir metodoloji biliyorsanız, lütfen paylaşın ve daha fazla araştırma yapacağım. Yardımı takdir ediyorum.

cevap

3

Farkında olduğum kadarıyla, PHP oturumları (varsayılan olarak) sanal konak farkında değil: oturum kimliğini yeniden yönlendirmenin bir parçası olarak geçirmeniz ve ardından diğer sanal konakta ayarlamanız gerekir. Yani böyle bir şey:

$sessionid = session_id(); 
Header("Location: $redirectURL?session=$sessionid"); 
exit; 

Sonra yönlendirme hedefteki:

session_id($_GET['session']); 
session_start(); 

o deneyin ve bana nasıl çalıştığını bildirin.

+0

şimdi ve söner Çalıştırma ve eğer işe yarayıp yaramadığını biliyorsunuz. Teşekkürler! – crockpotveggies

+0

Elbette: 'session_id ($ _ GET [' session ']);' HERHANGİ seans verisine erişmeden önce arama yapmalısınız. – Femi

+0

Oturum kimliğini değiştirebiliyorum, ancak bazı nedenlerden dolayı oturum değişkenlerine erişemiyorum. Echo'ing session_id() tarafından doğrulandı ancak $ _SESSION [] değişkenini yankılamaya çalıştığımda ayarlanmadı. Bunu etkileyecek herhangi bir PHP ayarı var mı? – crockpotveggies

0

Paylaşılan Sessions Eğer alt alanlar (belirtilmemiş) oturum kimliği aralarında

session_set_cookie_params(0, '', '.domain.com');

bir çerez olarak geçirilir, böylece sadece domain çerez alanını ayarlamak mümkün olabilir bahsedecek olursak

yüzden, my.domain.com ve your.domain.com hem paylaşılan bir veritabanı veya Redis storag kullanabilirsiniz yerinde seçeneği ya ile .domain.com

için çerez alacağı paylaşılan oturum yönetimi için e. (Oturum depolama yoluyla sunucular arasında veri paylaşımında)

sürece oturum saklama yapılandırmaları tüm VMS için aynıdır.

  • dosya veya bellekte oturum depolama oturum kimlikleri aracılığıyla paylaşılan
  • MySQL Örnekleri edilecek
  • Aynı Sunucu aynı fiziksel makine üzerinde
  • İlgili konular