Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2014, 05:12
manuel__7
 
Fecha de Ingreso: abril-2012
Mensajes: 88
Antigüedad: 12 años
Puntos: 1
Pregunta Forzar redirección desde archivo php ejecutado por ajax

Hola señores a los tiempos que vuelvo por acá. Espero puedan ayudarme con algo que no me está funcionando. Paso a explicar:

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($emailFILTER_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&ntilde;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>";
Debo recalcar que en java lo he intentado con todas las demas posibilidaddes como document.location.href, etc, etc... por ahí no va el problema.

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...

Última edición por manuel__7; 22/02/2014 a las 05:24