Bir özel oturum işleyici kullanımda olduğunda nasıl PHP'nin Varsylan oturumunda bir değer alabilirim?

1 Cevap php

Ben bir oturum değeri PHP'nin varsayılan oturum işleyicisi kullanarak saklandığı olmayan bir CMS sayfa var. yani:

session_start();
$_SESSION['MyVar'] = true;

CMS parçası olan bir başka sayfasında, ben değişken doğru olup olmadığını test etmek gerekir. Ancak, CMS kendi oturum işleyicisi bulunuyor kullanır, bu yüzden değişken okumaya çalıştığınızda CMS oturum depolama sistemi değil, PHP'nin varsayılan bunun için arıyor, çünkü, tanımlanmamış olması.

Nasıl Bir an için geçiş ve varsayılan oturum depodan bir değer okumak, ve sonra doğru fonksiyonları böylece CMS yeniden?

Gibi bir şey:

$SessionHandler = session_get_current_handler(); // save the CMS session handler
session_use_default(); // Use PHP's default handler
$Value = $_SESSION['MyVar']; // Get the value I need
session_set_handler($SessionHandler); // Restore CMS handler

1 Cevap

Bir noktada $_SESSION superglobal dizi doldurmak için session_start() aramak gerekir. Yine session_start() işleyicisi değiştirmek, session_write_close() diyoruz ve yapmak mümkün 'belki'.

Deneyin, bu gibi bir şey olacaktır

$Sessionhandler = session_get_current_handler();
session_use_default();
session_start();
$value = $_SESSION['var'];
session_write_close();
session_set_handler($Sessionhandler);
session_start();

Neredeyse olsa işe gidiyor şüpheliyim. PHP normalde E_NOTICE atar gibi iki session_start() aramaya çalışırsanız o iş çünkü session_write_close() taşımaktadır 'belki' tek nedeni.

Uygulamaya bağlı olarak, tekrar veri almak için deneyebilirsiniz. session_start() iki kere, sonra bile session_write_close() çağrılırken ama documentation comments gördük garip şeyler de insanlar üzerinde bir sürü olur