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] [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> </td> <td><input type="submit" class="button" name="submit" value="Entrar ..." /></td> <td><input type="reset" class="button" name="limpiar" value="Limpiar ..." /></td> <td> </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"> 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() { 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] [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 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 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
|