Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jcfalcone

Problemas com validação,Ajax+php

Recommended Posts

pessoal

to com um novo problema

eu peguei o topico aqui de validação de ajax com php

e to com um problema

eu coloco no meu codigo e eu nao sie pq nao ta saindo como eu quero

 

 

______________________________________________________________________________

 

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;}

 

______________________________________________________________________________

 

valida_login.php

<?$login = $_REQUEST["login"];include("connection/connect.php");require("connection/connect.php");mysql_connect  ($host, $user, $pass);mysql_select_db($db);// Login	// Verifica se o Login está vazio o campo login	if (!empty($login))	{		$erro = 1;	}	// Verifica se ja existe algum login igual	if (@mysql_num_rows(mysql_query("SELECT login FROM usuarios WHERE login = '$login'")) != 0)	{		$erro = 2;	}	// Testa se o login é numerico	if (is_numeric($login))	{		$erro = 3;	}	// Verifica se o nome tem caracter especial   	if( ereg("[\()-.,:;*&¬!?|+}{/]", $login) )   	{		  $erro = 4;   	}   	If(empty($erro))   	{	   Echo $erro;   	}   	Else   	{	   Echo 0;   	}?>

 

______________________________________________________________________________

 

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==0) {		document.getElementById('login').className = 'erro';		document.getElementById('alerta').className = 'alerta2';		document.getElementById("alerta").innerHTML = 'nao chei nd';	}	else	{	if(xmlhttp==1) {		document.getElementById('login').className = 'erro';		document.getElementById('alerta').className = 'alerta2';		document.getElementById("alerta").innerHTML = 'login vazio';	}	  if(xmlhttp==2)	  {		document.getElementById('login').className = 'texto';		document.getElementById('alerta').className = '';		document.getElementById("alerta").innerHTML = 'Esse usuario ja esta cadastrado';	  }	  if(xmlhttp==3)	  {		document.getElementById('login').className = 'texto';		document.getElementById('alerta').className = '';		document.getElementById("alerta").innerHTML = 'Login é numerico';	  }	  if(xmlhttp==4)	  {		document.getElementById('login').className = 'texto';		document.getElementById('alerta').className = '';		document.getElementById("alerta").innerHTML = 'Login Possui Caracter Especial';	  }	}}

______________________________________________________________________________

 

cadastro.php

