Espero que no te moleste, pero rehice tu código de una forma que me parece más simple y clara...
El problema que tenías con lo que hacías es que no necesitas nl2br para el cuadro de texto, con simples saltos de linea alcanza
Lo que hice yo es un chequeo en la misma página y que después, si es correcto te ejecute los comandos en la misma página.
Código PHP:
<?php
if (isset($_POST['user']) AND isset($_POST['pass'])) {
if (!empty($_POST['user']) AND !empty($_POST['pass'])) {
// lo que quieras hacer con los datos ingresados
header("location:otrapagina.php");
exit;
}
if (empty($_POST['user'])) {
$clase['user'] = "Estilo2";
}
if (empty($_POST['pass'])) {
$clase['pass'] = "Estilo2";
}
}
if (empty($clase['user'])) { $clase['user'] = "Estilo1"; }
if (empty($clase['pass'])) { $clase['pass'] = "Estilo1"; }
?>
<html>
<head>
<title>Registro</title>
<style type="text/css">
<!--
.Estilo1 {
color: #000000;
font-weight: bold;
}
.Estilo2 {
color: #FF0000;
font-weight: bold;
}
-->
</style>
</head>
<body>
<form name="form1" method="post" action="a.php">
<p>
<span class="<?php echo $clase['user']; ?>">Usuario:</span>
<input name="user" type="text" id="user" value="<?php echo $_POST['user']; ?>">
</p>
<p>
<span class="<?php echo $clase['pass']; ?>">Password:</span>
<input name="pass" type="password" id="pass">
</p>
<p>
<textarea name="observaciones" cols="40" rows="4"><?php echo $_POST['observaciones']; ?></textarea>
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
</p>
</form>
</body>
</html>