Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: smagno en 19 Octubre 2009, 17:11 pm



Título: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP (SOLUCIONADO)
Publicado por: smagno en 19 Octubre 2009, 17:11 pm
Código:
[code][code][code]
HOLA NECESITO QUE ME EJECUTE EL INDEX.PHP EN OTRA PAGINA NO EN LA MISMA
DESPUES DE VALIDAR EL USUARIO QUE ESTOY HACIENDO MAL.

DE ANTEMANO MUCHAS GRACIAS



[code LOGIN.PHP]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
   <title>Acceso al sistema</title>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    <link type="text/css" rel="stylesheet" href="screen.css" />
    
    <script language="‭‬‭‬javascript" type="text/‭‬‭‬javascript" src="js/ajax.js"></script>
    
<script type="text/‭‬‭‬javascript">
      
   $(function() {
      // highlight
      var elements = $("input[type!='submit'], textarea, select");
      elements.focus(function(){
         $(this).parents('li').addClass('highlight');
      });
      elements.blur(function(){
         $(this).parents('li').removeClass('highlight');
      });
      
      $("#frmlogin").validate()
   });
   </script>
 
</head>
<body>
   <div id="page">
    
        <div id="header">
            <table width="800" border="0" class="">
                <tr>
                    <td><img src="img/logo.jpg" width="228" height="77" /></td>
                    <td>
                    <h1>SISTEMA CONTROL DE RECAUDOS (RECAUDOS-WEB)</h1>
                    </td>
                </tr>
            </table>
        </div>
       
       <div id="content" >
          <p id="status"></p>
            <form name="frmlogin" id="frmlogin" method="POST" action="#" onSubmit="enviarAccesoUsuario(); return false">

            <fieldset>
               <legend>Acceso al Sistema</legend>
                    
                    <ul>
                        <li>
                           <label for="usuario"><span class="required">Usuario : </span></label>
                            <input name="usuario" type="text" class="text required" id="usuario" size="20" maxlength="10" minlength="4" />
                       </li>
                        <li>
                            <label for="pass1"><span class="required">Clave : </span></label>
                            <input name="pass1" type="password" class="text required" id="pass1" size="20" maxlength="10" minlength="4" />
                        </li>
                        <li>
                     <label class="centered info"><a id="registrar" href="frmusuarios.php">Registrar ...</a></label>
                  </li>
                    </ul>
            </fieldset>
                <fieldset class="submit" align="center">
                   <table width="60%" border="0" >
                       <tr>
                        <td>&nbsp;</td>
                     <td><input type="submit" class="button" name="submit" value="Entrar ..." /></td>
                     <td><input type="reset" class="button" name="limpiar" value="Limpiar ..." /></td>
                     <td>&nbsp;</td>
                        </tr>
                    </table>
                </fieldset>

               <div class="clear"></div>
                <div id="resultado"></div>
         </form>
        </div>
</div>
</body>
</html>

[/code]


[code AJAX.JS]

function objetoAjax(){
   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 enviarAccesoUsuario(){
   
    //donde se mostrará lo resultados
     divResultado = document.getElementById('resultado');
     divResultado.innerHTML = '<img src="img/loading.gif">';
  
     //valores de las cajas de texto
     usu = document.frmlogin.usuario.value;
     pa1 = document.frmlogin.pass1.value;
   
   //instanciamos el objetoAjax
     ajax=objetoAjax();
     //uso del metodo POST
     //archivo que realizará la operacion
     //validarusuario.php
     ajax.open("POST", "validarusuario.php", true);
     
   ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {
        
      //mostrar resultados en esta capa
        divResultado.innerHTML = ajax.responseText
     }
  }

  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  //enviando los valores
  ajax.send("usuario="+usu+"&pass1="+pa1)
}

[/code]

[code VALIDARUSUARIO.PHP]

<?php

session_start(); //abrimos la sesion para poder despues pasar variables de una pagina a otra

include_once('Connections/miconexionsql.php');

function quitar($mensaje) //funcion para quitar caracteres no permitidos
{
    $nopermitidos = array("'",'\\','<','>',"\"",";","$","%","&","/","|","{","}","[","]","+","#");
    $mensaje = str_replace($nopermitidos, "", $mensaje);
    return $mensaje;
}
function mysql_escape($cadena) {
    if(get_magic_quotes_gpc() != 0) {
        $cadena = stripslashes($cadena);
    }
    return mysql_real_escape_string($cadena);
}  

//variables POST

$estado= "0";  //creo la variable $estado=0 para compararla despues con el campo de la BD estado y si son cero le dejara pasar