<?phpsession_start();?><!--maioria da cores:#6185B7--><html>	<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1257"><script src="ajax.js" type="text/javascript"></script><script src="funcoes.js" type="text/javascript"></script>		<title>Wolf : Cadastro</title><!--Vinculando a CSS--><link rel=stylesheet href="style.css" type="text/css">			<script>function tick() {	var hours, minutes, seconds;	var intHours, intMinutes, intSeconds;	var today;	today = new Date();	intHours = today.getHours();	intMinutes = today.getMinutes();	intSeconds = today.getSeconds();	hours = intHours + ":";	if (intMinutes < 10) {		 minutes = "0"+intMinutes+":";	} else {		 minutes = intMinutes+":";	}	if (intSeconds < 10) {		 seconds = "0"+intSeconds+" ";	} else {		 seconds = intSeconds+" ";	}	timeString = hours+minutes+seconds;	Clock.innerHTML = timeString;	window.setTimeout("tick();", 1000);}window.onload = tick;</script>	</head>		<body bgcolor="#FFFFFF" style="scrollbar-face-color:#5D5B5B; scrollbar-highlight-color:#000000; scrollbar-shadow-color:#000000; scrollbar-3dlight-color:#FFFFFF; scrollbar-arrow-color:#FFFFFF; scrollbar-track-color:#FFFFFF; scrollbar-darkshadow-color:#FFFFFF;"><!--Relógio-->			<div id="Clock" style="font-family: Verdana; font-weight:#; color: #FFFFFF; font-size:12px; text-align:center;"></div><!--Figuras iniciais-->			<?php				 include ("figuras_iniciais.php");			?><!--Login-->		<div class="login">			<?php				 include ("campo_login.php");			?>		</div><!--Links principais-->		   <?php				 include ("links/link_principal.php");			?><!--Cadastro de Clientes-->			<div class="qnoti_cadastro">						  <p>					   <form name="forms1"  method="post" action="cadastro_usuario.php">							 <table border=0>							 	<td class=labels>Login :<div id="alerta"></div><br><input name="login" type="text" id="nome" size=26 colspan="0" maxlength="25" onblur="login('valida_login.php', 'POST', false);"></td>								 	<tr>										<td class=labels>Senha :<br><input name="senha" type="password" id="senha" size=24 maxlength="20"></td>									   	<td class=labels>Confirmação de Senha :<br><input name="senha2" type="password" size=24 id="senha2" maxlength="20"></td>							 </table>							 <table border=0>				   					<td class=labels>Nome :<br><input name="nome" type="text" id="nome" size=40 maxlength="100"></td>				   					<tr>				   					<td class=labels>Sobrenome :<br><input name="sobrenome" type="text" id="sobrenome" size=55 maxlength="100"></td>									</table>									<table border=0>											<td class=labels>CPF :<br><input name="cpf" type="text" id="cpf" size=10 maxlength="11"></td>										   	<td class=labels>RG :<br><input name="rg" type="text" id="rg" size=8 maxlength="9"></td>									</table>									<table border=0>										<td class=labels>E-Mail :<br><input name="email" type="text" id="email" size="50" maxlength="80"></td>									  </table>								   	<table border=0>									 		<td class=labels>Endereço :<br><input name="endereco" type="text" id="endereco" size=90 maxlength="255"></td>										 	<td class=labels>Numero :<br><input name="numero" type="text" id="numero" size=2 maxlength="4"></td>								   	</table>									  <table border=0>				   	<td class=labels>Complemento :<br><input name="complemento" type="text" id="complemento" size="78"	 maxlength="100"></td>				   	<td class=labels>CEP :<br><input name="cep" type="text" id="cep" size=6 maxlength="8"></td>	   				<?php						 include ("uf.php");					 ?>				</table>			   	<table border=0>				   	<tr>				   	<td class=labels>Prefixo  :<br><input name="prefixo" type="text" id="prefixo" size=1 maxlength="3"></td>				   	<td class=labels>Telefone :<br><input name="telefone" type="text" id="telefone" size=6 maxlength="8"></td>				   	<tr>				   	<td class=labels>Prefixo  :<br><input name="prefixo2" type="text" id="prefixo2" size=1 maxlength="3"></td>				   	<td class=labels>Telefone :<br><input name="telefone2" type="text" id="telefone2" size=6 maxlength="8"></td>				   	<tr>				   	<td class=labels>Prefixo  :<br><input name="prefixo3" type="text" id="prefixo3" size=1 maxlength="3"></td>				   	<td class=labels>Celular  :<br><input name="celular" type="text" id="celular" size=6 maxlength="8"></td>				</table>				</div>					<div class="botao_cadastro"><input name="envia" type="submit" id="envia" value="Cadastrar >>"></td></div>			 </form>			 <p> </p>			 </table>		</body></html>

 

Alguem pode me ajuda ele só ta entrando na condição = 0

 

tbm quero sabe se tem algum jeito melhor de faze isso,pois comecei a poco tempo a mexe com ajax e nao conheço muito bem

 

e se tem alguma forma de coloca todas as validações em um só lugar e o ajax fo pegando conforme o campo que chama

 

deis de ja obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

O pessoal tem medo de código gigantesco (eu por exemplo).É melhor se voce postar apenas onde está o problema e descrever melhor o problema.Descreva como está atualmente e aonde voce quer chegar. E também qual o erro.Assim poderão ajudar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

descupa cara http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

