Jump to content

[Resolvido] Registo sem Utilizadores Iguais


Recommended Posts

Posted

Boa tarde Sr. Programadores,

Estou com o seguinte problema, eu criei uma pagina de registo que guarda numa BD ate ai tudo bem.

Eu queria era que antes de fazer insert na base de dados ele fosse confirmar se o "Utilizador" ja existe.

Poderiam ajudar sff?

 
    $nome = $_POST['nome'];
    $utilizador = $_POST['utilizador'];
    $data = $_POST['data'];
    $email = $_POST['email'];
    $senha = md5($_POST['senha']);


include 'config.php';
include 'connect.php';
     
     
if(empty($nome) OR empty($utilizador) OR empty($data) OR empty($email) OR empty($senha)){
    ?> 
	<div id="content_jogo">
		<div class="">
			<h1><b>Todos os campos</b> </h1>
			são obrigatórios, por favor preencher.
			<br/>
		</div>
	</div>	 
	<script>
		setTimeout(
		  function() 
		  {	history.go(-1);}, 3000);	
	</script>
<? 
	exit;
}
    mysql_query("INSERT INTO usuarios (id, nome, utilizador, data, email, senha) VALUES (NULL, '$nome', '$utilizador', '$data','$email','$senha')");
    echo "<meta http-equiv='refresh' content='0; URL=index_game.php?page=entrar'>";

Obrigado, Cmpts

Helder Miranda

Posted

Boa tarde,

Basta fazer um select antes para verificar se o nome já existe e verificares o retorno através do número de linhas. Um exemplo:

//verifica se o registo já existe
$sql_nome = mysql_query("SELECT nome FROM utilizador WHERE nome = '$nome' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador

//conta quantos registos foram encontrados na query anterior
$verifica_nome = mysql_num_rows($sql_nome);

if ($verifica_nome > 0) {
    echo "O Utillizador já se encontra registado no sistema. Por favor, utilize outro nome!";
    
} else {
    mysql_query("INSERT INTO utilizador (nome, login, senha) VALUES ('$nome', '$login', '$senha')");
    echo "O utilizador foi registado com sucesso!";
}

Cumprimentos,

AndreLC

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

  • 4 weeks later...
Posted

Ok, estou com o mesmo problema, mas devido as minhas dificuldades em programação não fui capaz de resolver o mesmo sendo que continua a aceitar dois ou mais registos iguais.

Abaixo o meu código.

<?php

	require_once "config.php"; //conexão a database

if(!isset($_POST['join'])){
echo "
<form method=\"post\" action=\"registar.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=\"Registar\"/>
</form>
";
}
else
{
$sql_user = mysql_query("SELECT nome FROM users WHERE nome = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador
$verifica_nome = mysql_num_rows($sql_user); //conta quantos registos foram encontrados na query anterior
$user = mysql_real_escape_string($_POST['username']);
$pass = sha1($_POST['password']);
//$email = $_POST;

if ($verifica_nome > 0) {
echo "O Utillizador já se encontra registado no sistema. Por favor, utilize outro nome!";

} else {

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

}

?>
Posted

Experimentem meter essa restrição na DB, se o fizerem nunca terão duplicados mesmo que o código php esteja mal.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted
$sql_user = mysql_query("SELECT nome FROM users WHERE nome = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador
...
$user = mysql_real_escape_string($_POST['username']);

É de mim ou só estás a definir a variável user depois de a teres usado na query?

Posted

$sql_user = mysql_query("SELECT nome FROM users WHERE nome = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador
...
$user = mysql_real_escape_string($_POST['username']);

É de mim ou só estás a definir a variável user depois de a teres usado na query?

Como disse as minhas capacidades de programação estão muito a quem das expectativas, qual seria a solução? Onde deveria por esse código aqui fornecido?

Posted (edited)

Convém definir o valor das variáveis antes de as usares.

Ou seja, convém trocar a ordem das duas linhas que indiquei.

Vou testar e darei feedback.

Obrigado pela dica.


Ok, troquei as ordens continua a não funcionar 😞 Edited by brunoais
2x post junto
Posted

Como é que ficou quando alteraste a ordem?

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted (edited)
<?php

	require_once "config.php"; //conexão a database

if(!isset($_POST['join'])){
echo "
<form method=\"post\" action=\"registar.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=\"Registar\"/>
</form>
";
}
else
{
$user = mysql_real_escape_string($_POST['username']);
$pass = sha1($_POST['password']);
//$email = $_POST['email'];
$sql_user = mysql_query("SELECT name FROM users WHERE username = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador
$verifica_nome = mysql_num_rows($sql_user); //conta quantos registos foram encontrados na query anterior

if ($verifica_nome > 0) {
echo "O Utillizador já se encontra registado no sistema. Por favor, utilize outro nome!";

} else {

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

}
?>

É assim q se encontra de momento.

_____________________________________________________________________________

Edit: Solved, o problema estava no select.

Edited by brunoais
não é quote, é code.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.