En principio .. recarga de página o redirección a otra vas a tener (olvidando por el momento técnicas más complejas con Ajax/y afines).
Sería ideal que pongas el código que usas (los scripts que compongan tu proceso de "login" y validación) .. no me hago la idea de lo que estás haciendo (por mi parte).
Pero .. de todas formas .. Lo ideal sería un proceso tipo:
login.php
un formulario HTML común y corriente con tu petición usuario/contraseña
valida.php
el formualrio .. su action lo apuntas a este. Aquí validas a tu usuario ..
pagina_protegida.php
una página protegida ... cualquiera (aquí validas tus variables de sesión .. etc que uses para autentificar a tu usuario)
Con ese esquema .. de valida.php si no pasa la validación .. redireccionarías hacia login.php .. con el detalle de pasarle una variable de control para indicar a "login.php" que la validación no ha sido correcta. Ejemplo:
login.php
<html>
<head>
</head>
<body>
Tu formulario HTML ....
<?
// despues de tu formulario </form> y resto de página pero antes de cerrar el </body>
if (isset($_GET['msg'])){
?>
<script languaje="javascript">
alert("Login incorrecto");
</script>
}
<?
}
?>
</body>
</html>
[/php]
Mejor quedaría controlando el tema desde el <body> con un evento onLoad tipo
Código PHP:
<body <? if (isset($_GET['msg'])){ echo "onLoad=\"alert('blablabla')\"" ?>>
Es decir .. si hay error .. se genera:
<body onLoad="alert('blablabla')">
y si no hay error:
<body >
Será en tu "valida.php" donde hagas algo tipo:
Código PHP:
if ($error){
header ("Location: login.php?msg=error");
exit;
}
Si no pasa tu validación .. redireccionas automáticamente hacia el login.php .. valida.php no ha de tener nada de "HTML" ahí .. no corresponde (sino tendrás problemas con header()).
Un saludo,