é que eu so meio novo nos foruns de programação

entao vamos la

 

Eu tenho um formulario de cadastro para o meu site

 

e eu estou tentando fazer um sistema de validação igual ao do forum

em que ao sai do campo ele automaticamente valida o campo e mostra a imagem de confirmado ou negado

 

e pra tenta faze o código eu usei um tutorial que tem aqui

 

só que se eu copio e colo o codigo que ta no tutorial funciona

 

e se eu tento adapta pro meu da problema

 

eu coloquei a pagina toda pq tem coisa que ta na head e tem coisa que ta na body

 

mais o problema mesmo ta no ajax

que quando eu entro no campo e saio ele da erro.

 

e se eu consigo po pra funciona

eu nao consigo arruma o ajax pra mostra os erros

 

pronto eheheheh

se fico complicado eu explico mais detalhado

 

eu só quero valida como o forum

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Perguntas:1) Você já fez alguma vez validação em formulários SEM AJAX??2) Por que, em vez de copiar e colar o código do tutorial, voce não vai fazendo passo a passo, testando e vendo onde pode dar erro? Assim voce aprende, faz certinho e ainda elimina os erros na hora em que eles aparecem. Não copie e cole, faça passo a passo, assim voce achará o erro.3) Voce tem uma boa experiência com Javascript?? Se não tem, não te aconselho a mexer com ajax...

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) ja sim ele fazia isso antes só que eu resolvi melhora o sistema de validação pois eu tava perdendo os valores quando o usuario escrevia alguma coisa errado.2)é eu to ligado só que eu nao sei muito bem oq cada linha faiz pra min sabeeu to tentando entende ainda mais ja to pegando uma boa noção3)boa nao mais ue ja estudei um poco e ja mexi um poco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu dei uma procurada e você tem alguns arquivos .js, onde o seu ajax carrega para a memória esses arquivos??

Compartilhar este post


Link para o post
Compartilhar em outros sites

como eu nao conheço muitoseria o funcoes.jsque ele chama o valida_login.phpe dependendo do resutado era pra ele entra nas condiçoese só pra teste escreve numa div chamada alerta o problema que deusó que ele nao fazia isso ou dava erroou entrava só no igual a 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvidepois de muito sufoco e apanha e bate muitoeu resolvi o problemaMais ainda fico aquele ar de duvido pelo ajaxainda não entendi oq alguns comandos fazem=Dsó que pra fica facio de entende eu vo te que refaze o cadastrovlw pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo. Parabéns, parece que voce tá indo pelo caminho certo. Aprendendo passo a passo.Sobre os comandos que não entende, posta ae que teremos o prazer de explicar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao cara me surgiu uma duvida

com a function que eu tenho pra valida

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 == '1') {		document.getElementById('login').className = 'erro';		document.getElementById('alerta').className = 'alerta2';		document.getElementById("alerta").innerHTML = 'Esse usuario ja esta cadastrado';		document.getElementById("botao").disabled = true	} else {		document.getElementById('login').className = 'alerta';		document.getElementById('alerta').className = '';		document.getElementById("alerta").innerHTML = 'Oi';		document.getElementById("botao").disabled = false	}}
Teria como eu faze retorna menssagens especificas de erro?

Tipo se só coloca numero mostra a menssagem que só tem numero

ou se coloco caracter especial ele mostra que tem caracter especial

tema lgum jeito?

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso que voce quer não terá a ver com o ajax.O seu script server-side (php ou asp) é que deverá verificar os campos que foram enviados, testar, e escrever o retorno, que será recebido pelo ajax.O ajax apenas retorna o que foi enviado pelo server-side.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso eu to ligado mais tipo o exemploq ue eu peguei ele retorna 1 ou 0 e o ajax faiz os if não teria como eu coloca pra ele mostra a menssagem especifica que vim do php?é que os que eu tenho ou volta um código ou texto para uma div ou volta 1 ou 0 e o ajax trata.Mais oq eu não entendi é como eu faria esse código mostra a menssagem e verifica se é menssagem de erro ou nao pra muda a cor da borda em verde ou vermelho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso eu to ligado mais tipo o exemploq ue eu peguei ele retorna 1 ou 0 e o ajax faiz os if não teria como eu coloca pra ele mostra a menssagem especifica que vim do php?

