Has probado a comentar lo q dije y ver qué decían los echos?
Código PHP:
/*if (!isset ($_POST['dni']) || trim($_POST['dni'])=="" || !validadni($_POST['dni'])) {
header("Location: dni.php");
exit;
} */
if (!isset ($_POST['dni'])) {
echo "No llega la variable.";
exit;
} elseif (trim ($_POST['dni'])=="")) {
echo "La variable llega vacia.";
exit;
} else if (strlen(trim($_POST['dni']))!=9) {
echo "Longitud del dni no válida.";
exit;
} elseif (!validadni(trim($_POST['dni'])) {
echo "El DNI facilitado no es válido.";
exit;
} else {
echo "No tengo ni idea de lo que pasa.";
exit;
}