Ir para conteúdo

POWERED BY:

Arquivado

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

Lucas Rodrigues_158061

Sistema de cadastro, como verificar se usuario ja existe?

Recommended Posts

Olá, estou aqui novamente (acho que ultima coisa do dia XD)

Seguinte estou usando:

<?php
require_once "config.php"; // inclui a conexão a database
if(!isset($_POST['join'])){
echo "
<form method=\"post\" action=\"register.php\">
<label>Nome de Utilizador</label><br/><input name=\"username\"/><br/>
<label>Email</label><br/><input name=\"email\"/><br/>
<label>Password</label><br/><input name=\"password\" type=\"password\"/><br/>
<input type=\"submit\" name=\"join\" value=\"register\"/>
</form>
";
}else{
$pass = sha1($_POST['password']);
$user = mysql_real_escape_string($_POST['username']);
$email = $_POST['email'];
mysql_query("INSERT INTO users (id, username, email, password) VALUES (NULL, '$user', '$email', '$pass')") or die("Alguma coisa correu mal durante o registo. MySQL erro: ".mysql_error());
echo "Registo Completo - <a href=\"login.html\">Entrar na Conta</a>.";
}
?>

 

Problema 1: Porém se por exemplo, já existir o usuario "Teste" e criarmos outro usuario com nome "Teste" ele está aceitando. Ou seja, assim fica 2 contas com mesmo nome, porem com senhas diferentes. Como fazer para que se verificado a existencia de um usuario com mesmo nome ou email ele da tipo um "echo usuario já existente"?

 

Problema 2: Como fazer para que os 'echos' de erros não apareçam em outra pagina, e sim na pagina atual? Um exemplo, se ele tentar cadastrar com um usuario ou email que já existe aparecer uma mensagem POREM na mesma pagina, sem ter que carregar outra! Eu acho que algo tipo isso:


if($password == "") {
		$error[0] = "<font color='#FFFFFF'><h2><center>Preencha campo SENHA</center></h2></font>";
	}

if($username == "") {
		$error[1] = "<font color='#FFFFFF'><h2><center>Preencha campo USUARIO</center></h2</font>";
	}

if($email == "") {
		$error[2] = "<font color='#FFFFFF'><h2><center>Preencha campo EMAIL</center></h2></font>";
	}

if (count($error) != 0) {
		foreach ($error as $erro) {
			echo $erro . "<br />";

 

Mais não sei se ta correto, ainda não publiquei (teste) porque ainda não terminei e to querendo saber da parada do 2 logins iguais :\

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logica:

E só você selecionar todos os usuários que o nome seja igual ao nome digitado, se algum existir exibe uma mensagem de erro, caso o contrario você fazer o cadastro, simples assim =)

 

Código:

$query = "SELECT username FROM users WHERE username = $user%";
if(mysql_num_rows($query) > 0)
{
echo 'já existe um usuario com este nome';
}
else
{
$pass = sha1($_POST['password']);
$user = mysql_real_escape_string($_POST['username']);
$email = $_POST['email'];
mysql_query("INSERT INTO users (id, username, email, password) VALUES (NULL, '$user', '$email', '$pass')") or die("Alguma coisa correu mal durante o registo. MySQL erro: ".mysql_error());
echo "Registo Completo - <a href=\"login.html\">Entrar na Conta</a>.";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

E sobre o erro aparecer sem 'sumir' com a pagina?

Tipo com o echo, todo conteudo da pagina 'some' e fica somente o texto do echo; tem como (eu sei, porque um dia no cagaso eu consegui) que o echo fica em cima da pagina, mais não consigo adaptar para o login nem o cadastro :'(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte.

1°: Antes de verificar o próximo item, pegue o login fornecido pelo usuário e faça um consulta no banco de dados, onde o login == ao login fornecido pelo usuário.

Se retornar alguma coisa, coloque

$error[3] = "<font color='#FFFFFF'><h2><center>Usuário já cadsatrado</center></h2></font>";

 

Não se esqueça de interromper a execução do script, pois de nada adiantará. Se não parar, os dados serão enviados estando certos ou errados.

 

2°: Pode ficar meio complicado, mas se tu quiser, é o caminho.

No topo do script de verificação, coloque um 'if' para somente executa-la se o botão tiver sido apertado.

Como?

if(isset($_POST['nome_do_botao'])) {

e

}
//No final do script

Daí faça um include da verificação no topo da página de login.

No lugar que da página que você quer que o erro seja exibido, coloque uma verificação para ver se o erro existe. Caso positivo, mostra:

if(isset($erro)) {
echo $erro;
}

 

EDIT:

Não esqueça de mudar o ACTION do form, para o próprio arquivo do login.

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.