primero te sugeriria que tengas por aparte tu proceso de de autenticacion de los usuarios, que es donde compruebas si el usuairo existe en el sistema o no, y es exactamente ahi donde debes crear una variable de session en la cual guardaras el array POST que contendra todos los valores de tu formulario para asi reinsertarlos a tu formulario. Resumamos tu formulario de la siguiente manera para que aclarar tu duda.
archivo formulario.php
Código PHP:
<?php
session_start(); // session start debe ser llamada al principio de tu archivo.
if(isset($_SESSION['formulario'])) // compruebo si existe la variable de session que almacena los valores del form (inputs) enviados via $_POST
$posts = $_SESSION['formulario']; // assigno esta variable de session a una variable local
if((int)$_GET['error'] == 1)
echo('usuario no existe en el sistema');
?>
<form id="login" action="procesa.php" method="post">
<label for="usuario"> usuario: </label><input type="text" name="usuario" id="usuario" value="<?php $posts['usuario']; ?>" /><br />
<label for="contrasena">contraseña:</label><input type="text" name="contrasena" id="contrasena" />
<br />
<input type="button" name="logearse" value="Iniciar session" />
</form>
al momento de desear procesar los datos deberias tener un script algo asi.
<?php
session_start();
include 'constantes_bd.php';
include 'conectar_bd.php';
$nombrecookie = "admin";
$valcookie = $_COOKIE[$nombrecookie];
$pos = strpos ($valcookie,'@');
$administrador = substr ($valcookie,0,$pos);
$result = mysql_query ("SELECT * FROM administrador WHERE nombre_usuario='$administrador' and val_cookie='$valcookie' and estado='autenticado';") or die (mysql_error());
mysql_close ($link);
if (mysql_num_rows($result) > 0) {
// aqui redirecionas al archivo stats.php, es mejor asi asi separas tus procesos de tus presentaciones de datos.
header('location:stats.php');
exit;
}else{ // el usuario no existe de modo que creas una variable de session donde almacenas los datos del post y redirecionas nuevamente a formulario.php
$_SESSION['formulario'] = $_POST; // asignamos todos los valores que vengan por post a la variable de session formulario
header("location:formulario.php?error=1"); // redirecciono y paso un valor via get para mostrar un mensaje al usuario de que ha habido un error.
exit;
?>
con este ejemplo basico tienes la idea base de como regresar los valores insertados en tu formulario en caso de algun error. Todo esta en asignar a una variable de sesion los valores almacenados en el array $_POST (ahora si usas get en el metodo del formulario debes cambiarlo por $_GET)
Espero haber resuelto tu duda.
un saludo.