Por lo que veo tenés varios problemas, a saber:
estás asumiendo que el nombre del archivo es de la forma
nombre.extensión
Y eso está MAL. Nunca podés asumir eso.
Mejor sería, hacer algo como esto:
$tipo = $extension[count($extension) - 1];
para asegurarte de que estás obteniendo la última parte.
Por otra parte, no creo que move_uploaded_file cambie el nombre por sí mismo... de todas formas lo podés arreglar sustituyendo antes los espacios:
str_replace(' ', '_', $nombre_archivo);
(que sustituye los espacios por _). Haciéndolo antes de procesar, te asegurás de que los datos coincidan.
Otro detalle: veo que usás una función para calcular el tamaño del archivo, dejame decirte que ese dato lo tenés en $_FILES['zip']['size'], aunque no me hagas mucho caso si tenés tus razones para hacerlo así
saludos.