Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Duda o problema

Estas en el tema de Duda o problema en el foro de Frameworks JS en Foros del Web. Estoy tratando de programar el típico Login de un usuario a un sistema haciendo uso de AJAX. El código para crear el objeto AJAX es ...
  #1 (permalink)  
Antiguo 19/02/2006, 16:20
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 22 años
Puntos: 1
Busqueda Duda o problema

Estoy tratando de programar el típico Login de un usuario a un sistema haciendo uso de AJAX. El código para crear el objeto AJAX es el siguiente:
Código PHP:
function AjaxObj(){
    
conexion false;
    try {
        
conexion = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (
e) {
        try {
            
conexion = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (
E) {
            
conexion false;
        }
    }

    if (!
conexion && typeof XMLHttpRequest != 'undefined') {
        
conexion = new XMLHttpRequest();
    }

y para iniciarlo simplemente lo llamo en el evento onload del tag body:
Código PHP:
<body onload="AjaxObj();"
Hasta ahi todo perfecto. Ahora mi funcion para verificar el usuario y contraseña en la BDatos es como sigue:
Código PHP:
function ULogin(){
 
username document.getElementById('u_username').value;
 
userpass document.getElementById('uPassword').value;
 
conexion.open("GET""checkuser.php?username="+username+"&pass="+userpass,true);
 
conexion.onreadystatechange =function() {
 if (
conexion.readyState==4) {
   var 
_resultado conexion.responseText;
   if (
_resultado == "0") {
     
alert('Has sido identificado satisfactoriamente. Dentro de unos segundos serás redirigido a tú página de inicio');
   } else if(
_resultado == "1"){
     
alert('El usuario no existe o la contraseña proporcionada es incorrecta');           
   } else {
     
alert('Acción no válida');
   } 
  }
 }
 
conexion.send(null)

La pagina checkuser.php es como sigue:
Código PHP:
<?php
include_once('set_app.php');
$existe $db->Execute("SELECT COUNT(IDU) AS cantidad, UNombre, UTipo, IDU FROM bk_usuarios WHERE (UUsername='".$_GET['username']."') AND (UPassword='".$_GET['pass']."') AND (UActivo=1) GROUP BY IDU,UTipo ");
$resultado $existe->fetchRow();
if ( 
$resultado['cantidad'] > ) {
  echo 
"0";
} elseif (
$resultado[0] <= 0) {
  echo 
"1"
}else {
  echo 
"2";

?>
Hasta ese punto cuando hago click en el botón de Login me sale a la perfeccion los alert o sea los he probado correctamente, incorrectamente (pasando parametros que no son) y provocando otros errores (caso echo "2")

Lo que me pasa ahora es que tengo que crear las credenciales de usuarios o sessiones para poderlo identificar en todo el sitio hasta que el mismo no haga logout a su cuenta. Seria mas o menos esto:
Código PHP:
<?php
include_once('set_app.php');
$_SESSION['uUsuario'] = $_POST['u_username'];
$_SESSION['uNombre'] = $resultado[1];
$_SESSION['uTipo'] = $resultado[2];
$_SESSION['IDU'] = $resultado[3];
$db->Execute("DELETE FROM carro_de_compras");
header('Location: index.php');
Aqui es donde viene el problema. Intente haciendo esto directamente en el código JS: Debajo del alert donde me dice que el usuario a sido verficado (echo "0") poner este código:
Código PHP:
 document.location.href 'checkuser.php?do=credentials'
Para luego en el fichero checkuser.php coger el parametro que viene por URL y si es correcto entonces crear las sesiones, o sea algo como esto:
Código PHP:
<?php
if ($_GET['do'] == "login") {
 
$_SESSION['uUsuario'] = $_POST['u_username'];
 
$_SESSION['uNombre'] = $resultado[1];
 
$_SESSION['uTipo'] = $resultado[2];
 
$_SESSION['IDU'] = $resultado[3];
 
$db->Execute("DELETE FROM carro_de_compras");
 
header('Location: index.php');
}
Pero si lo hago asi entonces no me funciona lo otro, la funcion de JS. Intente hacerlo directamente dentro de mismo echo "0". Así en esta forma:
Código PHP:
<?php
include_once('set_app.php');
$existe $db->Execute("SELECT COUNT(IDU) AS cantidad, UNombre, UTipo, IDU FROM bk_usuarios WHERE (UUsername='".$_GET['username']."') AND (UPassword='".$_GET['pass']."') AND (UActivo=1) GROUP BY IDU,UTipo ");
$resultado $existe->fetchRow();
if ( 
$resultado['cantidad'] > ) {
  echo 
"0";
  
$_SESSION['uUsuario'] = $_POST['u_username'];
  
$_SESSION['uNombre'] = $resultado[1];
  
$_SESSION['uTipo'] = $resultado[2];
  
$_SESSION['IDU'] = $resultado[3];
  
$db->Execute("DELETE FROM carro_de_compras");
  
header('Location: index.php');
} elseif (
$resultado[0] <= 0) {
  echo 
"1"
}else {
  echo 
"2";

?>
Pero tampoco me funciono. Alguna sugerencia ??

Salu2
__________________
Ing. Reynier Pérez Mira
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:16.