En revanche normalement, tu peux fair le contraire : demander la redirection et juste après définir le cookie. En effet, même avec un header() le reste du script continue d'être exécuté.
Essaye donc comme ceci :
header("location:" . $_SERVER["PHP_SELF"]);
setcookie("passe6",$val["nivo"]);
exit(); // evite de lire la suite du code
Toutefois, d'après les commentaires de php.net, ceci ne fonctionne pas sur un serveur IIS 5 où le header est immédiatement exécuté..