2009-07-05 12 views
0

Ich habe eine Zend Framework powered Website und es scheint ernsthafte Probleme mit Sitzungen zu haben. Ich habe einen 5-Schritt-Prozess, wo ich die Formulardaten in der Sitzung zwischen den Schritten speichern und dann im letzten Schritt in der Datenbank speichern.Zend Sessions Problem mit IE8

Als wir die Seite erstellten, ging die Sitzung manchmal einfach weg und zwang uns zum Neustart. Jetzt scheint es wieder zu funktionieren, aber kürzlich haben wir ein Problem mit Internet Explorer 8 entdeckt. Es schlägt zwischen Schritt 2 -> 3 fehl und vergisst die Sitzung. Es funktioniert gut in IE6, IE7, FF, Chrome, Safari und sogar in meinem mobilen Webbrowser (SE P1).

Wir speichern unsere Sitzungen in der Datenbank und wenn ich den Session DB Handler deaktivieren, funktioniert es. Was ist der Unterschied zwischen der Verwendung der Datenbank und ihrer Verwendung für Sitzungen? Verliere ich etwas, wenn ich zurückwechsle?

Bootstrap:

/* Start session */ 
$saveHandler = new Zend_Session_SaveHandler_DbTable(array(
    'name'   => 'sessions', 
    'primary'  => 'id', 
    'modifiedColumn' => 'modified', 
    'dataColumn'  => 'data', 
    'lifetimeColumn' => 'lifetime' 
)); 
Zend_Session::rememberMe((int) $config->session->lifetime); 
$saveHandler->setLifetime((int) $config->session->lifetime) 
    ->setOverrideLifetime(true); 
Zend_Session::setSaveHandler($saveHandler); 
Zend_Session::start(); 

und in meinem Schritt Controller

$session = new Zend_Session_Namespace('wizard');

Dann bin ich nur mit $ session Spar Daten arbeiten in einem stdClass in $ session.

+0

Könnten Sie einige Code geben Sie bitte? Zend_Session integration, session_set_save_handler(), etc. –

+0

Ich habe meine Fragen mit einigen Codebeispielen aktualisiert – Emil

Antwort

0

Wie wird Ihre Sitzung gespeichert? Geschieht dies in Zend_Form mehrstufig oder in deinem eigenen?

Meine Vermutung ist, dass Ihre Daten zwischen den Schritten zu groß werden, um in Ihrer Sitzungsspeicherstrategie gespeichert zu werden.

+0

Ich speichere es selbst mit einer stdClass. Was ist zu groß, wie viel können Sie in einer Sitzung speichern? – Emil

+0

Meine Sitzung enthält ungefähr 1 kb Daten. – Emil

1

diesen Header Dieses Problem zu beheben:

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); 
+0

Können Sie erklären, was der Header tut? – Emil

+0

Das behebt mein Problem, aber ich würde eine Erklärung sehr begrüßen. –

+0

Hier ist Ihr (später) Hinweis. http://www.w3.org/TR/P3P11/#oho_cp –