Pues lo único que haces mal, aparentemente, es que usas variables como claves de $_SESSION y eso no sirve, debes usar nombres no variables.
Código PHP:
Ver original// MAL
$_SESSION[$code] = $indice;
// BIEN
$_SESSION['code'] = $indice;
// BIEN (declarando $code previamente)
$code = 'clave_para_almacenar_code';
$_SESSION[$code] = $indice;
¿Se entiende la diferencia?