Não.Se voce ler direitinho lá a função enviar() verá que ela retorna false em caso de ERRO NO AJAX e UM RESPONSETEXT no caso do ajax ter conseguido carregar o texto. Ele não retorna só 0 e 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao o codigo eu fiz assim

<?php$texto = $_REQUEST["login"];include("connection/connect.php");require("connection/connect.php");mysql_connect  ($host, $user, $pass) or die (error_log());mysql_select_db($db);	if (empty($login))	{		echo "Login vazio<br />";		$erro = TRUE;	}	// Verifica se ja existe algum login igual	if (@mysql_num_rows(mysql_query("SELECT login FROM usuarios WHERE login = '$login'")) != 0)	{		echo "Login já existe<br />";		$erro = TRUE;	}	// Testa se o login é numerico	if (is_numeric($login))	{		echo "Login incorreto<br />";		$erro = TRUE;	}	// Verifica se o nome tem caracter especial   	if( ereg("[\()-.,:;*&¬!?|+}{/]", $login) )   	{		echo 'O Login não pode conter caracter especial.<br />';		  $erro = TRUE;   	}?>
Ele da o encho na menssagem.

Ai é facio eu colocaria

 

document.getElementById("alerta").innerHTML = xmlhttp

 

mais ai que ta o problema como eu faria pra sabe se a mensagem é de erro ou se a pessoa nao escreveu nd de errado

 

pq o unico jeito que eu sei é assim

 

if(xmlhttp == '1') {

document.getElementById('login').className = 'erro';

document.getElementById('alerta').className = 'alerta2';

document.getElementById("alerta").innerHTML = 'Esse usuario ja esta cadastrado';

document.getElementById("botao").disabled = true

} else {

document.getElementById('login').className = 'alerta';

document.getElementById('alerta').className = '';

document.getElementById("alerta").innerHTML = 'Oi';

document.getElementById("botao").disabled = false

}

 

ou essa que só mostra a menssagem

 

document.getElementById('login').className = 'alerta';

document.getElementById('alerta').className = '';

document.getElementById("alerta").innerHTML = xmlhttp;

document.getElementById("botao").disabled = false

Compartilhar este post


Link para o post
Compartilhar em outros sites

É simples.

 

Se ele retorna ou FALSE ou o texto é só fazer assim:

 

if(xmlhttp==false){	//erro ao requisitar dados do servidor, não foi erro do usuário}else{	//chegaram os dados do servidor corretamente.	//Agora voce testa se esses dados são de erro do usuário	//ou são dados normais que devem ser exibidos.}

Compartilhar este post


Link para o post
Compartilhar em outros sites

a ta to começando a entendeentao no else eu faria assimif(xmlhttp == '') {document.getElementById('login').className = 'alerta';document.getElementById('alerta').className = '';document.getElementById("alerta").innerHTML = 'Oi';document.getElementById("botao").disabled = false} else {document.getElementById('login').className = 'erro';document.getElementById('alerta').className = 'alerta2';document.getElementById("alerta").innerHTML = xmlhttp;document.getElementById("botao").disabled = true}Pq ai eu faço assim se nao vier nd é pq nao deu erro e se vim alguma coisa eu mostro oque ta dentro do xmlhttp,certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que eu entendi da função que o Fabyo fez (foi o fabyo mesmo? nao lembro), quando o ajax não consegue carregar dados do servidor ele retorna é FALSE e não VAZIO.Mas testa ae...Nada melhor do que o teste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.