$usuario  = $_POST['usuario'];
$pass1    = $_POST['pass1'];

if($usuario==NULL) {
   echo "No permite [USUARIO] en blanco.";
   return false;
}
if($pass1==NULL) {
   echo "No permite [CLAVE] en blanco.";
   return false;
}

Conectar();
$result = mysql_query("SELECT usuario, clave, estado FROM ma_usuarios WHERE usuario='$usuario'");
if($row = mysql_fetch_array($result)){

   // ciframos "Ciframos" el password
   $clave = sha1(md5($pass1));

   if($row['clave'] == $clave){
       $_SESSION["s_usuario"] = $row['usuario'];
        
      if( $estado == $row['estado']){  
           ?>
               <SCRIPT LANGUAGE="‭‬‭‬javascript">
               location.href = "index.php";
               </SCRIPT>
            <?
      }else{
            echo '<span class="Estilo5">Cuenta de Usuario sin activar</span>';
           session_destroy();
      }
    }else{
       echo '<span class="Estilo5">Clave incorrecta.</span>';
   }
}else{
   echo '<span class="Estilo5">Usuario no Existente.</span>';
}
mysql_close();

?>

[/code]


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Mr. Crowley en 19 Octubre 2009, 17:36 pm
Hola, no he analizado mucho el codigo, pero revise esta parte:

Código:
<SCRIPT LANGUAGE="‭‬javascript">
    location.href = "index.php";
</SCRIPT>

Hagalo desde la funcion (ajavascript) que valida al usuario.
Código:
window.location.href="loquesea.php";


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Azielito en 19 Octubre 2009, 18:55 pm
ajax no ejecuta javascript cuando carga un archivo, o sea, si el archivo cargado tiene javascript no lo ejecuta, por eso no te esta funcionando U_U



Busca en inet que han hecho una solucion, o sea

básicamente tienes que captar el contenido del archivo cargado
buscar los tags "<script" </script>" y todo o que este dentro ponerlo dentro de un "eval()" =\



Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Mr. Crowley en 19 Octubre 2009, 19:08 pm
Sorry, es que ahora no andaba con mucho tiempo y tuve que salir. Usa solucion facil puede ser la siguiente:

En el script php, hacer la validacion y devolverle al ajax (por ejemplo) la cadena "hola", con javascript se toma ese valor y se redirecciona:

Código:
ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {
       
      //mostrar resultados en esta capa
        if(ajax.responseText=="hola"){
             window.location.href="donde_sea.php";
        }else{
             divResultado.innerHTML = ajax.responseText
        }
     }
  }

Listo.. eso debe funcionarle perfectamente  ;D


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Hadess_inf en 19 Octubre 2009, 19:09 pm
yo pense que era

document.location.href= 'pagina'


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Mr. Crowley en 19 Octubre 2009, 19:14 pm
window.location.href="pagina"; carga la nueva pagina y habilita el boton de atras (seria algo asi como hacer clic en un enlace que le envia a otra pagina). document.location.href="pagina"; no habilita el boton de atras...


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Azielito en 20 Octubre 2009, 00:02 am
dado el caso Mr. Crowley ha dado la respuesta :xD

si ya cargo yl el texto es "xxxxx"
   hacer lo que uno imageine, por ejemplo, otra funcion en ajax llamando la pagina de inicio
fin

:xD


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: smagno en 20 Octubre 2009, 00:17 am
Código:
[code]
Gracias Mr. Crowley y a todos en el foro...

PERO ME PRESENTA LO SIGUIENTE.

EN FORMA LOCALHOST ME FUNCIONA COMO QUIERO. PERFECTO
PERO CUANDO LO SUBO A INTERNET ME SUCEDE QUE ECHO "Usuario Valido" ME QUEDA SOLO Y NO PASA AL INDEX.PHP.

LA VERDAD  SOY NUEVO EN AJAX - PHP - MYSQL TENGO A PENAS UN MES PERO ESTOY APREDIENDO GRACIAS A TODOS USTEDES.
AGRADECIENDOLES DE ANTEMANO..

BUENO LA MODIFICACION QUE HICE FUE LA SIGUIENTE.

[code]

[code VALIDARUSUARIO.PHP]

if($row = mysql_fetch_array($result)){

   // ciframos "Ciframos" el password
   $clave = sha1(md5($pass1));

   if($row['clave'] == $clave){
       $_SESSION["s_usuario"] = $row['usuario'];
        
      if( $estado == $row['estado']){
         echo "Usuario Valido";
      }else{
                    echo '<span class="Estilo5">Cuenta de Usuario sin activar</span>';
           session_destroy();
      }
    }else{
       echo '<span class="Estilo5">Clave incorrecta.</span>';
   }
}else{
   echo '<span class="Estilo5">Usuario no Existente.</span>';
}

