Seite 1 von 1
Sessions in Contenido Backend
Verfasst: Mo 12. Jan 2004, 11:04
von emergence
ich hab da ein kleines problem und ein paar fragen...
welche phplib version ist in contenido includiert ?
im bezugname auf ein beispiel zB
contenido/includes/include.con_str_overview.php
Code: Alles auswählen
if (!is_bool($remakeStrTable))
{
$remakeStrTable = false;
}
if (!is_bool($remakeCatTable))
{
$remakeCatTable = false;
}
$sess->register("remakeStrTable");
$sess->register("remakeCatTable");
ich find nirgends wo das gespeichert wird...
die variablen $CatTableClient,$CatTableLang,$serializedRootCatItem
werden gespeichert, die anderen beiden nicht...
was hab ich übersehen ?
Verfasst: Mo 12. Jan 2004, 11:45
von timo
wie, wo das gespeichert wird?
alle Variablen, die mit $sess->register registriert sind, werden beim page_close gespeichert (in der session als base64).
welche phplib das ist, weiß ich leider nicht genau, aber die version ist kurz vor der aktuellen (die aktuelle hat zwar einige Bugfixes, die wir aber nicht brauchen).
Verfasst: Mo 12. Jan 2004, 12:12
von emergence
okay...
der witz an der ganzen geschichte ist folgender...
sagen wir mal ich hab folgenden code
Code: Alles auswählen
$sess->register("test");
var_dump ($test);
print_r($test);
$test = false;
erhalte ich als ergebnis: string(0) ""
bei $test = true;
erhalte ich als ergebnis: string(1) "1" 1
ähm ??
eine abfrage mittels is_bool liefert einfach immer falsch weils bei mir immer ein string bleibt... oder hab ich was übersehen...
bei ergibt das mit is_bool keinen sinn

Verfasst: Mo 12. Jan 2004, 12:45
von timo
soweit ich weiß, wird das immer als string abgelegt -> du müßtest also vorher erstmal explizit casten (wobei, soweit ich weiß, auch strings als bool gecastet werden, z.b. ein string mit "0" ist false und "1" ist true (oder andersrum?). deshalb auch teilweise die 3 ===, damit auch der typ getestet wird).
Verfasst: Mo 12. Jan 2004, 12:46
von emergence
ich hab mich jetzt mal damit beholfen
Code: Alles auswählen
if (is_string($test))
{
$test = unserialize($test);
}
$sess->register("test");
var_dump ($test);
$test = false;
$test = serialize($test);
damit bleibt der typ immer korrekt erhalten... vom code im backend finde ich es zwar noch immer unlogisch, aber was solls...
warum das anscheinend im snapshot funktionieren soll ?? keine ahnung...
in sessions.inc gibts zwar ne eigene serialize funktion, aber ob die das korrekt behandelt ??
Verfasst: Mo 12. Jan 2004, 14:09
von emergence
timo hat geschrieben:soweit ich weiß, wird das immer als string abgelegt -> du müßtest also vorher erstmal explizit casten (wobei, soweit ich weiß, auch strings als bool gecastet werden, z.b. ein string mit "0" ist false und "1" ist true (oder andersrum?). deshalb auch teilweise die 3 ===, damit auch der typ getestet wird).
okay mit string ablegen das stimmt, wird so weit ich es bis jetzt kapiert habe auch so gemacht... aber die abfrage mit is_bool ist trotzdem schwachsinn... da bei false der string leer ist und nicht 0
mit serialize und unserialize bekomme ich genau das was ich will...
irgendwie hat bei mir der verzeichnisbaum bei artikel und in kategorie sich nicht mehr gegenseitig abgeglichen...
jetzt funktionierts wieder ohne mucken...

im cvs scheints aufgrund der neuen con_sync zu funktionieren, aber da ich das nicht übernommen habe ist es egal...
der für mich funktionierende code sieht jetzt so aus:
Code: Alles auswählen
$sess->register("remakeStrTable");
$sess->register("remakeCatTable");
$sess->register("CatTableClient");
$sess->register("CatTableLang");
if (!isset($remakeStrTable))
{
$remakeStrTable = false;
} else {
$remakeStrTable = unserialize($remakeStrTable);
}
if (!isset($remakeCatTable))
{
$remakeCatTable = false;
} else {
$remakeCatTable = unserialize($remakeCatTable);
}
if ($CatTableClient != $client)
{
$remakeCatTable = true;
}
if ($CatTableLang != $lang)
{
$remakeCatTable = true;
}
und nach
ergänzen:
Code: Alles auswählen
$remakeStrTable = serialize($remakeStrTable);
$remakeCatTable = serialize($remakeCatTable);
die anpassungen in include.str_overview.php sind so ähnlich ausgefallen...
ach ja, die variable mit dem verzeichnis baum in user_property zu speichern ist wirklich ein nettes feature...
tja ne frage hab ich noch...
hast du ne ahnung wie gross ein wert sein darf, der in einer session var gespeichert werden kann ?
Verfasst: Mo 12. Jan 2004, 18:20
von timo
emergence hat geschrieben:
tja ne frage hab ich noch...
hast du ne ahnung wie gross ein wert sein darf, der in einer session var gespeichert werden kann ?
Ich würde die Werte in der Session so gering wie möglich halten - theoretisch bis zur Feldgröße minus das base64-encoding, aber praktisch hat's durch die PHP-Bugs nicht geklappt
