Seite 1 von 1
Frage zu Sessions in Contenido
Verfasst: Di 23. Feb 2016, 21:22
von matt.loker
Hallo zusammen,
Ich habe wieder mal ein Problem an dem ich mir die Zähne ausbeiße und hoffe deshalb auf eure Hilfe. Es geht um Sessions. Ich stehe einfach komplett auf dem Schlauch. Ich hab mich durch das halbe 4.9er Forum gelesen aber ich bekomme es nicht hin ein einem Modul Werte in Sessions zu speichern und dann in einen anderen Modul wieder aufzurufen. Ich bekomme es einfach nicht hin.
Auf meiner Suche durchs Forum habe ich auch diesen Link gefunden
http://forum.contenido.org/viewtopic.php?f=92&t=34890
Hier geht es jedoch darum aus einer externen Datei eine Session zu starten.
Dazu ein einfache Frage, kann ich in Contenido auf klassischem Weg Sessions erstellen?
und auf gewohntem Weg aufrufen?
Falls das nicht geht, würde ich mich sehr über einen Tipp freuen wie ich das Problem lösen kann.
Vielen Dank!
Matt
Re: Frage zu Sessions in Contenido
Verfasst: Mi 24. Feb 2016, 08:00
von Oldperl
Hallo Matt,
Contenido startet sowohl im Frontend (FE) als auch im Backend (BE) seine eigene Session mit der Klasse
cSession. Diese hat auch entsprechende Methoden um eigene Sessionvariable zu nutzen. Diese müssen der Session aber bekannt gemacht (
Methode register()) und wenn nicht benötigt auch wieder entsorgt (
Methode unregister()) werden. Sind sie bekannt können sie ganz normal über den Variablennamen genutzt werden.
Schau Dir mal die API-Doc der Klasse cSession an
http://api.contenido.org/latest/class-c ... #_register
Gruß aus Franken
Ortwin
Re: Frage zu Sessions in Contenido
Verfasst: Mi 24. Feb 2016, 08:55
von homtata
Hallo Matt,
bei mir geht's so für einen Cookie namens "bookmarkCookie":
Code: Alles auswählen
// cookie öffnen
$session = cRegistry::getSession();
$cookieContent = $_COOKIE['bookmarkCookie'];
// cookie speichern
setcookie('bookmarkCookie', $cookieContent, 0, "/");
$session->register('bookmarkCookie');
Da ich in diesem Cookie mehrere Werte strichkommagetrennt abspeichere, bearbeite ich den Cookie-Inhalt jeweils noch, weil ich ihn später in Contenido als Array benötige:
Code: Alles auswählen
$session = cRegistry::getSession();
$deleteaction = false;
if ( $_POST["action"] == "delete" ) {
$cookieContent = $_COOKIE['bookmarkCookie'];
if ( $cookieContent != "" ) {
$cookieentries = explode(";", $cookieContent);
$position = array_search($_POST["cookieentry"],$cookieentries);
if ($position !== false) {
unset($cookieentries[$position]);
$cookieContent = implode(";",$cookieentries);
setcookie('bookmarkCookie', $cookieContent, 0, "/");
$session->register('bookmarkCookie');
$deleteaction = true;
} else {
$errors[] = mi18n("error_could_not_delete");
$cookieContent = implode(";",$cookieentries);
}
}
}
Re: Frage zu Sessions in Contenido
Verfasst: Mi 24. Feb 2016, 13:05
von matt.loker
Hallo Oldperl,
Hallo homtata
vielen lieben Dank für eure Rückmeldung. Kurze Nachfrage ob ich das Grundprinzip verstanden haben:
Code: Alles auswählen
#Session bekannt machen
$session = cRegistry::getSession();
#Wert setzen
$TestVar = "Test";
#Session speichern
$session->register('TestVar');
Die Session rufe ich dann so auf
Code: Alles auswählen
$session = cRegistry::getSession();
echo $session->register('TestVar');
So habe ich mal ein Testmodul erstellt aber bekomme keine Werte angezeigt.
Viele Grüße
Matt
Re: Frage zu Sessions in Contenido
Verfasst: Mi 24. Feb 2016, 14:11
von homtata
Junge, jetzt machst du es komplizierter als nötig

in meiner ersten Box stehts doch eigentlich schon Schritt für Schritt drin. Du musst zwischen dem Cookienamen und dem Cookieinhalt unterscheiden und noch den Zwischenschritt machen, den Cookie zur Speicherung vorzubereiten.
Nochmal, und ich ersetze jetzt vorher fest eingestellte Namen durch Variablen, um es deutlicher zu machen:
Code: Alles auswählen
// cookie öffnen
$cookiename = "meinCookie";
$session = cRegistry::getSession();
$cookieContent = $_COOKIE[$cookiename];
// cookie speichern in einem anderen Skript
$cookiename = "meinCookie";
$session = cRegistry::getSession();
setcookie($cookiename, $cookieContent, 0, "/");
$session->register($cookiename);
Re: Frage zu Sessions in Contenido
Verfasst: Mi 24. Feb 2016, 18:23
von matt.loker

OH man stand bin ich blöd. Mich hat das $_COOKIE irritiert. Man wie peinlich.
Vielen Vielen Dank homtata, du hast mir riesig weitergeholfen!
Viele Grüße
Matt