[/code]


[code AJAX.JS]

function enviarAccesoUsuario(){
   
    //donde se mostrará lo resultados
     divResultado = document.getElementById('resultado');
     divResultado.innerHTML = '<img src="img/loading.gif">';
  
     //valores de las cajas de texto
     usu = document.frmlogin.usuario.value;
     pa1 = document.frmlogin.pass1.value;
   
   //instanciamos el objetoAjax
     ajax=objetoAjax();
     //uso del metodo POST
     //archivo que realizará la operacion
     //validarusuario.php
     ajax.open("POST", "validarusuario.php", true);
     
   ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {
        
         // alert(ajax.responseText)
         if (ajax.responseText=="Usuario Valido"){
            window.location.href="index.php";
         }else{
            divResultado.innerHTML = ajax.responseText
         }
   }
     }

   ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
   //enviando los valores
   ajax.send("usuario="+usu+"&pass1="+pa1)
}

[/code]


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Mr. Crowley en 20 Octubre 2009, 01:04 am
Como es eso de que "le queda solo y no pasa al index"??  :-(


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: smagno en 20 Octubre 2009, 01:13 am
SI CLARO ME MUESTRA LA PAGINA EN BLANCO MOSTRANDOME EN LA PARTE SUPERIOR "Usuario Valido" Y QUEDA AHI. Y NO PASA AL INDEX.PHP EN FORMA LOCALHOST SI FUNCIONA PERFECTO.


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Mr. Crowley en 20 Octubre 2009, 01:18 am
Ok, entonces eso quiere decir que no esta funcionando la condicion ajax.responseText=="Usuario Valido"...
se la salta y pasa a divResultado.innerHTML = ajax.responseText


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: Mr. Crowley en 20 Octubre 2009, 01:46 am
Código:
Este es un ejemplo basico:

Archivo login.php (no se porque le puse extension .php, total no es requerido)
[code]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ejemplo Ajax</title>
<script type="text/javascript" language="javascript" src="ajax.js"></script>
</head>
<body>
<div id="divCapa">Hola mundo!</div>
<form name="frmLogin">
    Usuario:&nbsp;<input type="text" id="txtUsuario" name="txtUsuario">
    Contrase&ntilde;a:&nbsp;<input type="password" id="txtContrasena" name="txtContrasena">
    <input type="button" value="Ingresar" onClick="javascript:fntValidar_Usuario();">
</form>
</body>
</html>


Archivo ajax.js:
function fntAjax(){
    var xmlhttp = false;
      try {
         //crear objeto ajax para navegadores distintos a ie
         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
              //crear objeto para ie
               xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) {
               xmlhttp = false;
         }
      }

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

function fntValidar_Usuario(){
   var txtUsuario, txtContrasena, ajax = new fntAjax();
   
      divCapa = document.getElementById('divCapa');
      txtUsuario = document.getElementById('txtUsuario').value;
      txtContrasena = document.getElementById('txtContrasena').value;
      ajax.open("GET", "ejemplo.php?txtUsuario=" + txtUsuario + "&txtContrasena=" + txtContrasena, true);

      ajax.onreadystatechange=function() {
         if (ajax.readyState==4) {
            if(ajax.responseText=="ok"){
               window.location.href="http://www.kubicalorg.net";
            }else{
               divCapa.innerHTML = ajax.responseText;
            }
         }else{
            divCapa.innerHTML = 'Por favor, espere un momento...';
         }
      }
   ajax.send(null)   
}
[/code]

Archivo ejemplo.php
Código:
<?php
if(trim($_GET["txtUsuario"])=="hola" and trim($_GET["txtContrasena"])=="mundo"){
echo "ok";
}else{
echo "El usuario no es v&aacute;lido";
}
?>

Espero que con eso se le aclaren las dudas, es un ejemplo basico. Creo que esta claro  :xD

La contrasena para el ejemplo es mundo y el usuario hola.


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP
Publicado por: smagno en 20 Octubre 2009, 19:31 pm
Mr. Crowley

Buen colaborador. muy buen ejemplo.
le doy cinco estrellas.


Título: Re: LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP (SOLUCIONADO)
Publicado por: Mr. Crowley en 20 Octubre 2009, 20:06 pm
Pura vida! Me alegra que le sirviera  ;D