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);
}
}