Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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
[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:


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


Hagalo desde la funcion (ajavascript) que valida al usuario.

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:


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

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