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?

Code: Alles auswählen

session_start();
$_SESSION['name'] = "wert";
und auf gewohntem Weg aufrufen?

Code: Alles auswählen

$name = $_SESSION['name'];
echo $name;
}
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 :arrow: 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
:oops: OH man stand bin ich blöd. Mich hat das $_COOKIE irritiert. Man wie peinlich.

Vielen Vielen Dank homtata, du hast mir riesig weitergeholfen! :D

Viele Grüße
Matt