[TYPO3-german] session variable

Stephan Schuler Stephan.Schuler at netlogix.de
Fri Feb 17 22:16:24 CET 2012


Hallo Christian.


Leider interpretierst du die Situation ein wenig falsch.

Dein PHP-Fragment ist richtig, damit werden Daten in die Session geschrieben bzw. wieder daraus gelesen. Der erste Parameter kann die Werte "ses" oder "user" haben, wobei "ses" die Clientsession und "user" benutzerspezifische Daten meint. Sobald du mit angemeldeten Frontendbenutzern arbeitest hast du über den Slot "user" die Möglichkeit, benutzerspezifische Sessiondaten so zu speichern dass sie dem gleichen Account nach dem nächsten Login wieder zur Verfügung stehen. Anschaulich könnte man z.B. den Warenkorb eines Shops dort ablegen.

Deine Idee, auf die Daten via Cookie zugreifen zu können ist grundsätzlich falsch. Man verwendet zwar im Regelfall ein (einziges) Cookie (clientseitig) um eine Session (serverseitig) zu identifizieren, damit ist die Beziehung zwischen Cookie und Session aber auch schon vollständig erschöpft.

Cookiedaten liegen im Client. Bei jedem Click sendet der Browser seine kompletten Cookiedaten zum Server ("hier, das merk ich mir grade von deiner Domain") und die Antwort des Servers kann Schreibanweisungen ("der Cookie X hat ab jetzt folgenden Inhalt") zum Client zurück transportieren. Deshalb kann man in PHP auf Cookies zugreifen. Kleine Randbemerkung: Allerdings verbieten sich aus diesem Grund große Datenmengen im Cookie: Der Traffic! Der Browser kann nicht wissen, mit welcher vom Server angefragten Datei der Server auch Cookieinformationen haben möchte (sprich: Mit welcher Datei der Server die mitgelieferten Cookieinhalte auslesen möchte und bei welcher Datei der Server keine Cookies erwartet). Der Browser schickt deshalb bei wirklich jeder Anfrage wirklich alle Cookiedaten mit. Das wiederum bedeutet, dass 4KB Cookiedaten und 100 einzelnen Dateien einer Seite (neben der HTML-Seite noch Bilder, JavaScript und CSS) fast ein halbe MB an unnützem Traffic (vom Client zum Server, also die vermutlich langsamere Richtung) pro Click erzeugen. Also: Die Cookies um Himmels Willen klein halten.
Da die Cookies im Client liegen kann man sie natürlich auch dort auslesen und schreiben, eben via JavaScript.

Sessiondaten dagegen liegen auf dem Server. Dort können sie zunächst mal fast beliebig groß sein, sofern die Festplatte des Servers oder eine Konfigurationseinstellung das nicht limitieren. Auf den Traffic hat das keine Auswirkung, der Client kommt ohnehin nicht ran. Und das ist auch der relevante Punkt: Was in der Session liegt ist *nicht* via JavaScript verfügbar.

Natürlich kann ich durch ein eigenes Programm Daten zwischen Cookie und Session hin und her schaufeln. Das müsste ich aber selbst tun.

Zunächst bietet PHP einen eigenen Sessionmechanismus: Die $_SESSION-Variable. Dort kann man Dinge ablegen und beim nächsten Click findet man sie dort wieder.
Die TYPO3-API (der von dir genannte Teil jedenfalls) abstrahiert nicht nur den Zugriff auf $_SESSION. Was über die API in den fe_userAuth geschrieben wird landet nicht direkt im $_SESSION-Array sondern in der TYPO3-Datenbank.
Das wiederum bedeutet, dass du auch mit einem eigenen, freischwebenden PHP-Script nicht auf die in TYPO3 geschriebenen Sessiondaten zugreifen kannst, sofern du nicht von Hand den notwenigen Datenbankaufruf nachvollziehst.


Was genau hast du denn vor? Welche Daten möchtest du speichern und was anschließend wie auswerten?


Gruß,



Stephan Schuler
Web-Entwickler

Telefon: +49 (911) 539909 - 0
E-Mail: Stephan.Schuler at netlogix.de
Website: media.netlogix.de


--
netlogix GmbH & Co. KG
IT-Services | IT-Training | Media
Andernacher Straße 53 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: info at netlogix.de | Internet: http://www.netlogix.de

netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Stefan Buchta, Matthias Schmidt



________________________________________
Von: typo3-german-bounces at lists.typo3.org [typo3-german-bounces at lists.typo3.org]" im Auftrag von "Christian Tauscher [christian.tauscher at media-distillery.de]
Gesendet: Freitag, 17. Februar 2012 20:43
Bis: typo3-german at lists.typo3.org
Betreff: [TYPO3-german]  session variable

Hallo zusammen.

Mit

$GLOBALS["TSFE"]->fe_user->setKey('ses', 'meinName', 'daten');
$GLOBALS["TSFE"]->fe_user->setKey('ses', 'meinName');

kann man in TYPO3 elegant Daten in einer Session zwischenspeichern/lesen.

TYPO3 schreibt das wohl alles in das domain-cookie fe_typo_user.
Vermutlich wird das Cookie noch mit dem encryption Key behandel, so das
man nichts lesen kann.

Jetzt hab ich ein paar JavaScript Zeilen geschrieben die ihre Daten auch
in einer Session speichern.
Später möchte ich die Daten in einer EXT auswerten.

Wenn ich nun einfach in mein JavaScript das cookie fe_typo_user
überschreibe bin ich glücklich, solange TYPO3 nicht auf die Idee kommt
etwas anderes darin zu speichern.

Wenn mein JavaScript nun sein eigenes Cookie schreibt, kommen sich mein
Script und TYPO3 nicht in die Quere,aber dann steh ich vor dem Problem:
wie lese ich das Cookie dann innerhalb meiner Extention aus? Die TYPO3
Funktionen bieten mir keine Möglichkeit einen anderen/zusätzlichen
Cookie-Namen zu definieren, und wenn meine EXT endlich aufgerufen wird,
kann ich kein Cookie mehr auslesen...

Wäre schon wenn ihr mir auf die Sprünge helfen könntet.

Danke,

Christian.
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


More information about the TYPO3-german mailing list