Frage zu Sessions in Contenido

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Frage zu Sessions in Contenido

Beitrag 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
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Frage zu Sessions in Contenido

Beitrag 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
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Frage zu Sessions in Contenido

Beitrag 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);
			}
			
		}
	}
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Frage zu Sessions in Contenido

Beitrag 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
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Frage zu Sessions in Contenido

Beitrag 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);
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Frage zu Sessions in Contenido

Beitrag 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
Antworten