PHP oturum çatışmaların önlenmesi

3 Cevap php

Geçenlerde girişleri app yoktu kullanıcıların yerel ısmarlama bilet sistemi göstermek istiyorum ilginç bir hata üzerine tökezledi. Bazı çevresinde alay sonra bu ve aynı sunucu üzerinde çalışan başka bir PHP uygulaması hem doğrulama amaçlı $ _SESSION ['user'] kullanılarak fark etti. Birisi bir sistem kullanılır ve sonra başka birini açtığında o "otomatik olarak" ilk app bir kullanıcı olarak oturum açmış.

Zorunlu Facepalm sonra bu durdurmak için sistemlerin birinde oturum değişken adını değiştirdi. Ancak ben gelecek projelerde bu önlemek için benim oturum taşıma sınıfına kalıcı, sıfır bakım değişiklik yapmak gerekir. Bu alışkanlık başka bir uygulama tarafından kullanılıyor $ _SESSION bir yerde bir uygulamanın değişkenlerini koymak için benzersiz bir değer (örneğin script yolu) kullanılarak yapılabilir rakam.

Daha iyi bir yolu var mı?

Düzenleme: Bu linux üzerinde. Ve her iki apps aynı web sitesinde bulunmaktadır.

3 Cevap

Sen Oturum çerezleri emin örneğin, etki ve çerezleri yolu restrictively ayarlandığını yaparak uygulamaya özgü olacak emin olabilirsiniz http://www.example.com/apppath bir uygulama için, aşağıdakileri yapabilirsiniz:

<?php

$currentParams = session_get_cookie_params();

session_set_cookie_params($currentParams['lifetime'], '/apppath/', 'www.example.com', $currentParams['secure'], $currentParams['httponly']);

session_start();

Bu sağlam, diğer oturum ayarlarını bırakacaktır.

Yol varsayılan PHP sitesi (bence) üzerinde istenen etki için çerez verecek, belki önemli biri, bu yüzden muhtemelen aslında varsayılan olarak etki alanı parametresi bırakabilir.

Her uygulama sadece kendi yolu için geçerli bir oturum çerezi böylece çerez yolunu ayarla.

Sen session_set_cookie_params çağrısı ile yapabilirsiniz.

Bu hosting gelince, o ziyade sunucu üzerinde saklayarak veritabanında oturum kimliğini saklamak için iyidir, veritabanında oturumları id saklamak için nasıl kullanılabilir malzemelerin yeri vardır, her zamankinden daha periyodik açmış kullanıcı oturum kimliği olabilir değişiyor Ayrıca securtiy geliştirmek ve çatışmaları azaltır.