Seite 1 von 1

Session Probleme - > werden nicht gespeichert

Verfasst: Mo 19. Sep 2005, 13:55
von franky
Habe eine Problem mit folgendem Code. Es soll eine Variable Überschrift zu verschiedenene Standorten aufgebaut werden. Beim ersten Aufruf klappt alles. Leider speichert er wohl beim Laden einer neuen Seite mit dem selben Seitenkopf die Sessions nicht richtig. Kann einer den Fehler sehen? Versuche schon knapp seit 2 Stunden, aber ich bekomme es nicht hin. Die Forum Topics kenne ich, jedoch haben sie mir auch nicht wirklich weitergeholfen.. Danke schon mal..

Code: Alles auswählen

<?
cInclude("classes", "class.standort.php");
$standort = new Standort;

if(!$sess->is_registered("standort_id")){
 $standort_id = $standort->GetStandortIDFromIDCat($_GET['idcat']);
 $sess->register("standort_id");
 $standort = $standort->GetStandort($standort_id);
}
else {
 $standort = $standort->GetStandort($standort_id);
 echo("lalalala");
}

if($sess->is_registered("standort_id")!=false) {
 // TEXTAUSGABE
}
?>

Verfasst: Mo 19. Sep 2005, 14:19
von timo
als was bindest du denn das ganze ein? Als Modul?

Die Variablen, die gespeichert werden sollen, müssen im globalen Kontext vorhanden sein.

Verfasst: Mo 19. Sep 2005, 14:29
von franky
ja ich binde das ganze als Modul ein, welches als Seitenkopf bei jeder Seite mit aufgerufen werden soll... Muss ich alle Variablen die ich in der Session irgendwo abspeichern will vorher angeben? Brauche ich beim "normalen" PHP ja auch nicht.. Wenn ja, wo denn genau?
Und eine Frage noch, ist es richtig wenn ich print_r($sess) ausführe die komplette Datenbankverbindung unverschlüsselt angezeigt wird?
Danke für deine schnelle Antwort :oops:

Verfasst: Mo 19. Sep 2005, 14:36
von timo
dann prüfe mal, ob die Variablen, die du setzt, auch wirklich global sind!

im übrigen solltest du $sess->register unabhängig davon aufrufen, ob z.b. standort_id in der Session vorhanden ist oder nicht, denn die Session speichert nur Variablen, die bei einem Aufruf mit "register" registriert sind - das könnte genau dein Problem sein.

Und $sess beinhaltet die Datenbankparameter, weil das Objekt ja sonst nicht weiß, wie es auf die Datenbank zugreifen soll. Im übrigen kommst du an die Datenbankparameter auch über $contenido_host, $contenido_user, $contenido_password und $contenido_database.

Verfasst: Mo 19. Sep 2005, 15:01
von franky
ich habe es jetzt folgendermaßen abgeändert:

Code: Alles auswählen

<?
global $sess;

cInclude("classes", "class.standort.php");
$standort = new Standort;

if(!$sess->is_registered("standort_id")){
 $standort_id = $standort->GetStandortIDFromIDCat($_GET['idcat']);
 $sess->register($standort_id);
 $standort = $standort->GetStandort($standort_id);
}
else {
 $sess->register("standort_id");
 $standort = $standort->GetStandort($standort_id);
 echo("lalalala");
}

if($sess->is_registered("standort_id")!=false) {
//TEXT
}
?>
Aber es funktioniert immer noch nicht. Er zeigt mir zwar immer mit dem "lalalala" ( :D ) an, dass er die Session "standort_id" kennt, aber ergibt keinen Wert für Sie aus?! Ist die $sess so richtig $global definiert?

Verfasst: Mo 19. Sep 2005, 15:06
von timo
du sollst nicht $sess als global definieren, sondern schauen ob z.b. die Variable standort_id als global definiert ist

mit $sess->register bestimmst du, welche globale Variable am Ende einer Seite in die Session gespeichert werden soll. Diese wird bei dem Aufruf page_close in die Datenbank gespeichert und zwar mit dem Wert, den sie am Ende besitzt.

Verfasst: Mo 19. Sep 2005, 15:29
von franky
Yups, ok danke! Jetzt läuft es bei mir :lol: :lol:
Finaler Code (Teil )

Code: Alles auswählen

<?
global $standort_id;
$sess->register("standort_id");

cInclude("classes", "class.standort.php");
$standort = new Standort;

if(!$sess->is_registered("standort_id")){
 $standort_id = $standort->GetStandortIDFromIDCat($_GET['idcat']);
 $standort = $standort->GetStandort($standort_id);
}
else {
 $standort = $standort->GetStandort($standort_id);
}

if($sess->is_registered("standort_id")!=false) {
// TEXT
}
?>
Was vielleicht noch wichtig wäre zu erwähnen ist, dass die contenido-id auf jeden Fall wenn mit Sessions gearbeitet wird bei einem Link mit angehangen werden muss!
Ich hatte einen Link "automatisch" per tinyMCE erstellt, welcher diese Information nicht mit angehängt hatte. Leider habe ich es die ganze Zeit mit diesem Link versucht, sodass es immer unverständliche Fehlemeldungen (wenn überhaupt irgendwas geschah) angezeigt wurden.

Übrigends.. Top Support, wo sich so mancher kommerzieller Hersteller ein Scheibchen von abschneiden könnte..

mfg franky

Verfasst: Mo 19. Sep 2005, 15:50
von timo
ähm eigentlich nicht

die sessionid ist in einem Cookie gespeichert, deshalb muß die SessionID im Frontend nicht gespeichert werden