Tengo un archivo ajax.js que contiene lo siguiente:
Código HTML:
function ajax(){ var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function login() { var user = document.getElementById('user').value; var pass = document.getElementById('password').value; var loginDiv = document.getElementById('infoLogin'); ajax = ajax(); ajax.open("GET", "/checkLogin.php?user="+user+"&pass="+pass); loginDiv.innerHTML = '<div>Estamos iniciando la conexión<br><img style="padding: 10px; width: 100px;" src="loading.gif"></div>'; ajax.onreadystatechange = function() { if (ajax.readyState == 4) { loginDiv.innerHTML = ajax.responseText; } } ajax.send(null) }
El contenido de mi archivo checkLogin.php es un mero validador que responde según lo ingresado por el usuario cuestiones como esta vacio el campo user, esta vacio el campo password, o sus datos son correctos, etc. Hasta aquí todo bien, funciona perfecto.
Código PHP:
<?
$email=trim(utf8_decode($_GET['user']));
$pass=trim(utf8_decode($_GET['pass']));
if(empty($email) OR empty($pass)){
echo 'El campo usuario o contraseña está vacio';
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo 'En el campo e-mail, no ha ingresado un e-mail válido';
} else {
include 'conexion.php';
$checkuser = mysql_query("SELECT * FROM XXX WHERE email='$email' AND pass='$pass' COLLATE utf8_bin", $link);
$username_exist = mysql_num_rows($checkuser);
if($username_exist==0) {
echo 'El usuario no existe o la contraseña es incorrecta';
} else {
while($row = mysql_fetch_array($checkuser)) {
setcookie(//creo cookies);
echo 'Datos son correctos<br>Serás redirigido al home en 3 segundos';
}
echo "<script type=\"text/javascript\">window.top.location.href=\"domainCheckCookie.php?xxx=".$valorcookie."&xxx1=".$valorcookie."&xxx3=".valorcookie."\";</script>";
echo "<meta http-equiv=\"Refresh\" content=\"3;url=domainCheckCookie.php?xxx=".$valorcookie."&xxx1=".$valorcookie."&xxx3=".valorcookie.">";
}
}
?>
El problema es que cuando del archivo .php invocado por ajax se obtiene un correcto login, este debería redireccionar a una pagina de incio. Lo he intentado con meta y con java de la siguiente forma:
Código HTML:
echo "<meta http-equiv=\"Refresh\" content=\"3;url=url">"; echo "<script type=\"text/javascript\">window.top.location.href=\"url\";</script>";
El uso de la meta sólo me funciona en google chrome y va perfecto, pero no en los demás navegadores.
Ahora esa url a donde intento redireccionar, es una url que se va formando en el proceso de validación y que lleva información valiosa a otra página donde por medio de esos datos, también se crean cookies de sesión, es decir con un login el usuario se logueo en dos sitios.
He estado leyendo sobre el problema y me dicen que debo tratar la respuesta ajax para que esta me permita crear un script de redirección, pero no logro hacerlo.
Ojo no deseo redireccionar desde ajax, sino mediante la ejecución del script php.
La pregunta es: ¿Cómo hago para que ajax perimita dicha redirección desde el archivo .php?
Saludos...