Hola chicos, me estoy adentrando un poco en el tema de Ajax y me he estancado un poco.
He cambiado mi sistema de login tradicional en php por otro que combine Ajax para que me muestre en un div posibles errores, mensajes, etc.
He modificado por tanto el submit de mi formulario de login que antes apuntaba a "validate_user.php" por una funcion javascript que luego internamente llama a ese php y según lo que devuelva podré mostrar "Login correcto" o "Login Incorrecto" en mi div.
El problema es que si el login es correcto, necesito recargar la página para que me desaparezca el formulario de login, y con window.location.reload() no se recarga completamente por lo que no desaparece.
os dejo el código de los ficheros implicados:
validate_user.php
<?php
$usuario="usuario";
$password="pass";
if(isset($_GET['user']) && isset($_GET['pw'])){
$user = $_GET['user'];
$pw = $_GET['pw'];
if(($user == $usuario) && ($pw == $password)){
$_SESSION['sesionuser']=$user;
echo 'Login correcto';
}
else{
echo '0';
}
}
else{
echo '0';
}
?>
login.php Este login va incrustado en un div en el index.php
<?php
if(!isset($_SESSION['sesionuser'])){
echo '<form action="javascript:login();" method="post">
<fieldset>
<input type="text" name="user" id="user" value="Usuario" class="textfield" size="12" onfocus="this.value=\'\'" onblur="if(this.value==\'\'){this.value=\'Usuario\'}"></input>
<input type="password" name="pw" id="pw" value="Contraseña" class="textfield" size="12" onfocus="this.value=\'\'" onblur="if(this.value==\'\'){this.value=\'Contraseña\'}"></input>
<input type="submit" value="OK" class="button"></input>
</fieldset>
</form>';
}
else{
echo 'Bienvenido '.$_SESSION['sesionuser'].', <a class="button" href="index.php?site=close_session">Salir</a>';
}
?>
ajax.js
/* ---------------------------- */
/* XMLHTTPRequest Enable */
/* ---------------------------- */
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}else{
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
/* -------------------------- */
/* LOGIN */
/* -------------------------- */
/* Required: var nocache is a random number to add to request. This value solve an Internet
Explorer cache issue */
var nocache = 0;
function login() {
document.getElementById('log').innerHTML = "Procesando login..."
var user = encodeURI(document.getElementById('user').value);
var pw = encodeURI(document.getElementById('pw').value);
nocache = Math.random();
// Pass the login variables like URL variable
http.open('get', 'validate_user.php?user='+user+'&pw='+pw+'&nocache = '+nocache);
http.onreadystatechange = loginReply;
http.send(null);
}
function loginReply() {
if(http.readyState == 4){
var response = http.responseText;
if(response == 0){
// if login fails
document.getElementById('log').innerHTML = 'Login failed! Verify user and password';
// else
} else {
// [b]Aquí deberia poder recargar la página completa para que login.php compruebe que ya esta[/b]
// la sesion y no me cargue el formulario.
document.getElementById('log').innerHTML = response;
}
}
}