Session Probleme - > werden nicht gespeichert

Gesperrt
franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Session Probleme - > werden nicht gespeichert

Beitrag von franky » Mo 19. Sep 2005, 13:55

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
}
?>

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 19. Sep 2005, 14:19

als was bindest du denn das ganze ein? Als Modul?

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

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Mo 19. Sep 2005, 14:29

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:

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 19. Sep 2005, 14:36

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.

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Mo 19. Sep 2005, 15:01

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?

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 19. Sep 2005, 15:06

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.

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Mo 19. Sep 2005, 15:29

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

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 19. Sep 2005, 15:50

ähm eigentlich nicht

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

Gesperrt