Hallo zusammen.
Es geht um diese Störmeldung
Warning: session_start(): Failed to decode session object. Session has been destroyed in /includes/functions/sessions.php on line 68
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /includes/functions/sessions.php:68)
Und als Folge, weil der Shop die Sprache nicht mehr weiß:
Warning: require(includes/languages/.php): failed to open stream: No such file or directory in /application_top.php on line 332
Fatal error: require(): Failed opening required 'includes/languages/.php' (include_path='.:/usr/local/lib/php/') in /functions/application_top.php on line 332
Die Störmeldung erscheint auf den Seiten
create_account_success.php
und oder auf
checkout_confirmation.php
Die Session wird zerstört, wenn der Kunde auf der Seite create_account.php oder auf der checkout_payment.php auf "weiter" klickt.
Als Sofortmassnahme hilft es wenn man in der configure.php die Session nicht in der MySQL DB speichert, sondern im Ordner /tmp
Ich habe lange nach der Ursache gesucht und mich Leerstellen nach den abschließenden ; ?> entfernt. Alle Dateien unter UTF-8 ohne Bom gespeichert.
Nichts hat geholfen.
Es gibt einige die das gleiche Problem haben und auch nach einer Lösung suchen. (Auch os Max und XT Shops sind betroffen)
Nun habe ich die Ursache gefunden.
Der Shop wurde mal erweitert mit der Anzeige der Datenschutzerklärung auf der Seite - create_account.php - und mit der Anzeige der AGB auf der Seite - checkout_payment.php.
Diese Anzeige erfolgt in Formularfeldern
<textarea><?php echo $datenschutz; ?></textarea>
<textarea><?php echo $agb; ?></textarea>
Beim Klick auf die Taste "weiter" werden alle Inhalte der Formularfelder in die Session geschrieben.
Also nicht nur Vorname Nachname u.s.w sondern auch der ganze Text der AGB oder Datenschutzerklärung!!!. (Oh Gott)
Das geht solange gut, solange kein Semikolon ;; in dem Text der AGB oder Datenschutzerklärung steht.
Ist ein Semikolon enthalten oder ist der Text so lang dass er nicht ins Feld der Datenbank passt wird sie Session zerstört.
Abhilfe:
Die Texte der Datenschutzerklärung bzw die AGB müssen raus aus dem <textarea> Feld.
Stattdessen die Texte in einem scrolbaren DIV anzeigen lassen.
Gruß Googlefan