Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Enrietti

[Resolvido] Checagem de duplicidade de dados

Recommended Posts

Galera, estou montando um sistema simples de cadastro de usuários, não sou expert em PHP, vi varios codigos na net explicando como fazer um SELECT para verificar se ao cadastrar não existe uma duplicidade de dados.

 

Todo form funciona, as infos são guardadas no DB normal, MAS COM DUPLICIDADE.

 

Segue abaixo o código, se alguém puder ajudar fico agradecido

 

<?php 
include ('../config.php');

function AntiInjection($Param){
$Param = strip_tags($Param); // Retira tags HTML
$Param = addslashes($Param); // Acrescenta barra invertida (\) caso insira aspas simples () escapando o caracter
$Param = mysql_escape_string($Param); //Retira todas as tags mysql, como por exemplo, SELECT, DROP TABLE, ALTER TABLE, etc.
$Param = strtolower($Param); // Deixa os caracteres em caixa baixa.
return $Param;
}

// RECEBENDO OS DADOS PREENCHIDOS DO FORMULÁRIO
$nome = utf8_decode(@$_POST['nome']);
$nome = AntiInjection(@$_POST['nome']);
$cargo = utf8_decode(@$_POST['cargo']);
$cargo = AntiInjection(@$_POST['cargo']);
$email = utf8_decode(@$_POST['email']);
$email = AntiInjection(@$_POST['email']);
$tel1ddd = utf8_decode(@$_POST['tel1ddd']);
$tel1ddd = AntiInjection(@$_POST['tel1ddd']);
$tel1 = utf8_decode(@$_POST['tel1']);
$tel1 = AntiInjection(@$_POST['tel1']);
$tel2ddd = utf8_decode(@$_POST['tel2ddd']);
$tel2ddd = AntiInjection(@$_POST['tel2ddd']);
$tel2 = utf8_decode(@$_POST['tel2']);
$tel2 = AntiInjection(@$_POST['tel2']);
$login = utf8_decode(@$_POST['login']);
$login = AntiInjection(@$_POST['login']);
$cript = md5('$senha');
$data = date("Y-m-d");
$hora = strftime("%H:%M:%S");
$ip = $_SERVER['REMOTE_ADDR'];
$ip = AntiInjection(@$_SERVER['REMOTE_ADDR']);

$query = "SELECT login FROM cpdj_admin WHERE login='$login'";

$resultado = mysql_query($query, $db);
$total = mysql_num_rows($resultado);

if ($total==1) {
echo "<script>alert('Usuário já existe. Caso tenha perdido sua senha, clique no link Esqueci Minha Senha');</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;url=java script:history.back()\">";	
}
else {

//Gravando no banco de dados
$query = "INSERT INTO `cpdj_admin` ( `nome` , `cargo` , `email` , `tel1ddd` , `tel1` , `tel2ddd` , `tel2` , `login` , `senha` , `ul_data` , `ul_time` , `id` , `ip`) 
VALUES ('$nome', '$cargo', '$email', '$tel1ddd', '$tel1', '$tel2ddd', '$tel2', '$login', '$cript' , '$data', '$hora', '', '$ip')";

mysql_query($query,$db);
}
if ($query) {
echo "<script>alert('Cadastro efetuado com sucesso');</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;url=http://www.foo.bar/admin/cadastro.php\">";
}
else {
echo "<script>alert('Ocorreu um erro no cadastro, tente novamente. Caso o erro persista, entrar em contato com o administrador do sistema');</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;url=java script:history.back()\">";
}
?>

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca o == 1 por > 0. Veja se resolve.

 

Carlos Eduardo

 

 

Carlos.. Vlw mesmo... Depois de descançar a cabeça um pouco achei o erro que estava acontecendo, e estava aqui:

 

$query = "SELECT login FROM cpdj_admin WHERE login='$login'";

$resultado = mysql_query($query, $db);
$total = mysql_num_rows($resultado);

Como ja existia uma query onde eu enviava os dados para o DB, provavelmente o codigo entrava em conflito com duas variaveis iguais, entao eu alterei para:

 

$pesquisa = "SELECT login FROM cpdj_admin WHERE login='$login'";

$resultado = mysql_query($pesquisa, $db);
$total = mysql_num_rows($resultado);

Funcionou perfeitamente tanto com o ==1 quanto com o >0

 

PROBLEMA RESOLVIDO

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.