Maneras hay muchas, todo depende de como lo implementes, aparte tu codigo posteado arriba esta mal, cuando procesas un archivo no debes de mezclarlo de esa forma.
lo mejor es enviar el formulario a la misma pagina de dibujo del formulario y hasta que este pase tu funcion propia de validacion no se envie algo asi:
Código PHP:
<?php
$form_result = "";
if( valida_datos() ) {
// Procesas tus datos, insertas a la bd, etc.
// Al final "redireccionas" a tu pagina resultado ej resultado.php
header( "Location: resultado.php" );
exit;
}
echo $form_result;
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Nombre: <input type="text" name="nombre" value="<?php if( !empty( $_POST['nombre'] ) ) { echo $_POST['nombre']; } ?>">
<input type="submit" name="enviar" value="Enviar">
</form>
y tu funcion que valida algo asi:
Código PHP:
function valida_datos() {
global $form_result;
if( ( count( $_POST ) == 0 ) && empty( $_POST['enviar'] ) ) {
return false;
}
$message = "Favor de completar los siguientes campos: \n";
$result = true;
if( empty( $_POST['nombre'] ) ) {
$message .= " - Debes de llenar el nombre\n";
$result = false;
}
if( !$result ) {
$form_result = sprintf( "<script>alert( '%s' );</script>", str_replace( "\n", "\\n", $message ) );
}
return $result;
}
Asi ya tu codigo es mas flexible y puedes realizar la validacion antes de procesar la forma, saludos!