Fabyo 66 Denunciar post Postado Janeiro 31, 2006 Atendendo a pedidos, criei um sistema que valida se o usuario esta cadastrado antes mesmo de acabar de concluir o cadastro é semelhante o sistema do forum ,se vcs tentarem se cadastrar com um nome de usuario que ja existe aparecera uma mensagem quando o campo nome perder o foco bom o sistema é muito simples nao tem segredo, e nao fiquei perdendo tempo enfeitando o codigo com css nem nada o foco aqui é o ajax e mostrar que ele retorna true ou false depois de digitar o nome de usuario cadastro.html <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1257" /> <title>Login</title> <style> <!-- html, body { margin:0; padding:0; } fieldset { width:260px; margin:0 auto; padding:30px; } .texto { width:250px; border:1px solid gray; } .erro { width:250px; border:1px solid red; } .alerta2 { border:1px solid gray; } --> </style> <script src="ajax.js" type="text/javascript"></script> <script src="funcoes.js" type="text/javascript"></script> </head> <body> <fieldset> <legend>Usuario</legend> <form id="form1" name="form1" method="post" action="login.php"> <div id="alerta"></div> <label>Login</label><br /> <input name="login" id="login" type="text" maxlength="30" class="texto" onblur="java script: envia('receber.php', 'POST', false);" /><br /> <labeL>Senha</labeL><br /> <input name="senha" id="senha" type="password" maxlength="30" class="texto" /><br /> <input name="botao" type="submit" value="Enviar" /> </form> </fieldset> </body> </html> ajax.js: function ajax() { }; ajax.prototype.iniciar = function() { try{ this.xmlhttp = new XMLHttpRequest(); }catch(ee){ try{ this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ this.xmlhttp = false; } } } return true; } ajax.prototype.ocupado = function() { estadoAtual = this.xmlhttp.readyState; return (estadoAtual && (estadoAtual < 4)); } ajax.prototype.processa = function() { if (this.xmlhttp.readyState == 4 && this.xmlhttp.status == 200) { return true; } } ajax.prototype.enviar = function(url, metodo, modo) { if (!this.xmlhttp) { this.iniciar(); } if (!this.ocupado()) { if(metodo == "GET") { this.xmlhttp.open("GET", url, modo); this.xmlhttp.send(null); } else { this.xmlhttp.open("POST", url, modo); this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); this.xmlhttp.setRequestHeader("Pragma", "no-cache"); this.xmlhttp.send(url); } if (this.processa) { return unescape(this.xmlhttp.responseText.replace(/\+/g," ")); } } return false; } funcoes.js: function envia(url, metodo, modo) { var login = document.getElementById('form1').login.value; remoto = new ajax(); xmlhttp = remoto.enviar(url + "?login=" + login, metodo, modo ); if(xmlhttp) { document.getElementById('login').className = 'erro'; document.getElementById('alerta').className = 'alerta2'; document.getElementById("alerta").innerHTML = 'Esse usuario ja esta cadastrado'; } else { document.getElementById('login').className = 'texto'; document.getElementById('alerta').className = ''; document.getElementById("alerta").innerHTML = ''; } } receber.php: <?php $texto = $_REQUEST["login"]; // no lugar do if basta fazer uma conexao com o banco e um select pesquisando o nome do usuario se ja existe //acho que todos sabem fazer isso ne? if($texto == "Fulano") { echo true; } else { echo false; } ?> bom ta ai só com o funcional para vcs adaptarem do jeito que achar melhor e quem nao conseguir só postar as duvidas Compartilhar este post Link para o post Compartilhar em outros sites
Epyllion 0 Denunciar post Postado Janeiro 31, 2006 Parabéns, Fabyo.Mais um ótimo tutorial. :clap: :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
cocacola 0 Denunciar post Postado Março 5, 2006 era problema aqui mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Milton Júnior 0 Denunciar post Postado Março 23, 2006 parabéns Fabyo, muito bom! mas fiquei com 3 duvidas: o que fazem as funcoes ajax.prototype.ocupado() e ajax.prototype.processa()? porque você usou o modo síncrono(false)? você sabe que ele pode congelar o browser do usuario se o script demorar muito pra ser executado. vi essa explicação neste tuto http://www.tableless.com.br/artigos/ajaxdemo2/ se eu mudar para modo=true precisaria alterar mais alguma coisa do script? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Março 23, 2006 nao é só mudar de false para true mesmo e processa e ocupado tem haver com o status da conexao do ajax, só você ver uma tabela dai você entende melhor e os numeros que o status retorna Compartilhar este post Link para o post Compartilhar em outros sites
crucifier 0 Denunciar post Postado Março 29, 2006 muito bom kra...otimo script...sem comentarios!era exatamente o q eu estava procurando! :joia: Compartilhar este post Link para o post Compartilhar em outros sites
flavialieggio 0 Denunciar post Postado Abril 5, 2006 Se alguem ler esse topico, por favor me ajude! Amei o tutorial, você esta de parabens Fabyo!!! Mas tem algo que nao estou conseguindo fazer para validar meu usuario... acho que e alguma coisa na hora da select... na verdade eu utilizo procedures.. vou postar o codigo do RECEBE.PHP <?php$texto = $_REQUEST["login"];// no lugar do if basta fazer uma conexao com o banco e um select pesquisando o nome do usuario se ja existe//acho que todos sabem fazer isso ne?$db = ocilogon("n "," n"," n");if(!$db){ die("<script>alert("Ocorreu um erro na tentativa de conexão com o Servidor!");javascript:window.location='fundo.php';</script>"); }else{ $curs = ocinewcursor($db); $stmt = ociparse($db,"begin sipesca.pescasp001_usuario(:p_cursor,'$texto'); end;"); ocibindbyname($stmt,":p_cursor",$curs,-1,OCI_B_CURSOR); ociexecute($stmt); ociexecute($curs); $sucess = ocifetchinto($curs,$data,OCI_RETURN_NULLS|OCI_ASSOC); if($sucess){ for($i=1; $i < $curs; $i++){ $cd_usuario = $data["NU_USUARIO"]; $privilegio = $data["NU_PRIVILEGIO"]; $nome_usuario = $data["DE_USUARIO"]; $login = $data["DE_LOGIN"]; $senha = $data["DE_SENHA"]; if($nome_usuario) { echo true; } else { echo false; } } // fecha else } // fecha o loop } //fecha o sucessOCIFreeCursor($curs);}ocilogoff($db);?>dai toda hora que digito ate mesmo um nome de um usuario que nao existe, ele afirma que o usuario ja existe..... Agradeço pela atenção!! Flávia Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Abril 5, 2006 Você precisa imprimir true ou false, ou seja coloque eles entre aspas para serem impressos na tela. <?php$texto = $_REQUEST["login"];// no lugar do if basta fazer uma conexao com o banco e um select pesquisando o nome do usuario se ja existe//acho que todos sabem fazer isso ne?$db = ocilogon("n "," n"," n");if(!$db){ die("<script>alert(\"Ocorreu um erro na tentativa de conexão com o Servidor!\");javascript:window.location='fundo.php';</script>"); }else{ $curs = ocinewcursor($db); $stmt = ociparse($db,"begin sipesca.pescasp001_usuario(:p_cursor,'$texto'); end;"); ocibindbyname($stmt,":p_cursor",$curs,-1,OCI_B_CURSOR); ociexecute($stmt); ociexecute($curs); $sucess = ocifetchinto($curs,$data,OCI_RETURN_NULLS|OCI_ASSOC); if($sucess){ for($i=1; $i < $curs; $i++){ $cd_usuario = $data["NU_USUARIO"]; $privilegio = $data["NU_PRIVILEGIO"]; $nome_usuario = $data["DE_USUARIO"]; $login = $data["DE_LOGIN"]; $senha = $data["DE_SENHA"]; if($nome_usuario) { echo "true"; } else { echo "false"; } } // fecha else } // fecha o loop } //fecha o sucessOCIFreeCursor($curs);}ocilogoff($db);?> Compartilhar este post Link para o post Compartilhar em outros sites
micox 2 Denunciar post Postado Abril 5, 2006 Quem fabricou a classe javascript ajax que tá no ajax.js? É que eu vou usar ela como padrão nos meus códigos ajax e acho que seria bom dar os créditos pro cara. alguem sabe? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 5, 2006 Eu que criei, mas é tudo padrao nao muda nada, e sabe como é nada se cria tudo se copia, para eu fazer esse script eu tive que ver outros e entender e modificar e assim vai pode usar de boa t+ Compartilhar este post Link para o post Compartilhar em outros sites
flavialieggio 0 Denunciar post Postado Abril 6, 2006 Você precisa imprimir true ou false, ou seja coloque eles entre aspas para serem impressos na tela.Olá Douglas, Obrigada pela atenção, mas nao deu certo.... continua na mesma...qdo digito o nome de um usuario que nao existe ele afirma que existe ..... realmente nao sei..... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 6, 2006 dentro do for da um echo no $data["DE_USUARIO"] e ve o que aparece você diz que mesmo que você digite um usuario que nao existe ele fala que existe entao ve ai o resultado desse select Compartilhar este post Link para o post Compartilhar em outros sites
flavialieggio 0 Denunciar post Postado Abril 7, 2006 Olá Fabyo, Desculpa a demora para responder e muito obrigada por atender ao meu pedido.... valeu mesmo, mas nao apareceu nada!! E continua fazendo a mesma coisa, qdo digito o nome de um user que nao existe ele afirma que existe..... []´s Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 7, 2006 entao mas testa seu select para ver o que ta acontecendo se você faz um select procurando por um nome se ele nao existe nao pode dizer que existe o erro deve estar no resultado do seu select debuga ele para ver Compartilhar este post Link para o post Compartilhar em outros sites
flavialieggio 0 Denunciar post Postado Abril 7, 2006 Ah ta.... mas tira uma duvida... eu uso essa select numa outra forma de autenticação de usuario... logico que nao e com o ajax, a forma simples..... e funciona beleza... vou postar pra tu ver: <?php$log = $_POST["login"];$pass = $_POST["senha"];session_start();$db = ocilogon("ss","sss","ssss");if(!$db){ die("<script>alert("Ocorreu um erro na tentativa de conexão com o Servidor!");javascript:window.location='index.php';</script>"); } else{ $curs = ocinewcursor($db); $stmt = ociparse($db,"begin sipesca.pescasp001_usuario(:p_cursor,'$log'); end;"); ocibindbyname($stmt,":p_cursor",$curs,-1,OCI_B_CURSOR); ociexecute($stmt); ociexecute($curs); $sucess = ocifetchinto($curs,$data,OCI_RETURN_NULLS|OCI_ASSOC); if($sucess){ for($i=1; $i < $curs; $i++){ $cd_usuario = $data["NU_USUARIO"]; $privilegio = $data["NU_PRIVILEGIO"]; $nome_usuario = $data["DE_USUARIO"]; $login = $data["DE_LOGIN"]; $senha = $data["DE_SENHA"]; if(md5($pass) != $senha){ echo "<script>alert("Senha incorreta, tente novamente!");javascript:window.location='index.php';</script>"; exit; } // fecha if else{ $_SESSION["DE_LOGIN"] = $login; $_SESSION["DE_SENHA"] = $senha; if($privilegio < '4'){ echo "<script>alert("Olá, seja bem vindo a área restrita!");javascript:window.location='principal.php';</script>"; exit; } else { echo "<script>alert("Olá, seja bem vindo a área do administrador, $nome_usuario!");javascript:window.location='adm/adm.php';</script>"; exit; } } // fecha else } // fecha o loop } //fecha o sucess else{ die("<script>alert("Usuário incorreto ou não cadastrado no Sistema!");javascript:window.location='index.php';</script>"); } ocifreecursor($curs); ocilogoff($db); }?>So que ai amei esse tuto e to querendo ver se consigo implementar.... Mas de qualquer forma to testando aqui []´s Compartilhar este post Link para o post Compartilhar em outros sites
Loki-kun 0 Denunciar post Postado Abril 11, 2006 Bom eu fiz tudo bunitinho no meu pc rodando o apache ficou beleza rodou uma maravilhaMais na hora de enviar para a internet ai veio a caca não funciona de jeito algumAlguem sabe o que está havendo?Flws Compartilhar este post Link para o post Compartilhar em outros sites
MrEd 0 Denunciar post Postado Abril 22, 2006 Fabyo, como eu faço se eu quiser que ao invés de dizer que o usuário existe, eu imprimir o nome do usuário num campo qualquer do form? A minha dúvida é para fazer com que o AJAX traga o nome que esta cadastrado no BD. if(xmlhttp) { document.getElementById("mName").innerHTML = 'o que eu tenho que por aqui pra imprimir o nome que esta no bd???';} Se alguem além do Fabyo puder responder eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 24, 2006 só fazer um select e retornar o nome do usuario o resultado você pega no xmlhttp.responseText Compartilhar este post Link para o post Compartilhar em outros sites
MrEd 0 Denunciar post Postado Abril 24, 2006 só fazer um select e retornar o nome do usuario o resultado você pega no xmlhttp.responseText Foi isso que eu imaginei, so que qnd eu faço isso o valor que esta sendo impresso pelo AJAX é undefined. Eu ja verifiquei se o select esta retornando algo e esta. Compartilhar este post Link para o post Compartilhar em outros sites
augustogava 0 Denunciar post Postado Maio 4, 2006 Eu fiz aqui e tive que alterar para funcionar pois sempre dava que existia <?phpinclude("conecta.php");$pc=$_SESSION["mpc"];$texto = $_REQUEST["login"];$tipo = $_REQUEST["tipo"];$sqla=mysql_query("SELECT * FROM apqp_car WHERE numero='$texto' AND peca='$pc' AND tipo='$tipo'");if(mysql_num_rows($sqla)){ echo 1;}else{ echo 0;} //print "SELECT * FROM apqp_car WHERE numero='$texto' AND peca='$pc'";?> function envia(url, metodo, modo, tipo){ var login = document.getElementById('frmcar').numero.value; //var tipo = document.getElementById('frmcar').tipo.value; remoto = new ajax(); xmlhttp = remoto.enviar(url + "?login=" + login + '&tipo=' + tipo, metodo, modo ); if(xmlhttp=='1') { document.getElementById("teste2").innerHTML = 'Número já cadastrado!'; document.getElementById('frmcar').incluir.disabled=true; } else { document.getElementById("teste2").innerHTML = ''; document.getElementById('frmcar').incluir.disabled=false; } } Compartilhar este post Link para o post Compartilhar em outros sites