Hola,
Para el error que no redirecciona con header(), pon:
Código PHP:
error_reporting(E_ALL);
para ver si hay algun error. Tambien mira el valor de la directiva display_errors. Puede ser que en tu servidor este deshabilitada la funcion de mostrar mensajes de error, y por eso no te muestra ningun mensaje, aunque pueda haber errores.
Y para pasar el SID por URL, en
www.php.net/session te explican como hacerlo.
Saludos.