Seite 2 von 2

Verfasst: 09.04.2008 14:05
von Arokh73
Noch ein kleiner Tipp für alle, die das Beispiel hier aufgreifen:
Das unserialize() funktioniert in meinem Fall nicht auf Grund irgendwerlcher Sonderzeichen. Lösen lässt sich das Problem, indem man in die Funktion vor dem (un)serialize noch ein base64_encode und base64_decode einbaut:

Code: Alles auswählen

set_svar($varname ='', $value = '')
{
global $userdata, $db;
if(!is_array($userdata['dyn_vars']))
{
$userdata['dyn_vars'] = unserialize(base64_decode($userdata['dyn_vars']));
}
if(!$varname)
{
return;
}
$userdata['dyn_vars'][$varname] = $value;
$sql = 'UPDATE ' . USERS_TABLE . ' SET dyn_vars = ' . addslashes(serialize(base64_encode($userdata['dyn_vars']))) . ' WHERE user_id = ' . $userdata['user_id'];
if(!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Dynamische Speicherung fehlgeschlagen', '', __LINE__, __FILE__, $sql);
}
} 
Das eliminiert die Zeichen. über die unserialize stolpert, wirkungsvoll.

Verfasst: 10.04.2008 11:57
von error-phpbb
dann besteht doch aber immer noch das problem für gäste, oder?
für mich wäre es wichtig auch bzw nur für gäste sowas zu nutzen, aber da diese keine user_id haben, geht das ja so nicht.
und ich komm nich auf den trichter, wie das gehen soll.
währe für tipps sehr dankbar