il problema era ovviamente nel redirect. Nel forum ho trovato questa funzione:

codice:
function redirect($s,$url)
{
   $parse_url = parse_url ( $url );
 $s = $s > 0 ? $s : 0;
    $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : (isset($_SERVER['SERVER_ADDR']) ?  $_SERVER['SERVER_ADDR'] : '');
 
    $parse_url['scheme']   = isset($parse_url['scheme'])   ? $parse_url['scheme']   : 'http';
    $parse_url['host']     = isset($parse_url['host'])     ? $parse_url['host']     : $host;
    $parse_url['path']     = isset($parse_url['path'])     ? $parse_url['path']     : '';
    $parse_url['query']    = isset($parse_url['query'])    ? $parse_url['query']    : '';
    $parse_url['fragment'] = isset($parse_url['fragment']) ? $parse_url['fragment'] : '';
 
    if (substr($parse_url['path'], 0, 1) != '/') {
        $parse_url['path'] = dirname($_SERVER['PHP_SELF']) . '/' . $parse_url['path']; 
    }
 
    if (session_id() !== '') {
        if ($parse_url['query'] !== '') { 
            $parse_url['query'] = $parse_url['query'] . '&'; 
        }
        $parse_url['query'] = '?' . $parse_url['query'] . session_name () .    '=' . session_id();
    }
 
    if ($parse_url['fragment'] !== '') { 
        $parse_url['fragment'] = '#' . $parse_url['fragment']; 
    }
 
    $url = $parse_url['scheme'] . '://' . $parse_url['host'] . $parse_url['path'];
    session_write_close();
    header("location:"   );

    exit();  
	
}
Qualche anima pia potrebbe darmi delucidazioni su cosa succede in questa parte:

codice:
 if (substr($parse_url['path'], 0, 1) != '/') {
        $parse_url['path'] = dirname($_SERVER['PHP_SELF']) . '/' . $parse_url['path']; 
    }
 
    if (session_id() !== '') {
        if ($parse_url['query'] !== '') { 
            $parse_url['query'] = $parse_url['query'] . '&'; 
        }
        $parse_url['query'] = '?' . $parse_url['query'] . session_name () .    '=' . session_id();
    }
 
    if ($parse_url['fragment'] !== '') { 
        $parse_url['fragment'] = '#' . $parse_url['fragment']; 
    }
grazie mille.