Puedes usar ajax, te dejo el codigo que use yo en mi web para el login:
Código PHP:
Ver original<div class="contenedor">
<div id="formulario" >
<form method="POST" action="return false" onsubmit="return false">
<div id="resultado"></div>
<img src="img/login.png" alt="" width="40" height="40">
<p><input type="text" name="user" id="user" value="" placeholder="Usuario"></p>
<p><input type="password" name="pass" id="pass" value="" placeholder="Password"></p>
<p><button onclick="Validar(document.getElementById('user').value, document.getElementById('pass').value);">Accesar</button></p>
</form>
<script>
function Validar(user, pass)
{
$.ajax({
url: "php/sql/validar.php",
type: "POST",
data: "user="+user+"&pass="+pass,
success: function(resp){
$('#resultado').html(resp)
}
});
}
</script>
</div>
</div>
y en validar.php:
Código PHP:
Ver original<?php
$con = new mysqli("localhost", "root", "", "comunicacion");
if ($con->connect_errno)
{
echo "Fallo al conectar a MySQL: (" . $con->connect_errno . ") " . $con->connect_error;
}
//Valida que los campos de usuario y contraseña tengan datos para su validacion
if ($user == null || $pass == null)
{
echo '<span>Por favor complete todos los campos.</span>';
}
else
{
$consulta = mysqli_query($con, "SELECT usuarios, contrasena FROM usuarios WHERE usuarios = '$user' AND contrasena = '$pass'"); {
$_SESSION["usuario"] = $user;
echo '<script>location.href = "php/home.php"</script>';
}
else
{
echo '<span>El usuario y/o clave son incorrectas, vuelva a intentarlo.</span>';
}
}
?>
De esta manera si se equivoca manda un mensaje dentro del <div id="resultado"> sin necesidad de ir a otra pagina..
Saludos