Ir para conteúdo

POWERED BY:

Arquivado

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

AquiRioClaro

[Resolvido] Banco não registra os dados!

Recommended Posts

Bom dia a todos!!!

Estou com um problema, peguei um modelo de banco de dados pronto na em um site, com nome , login, senha , confirmação de senha e e-mail...

Fiz a tabela no PHPMyAdmin como descrito no site, fiz a conexão do dreamweaver com o banco tudo igual.

Quando coloco pra testar, preencho os dados no cadastro e quando envio ele retorna com a seguinte frase....."Ocorreu os seguintes erros ao tentar se cadastrar:Você não digitou um login. Você não digitou uma senha.".....,que são os textos que devereiam aparecer se o usuário não digitasse nada nos campos, mas como digitei tudo corretamente por que está voltando???

Vou postar abaixo a maneira como fix a tabela e as páginas,por favor me ajudem a fazer funcionar......

 

BANCO DE DADOS

 

<?
CREATE TABLE `tbl_usuarios` (
`codigo` INT( 5 ) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR( 75 ) NOT NULL ,
`login` VARCHAR( 30 ) NOT NULL ,
`senha` VARCHAR( 30 ) NOT NULL ,
'confirmacao_senha' VARCHAR(30) NOT NULL,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `codigo` )
);`
?>

 

 

cadastrar.php

 

 

<form name="cadastrar" method="post" action="enviar_cadastro.php">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Nome:</font></td>
<td width="250"><input name="nome" type="text" id="nome" maxlength="75"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login:</font></td>
<td><input name="login" type="text" id="login" maxlength="30"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Senha:</font></td>
<td><input name="senha" type="password" id="senha" maxlength="30"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Repetir
Senha:</font></td>
<td><input name="senha2" type="password" id="senha2" maxlength="30"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Email:</font></td>
<td><input name="email" type="text" id="email" maxlength="50"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="enviar" type="submit" id="enviar" value="Enviar Cadastro">
<input name="limpar" type="reset" id="limpar" value="Limpar Dados">
</div></td>
</tr>
</table>
</form>

 

 

config.php

 

 

<?
$host = "localhost"; //endereço do seu servidor MySQL
$database = "cf_login"; //o database que conterá sua tabela, muitas vezes seu próprio login
$tabela = "tbl_membros"; //o nome de sua tabela
$login_db = "cf_login"; //login usado no MySQL
$senha_db = "abc"; //senha usado no MySQL
?>

 

 

enviar_cadastro.php As informações que estão aparecendo vem daqui, mas não sei o que está errado....

 

 

<?
include "config.php"; //aqui inserimos as váriaveis da página de configuração

$db = mysql_connect ($host, $login_db, $senha_db); //conectamos ao mysql
$basedados = mysql_select_db($database); //selecionamos o database escolhido

$pesquisar = mysql_query("SELECT * FROM tbl_usuarios WHERE login = '$login'", $db); //conferimos se o login escolhido já não foi cadastrado
$contagem = mysql_num_rows($pesquisar); //traz o resultado da consulta acima

if ( $contagem == 1 ) {
$errors .= "Login escolhido já cadastrado."; //se o login já existir, ele adiciona o erro
}

if ( $login == "" ) {
$errors .= "Você não digitou um login"; //confere se o campo login não ficou vazio
}

if ( $senha == "" ) {
$errors .= "Você não digitou uma senha"; //confere se o campo senha não ficou vazio
}

if ( $senha != $confirmacao_senha ) {
$errors .= "Você digitou 2 senhas diferentes."; //adiciona o erro caso o usuário digitou 2 senhas diferentes
}

if ( $errors == "" ) { //checa se houve ou não erros no cadastro

$cadastrar = mysql_query("INSERT INTO tbl_usuarios (nome, login, senha, email)
VALUES ('$nome','$login','$senha','$email')", $db); //insere os campos na tabela

if ( $cadastrar == 1 ) {
echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Cadastro com sucesso.</font></div>"; //se cadastrou com sucesso o usuário aparece essa mensagem
} else {
echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Ocorreu um erro no servidor ao tentar se cadastrar.</font></div>"; //caso houver um erro quanto as configurações aparece essa mensagem
}
} else {
echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Ocorreu os seguintes erros ao tentar se cadastrar:$errors</font></div>"; //mostra os erros do usuário, caso houver
}
?>

 

 

login.php

 

 

<form name="login" method="post" action="confirmar_login.php">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login:</font></td>
<td width="250"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="login" type="text" id="login">
</font></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Senha:</font></td>
<td><input name="senha" type="password" id="senha"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="entrar" type="submit" id="entrar" value="Entrar">
</font></div></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="senha.php">Esqueceu
a senha?</a> <a href="cadastrar.php">Cadastre-se</a></font></td>
</tr>
</table>
</form>

 

confirmar_login

 

 

<?
include "config.php"; //inclui o arquivo de configurações

$db = mysql_connect ($host, $login_db, $senha_db); //conecta ao mysql
$basedados = mysql_select_db($database); //conecta a base de dados

$confirmacao = mysql_query("SELECT * FROM tbl_usuarios WHERE login = '$login' AND senha = '$senha'", $db); //verifica se o login e a senha conferem
$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima

if ( $contagem == 1 ) {
setcookie ("login", $login); //grava o cookie com o login
setcookie ("senha", $senha); //grava o cookie com a senha
echo "Usuário logado."; //se a senha digitada está correta, mostra a mensagem
} else {
echo "Login ou senha inválidos. <a href=java script:history.go(-1)>Clique aqui para voltar.</a>"; //se a senha está incorreta mostra essa mensagem
?>

 

 

senha.php

 

 

<form name="senha" method="post" action="enviar_senha.php">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login:</font></td>
<td width="250"><input name="login" type="text" id="login"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Email:</font></td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="enviar" type="submit" id="enviar" value="Enviar minha Senha">
</div></td>
</tr>
</table>
</form>

 

enviar_senha.php

 

 

<?
include "config.php"; //inclui o arquivo de configurações

$db = mysql_connect ($host, $login_db, $senha_db); //conecta ao mysql
$basedados = mysql_select_db($database); //conecta a base de dados

$confirmacao = mysql_query("SELECT * FROM tbl_usuarios WHERE login = '$login' AND email = '$email'", $db); //verifica se o login e a email conferem
while ($row = mysql_fetch_array($confirmacao)) {
$login = $row["login"]; //adiciona a variavel $login o login do usuario
$senha = $row["senha"]; //adiciona a variavel $senha a senha do usuario
$email = $row["email"]; //adiciona a variavel $email o email do usuario
}

$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima

if ( $contagem == 1 ) {
$msg = "Recuperação de senha" . chr(13) . chr(10);
$msg .= "Senha enviada em " . date("d/m/Y") . ", os dados seguem abaixo: " . chr(13) . chr(10) . chr(10);
$msg .= "Login : " . $login . chr(13) . chr(10);
$msg .= "Email : " . $email . chr(13) . chr(10);
$msg .= "Senha : " . $senha . chr(13) . chr(10);

$Remetente = "endereco@provedor.com.br"; //remetente do email, coloque o email do seu site

mail($email, "Recuperação de Senha",$msg,"From: $Remetente"); //campos do email na ordem, email destinho (não deve ser alterada), assunto, conteudo (não deve ser alterado), remetente (também não altere)

echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Sua senha foi enviada com sucesso para o email: $email.</font></div>"; //resposta se o email foi enviado com sucesso
} else {
echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Seu login ou email está incorreto.</font></div>"; //resposta se não foi possivel enviar o email
}
?>

 

acesso.php

 

 

<?
include "config.php"; //carregamos o arquivo de configuração

$nome = $HTTP_COOKIE_VARS["login"]; //pegamos o cookie login, gravado anteriormente com o login
$pass = $HTTP_COOKIE_VARS["senha"]; //pegamos o cookie senha, gravado anteriormente com o login

$db = mysql_connect ($host, $login_db, $senha_db); //conectamos ao mysql
$basedados = mysql_select_db($database); //conectamos ao database

$confirmacao = mysql_query("SELECT * FROM tbl_usuarios WHERE login = '$nome' AND senha = '$pass'", $db); //verificamos se o conteudo dos cookies esta correto
$contagem = mysql_num_rows($confirmacao); //resulta da pesquisa acima

//aqui finalizamos assim essa página, a comparação iremos fazer nas páginas com acesso restrito
?>

 

teste.php

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Teste de Acesso</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<div align="center">OI!</div>

</body>
</html>

 

 

teste1.php

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Teste de Acesso</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
if ( $contagem == 1 ) {
//aqui deixe aberto, pois iremos fechar somente no final da página
?>
<div align="center">OI!</div>
<?
} else {
echo "Você não está logado."; //aqui que terminamos o IF que iniciamos na página
}
?>
</body>
</html>

 

logout.php

 

 

<?
setcookie("login","",time()-3600);
setcookie("senha","",time()-3600);?>

 

 

Bem desculpa postar tanta coisa, mas pra garantir coloquei todo o conteúdo do sistema de cadastro para que vocês me ajudem a deixar ele funcionando perfeito...Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei que este fórum fosse o melhor da internet, mas pelo jeito me enganei......Se dependesse de alguma ajuda daqui tava fud...!!!!

E o pior é que já havia postado uma mensagem aqui de insatisfação, pois ninguém me dá uma ajuda e simplesmente tiraram fora, isso é que é fórum sério?

Lamentável..................!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

^_^ Bom Fim de Semana e Feriado pra você tb!

 

O teu script está contando com a diretiva: register_globals no estado ON.

Qndo você envia um formulário, o php recebe pelos arrays super globais: $_POST ou $_GET.

 

O método definido no teu HTML é method="post".

Aqui você faz comparações com variáveis que não existem:

 

if ( $login == "" ) {
$errors .= "Você não digitou um login"; //confere se o campo login não ficou vazio
}

if ( $senha == "" ) {
deveria ser, seguindo a lógica do sistema:

if ( $_POST['login'] == "" ) {
$errors .= "Você não digitou um login"; //confere se o campo login não ficou vazio
}

if ( $_POST['senha'] == "" ) {
entendeu ?

ou melhor ainda, em vez de usar ==""

faça:

if ( empty( $_POST['login'] ) ) {
isso, lógico depois de filtrar os dados, escapando aspa e aplicando um trim()

 

Confesso que pelo teu último post, eu fiquei 'desanimado' de te ajudar. Ninguém tem obrigação nenhuma em rodar o teu script.

Todos trabalhamos na área, e temos os nossos próprios projetos. Ajudo porque gosto. Mas se você continuar com essa atitude que você demonstrou, eu não irei te ajudar mais, e te indico para procurar suporte profissional, contratando alguém.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom cara...desde já...é meio dificil alguem querer te ajudar assim...

Não sei se esse é o melhor forum da net...mas...mais se tiver um melhor que esse...ainda não vi.

Então fica um conselho...Tenha calma que...assim que possivel...sempre existirá alguem para te dar pelo menos uma dica aqui ok.

 

Mas...para tirar essa má impressão que você tem desse forum...testei os seus arquivos e tinha alguns erros simples...bom..vamos lá.

Demorei um tikim para entender..pq não tinha visto esse tipo de sintaxe ainda...portanto..vá me desculpando dese já ok...rsss.

 

No arquivo "enviar_cadastro.php" não entendi como ou atravez de que você estava recendo os dados do formularios...

Mas acrescentei essas linhas e funcionou corretamente

 $login             = $_POST["login"];
 $senha             = $_POST["senha"];
 $confirmacao_senha = $_POST["senha2"];
 $email             = $_POST["email"];
 

Ou seja...você tá manando os valores atravez do metodo post contido no formulario...e o mesmo é necessário ser recebido do outro lado...e não descobri como você recebeu eles...enfim...dessa forma aí...tá funcionando ok...e no banco você colocou um campo para confirmação de senha...mas a mesma não é necessária...ok..

 

E no login...tava dando um erro no arquivo "confirmar_login.php"..onde que..na últinha linha estava faltando fechar uma chave.

 

Bom...segue abaixo os arquivos que foi alterado beleza...

 

"confirmar_login.php"

<?php
include "config.php"; //inclui o arquivo de configurações

$db = mysql_connect ($host, $login_db, $senha_db); //conecta ao mysql
$basedados = mysql_select_db($database); //conecta a base de dados

$confirmacao = mysql_query("SELECT * FROM tbl_usuarios WHERE login = '$login' AND senha = '$senha'", $db); //verifica se o login e a senha conferem
$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima

if ( $contagem == 1 ) {
setcookie ("login", $login); //grava o cookie com o login
setcookie ("senha", $senha); //grava o cookie com a senha
echo "Usuário logado."; //se a senha digitada está correta, mostra a mensagem
} else {
echo "Login ou senha inválidos. <a href=java script:history.go(-1)>Clique aqui para voltar.</a>"; //se a senha está incorreta mostra essa mensagem
}
?>
.

.

.

"enviar_cadastro.php"

 

<?php
require_once "config.php"; //aqui inserimos as váriaveis da página de configuração

$db = mysql_connect ($host, $login_db, $senha_db); //conectamos ao mysql
$basedados = mysql_select_db($database); //selecionamos o database escolhido

 $login             = $_POST["login"];
 $senha             = $_POST["senha"];
 $confirmacao_senha = $_POST["senha2"];
 $email             = $_POST["email"];
 

$pesquisar = mysql_query("SELECT * FROM tbl_usuarios WHERE login = '$login'", $db); //conferimos se o login escolhido já não foi cadastrado
$contagem = mysql_num_rows($pesquisar); //traz o resultado da consulta acima

if ( $contagem == 1 ) {
$errors .= "<br>Login escolhido já cadastrado."; //se o login já existir, ele adiciona o erro
}

if ( $login == "" ) {
$errors .= "<br>Você não digitou um login"; //confere se o campo login não ficou vazio
}

if ( $senha == "" ) {
$errors .= "<br>Você não digitou uma senha"; //confere se o campo senha não ficou vazio
}

if ( $senha != $confirmacao_senha ) {
$errors .= "<br>Você digitou 2 senhas diferentes."; //adiciona o erro caso o usuário digitou 2 senhas diferentes
}

if ( $errors == "" ) { //checa se houve ou não erros no cadastro

$cadastrar = mysql_query("INSERT INTO tbl_usuarios (nome, login, senha, email)
VALUES ('$nome','$login','$senha','$email')", $db); //insere os campos na tabela

if ( $cadastrar == 1 ) {
echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Cadastro com sucesso.</font></div>"; //se cadastrou com sucesso o usuário aparece essa mensagem
} else {
echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Ocorreu um erro no servidor ao tentar se cadastrar.</font></div>"; //caso houver um erro quanto as configurações aparece essa mensagem
}
} else {
echo "<div align=center><font size=2 face=Verdana, Arial, Helvetica, sans-serif>Ocorreu os seguintes erros ao tentar se cadastrar:$errors</font></div>"; //mostra os erros do usuário, caso houver
}
?>

Agora...é só testa aí...beleza.

Até mais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom gostaria de me desculpar com o Willian Bruno e o Roberto_S_Luz e com todos os outros usuários do Fórum pela minha ignorância, mas é que vi todos os posts com respostas menos o meu.

Bom já quanto as correções, segui o que o Roberto_S_Luz postou, mas começou a retornar o seguinte erro: "Ocorreu os seguintes erros ao tentar se cadastrar:Você digitou 2 senhas diferentes.", quando preencho o cadastro e mando para o banco de dados.

Aí tentei, usar o que o nosso amigo Willian Bruno postou, mas está dando o mesmo erro:"Ocorreu os seguintes erros ao tentar se cadastrar:Você digitou 2 senhas diferentes.".

Tentei pela última vez, fazer as alterções dos dois juntos, mas continuou do mesmo jeito.

Será que tem mais alguma coisa pra eu fazer??? ou é caso perdido esse banco...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,

 

deve ser no dado das senhas...

 

faz assim, na página que recebe os dados do formulário, coloque isso no inicio de tudo:

 

<?php
echo "<pre>\n";
print_r($_POST);
echo "</pre>\n";
?>

 

e poste o q apareceu nessa parte.... vai aparecer um array com as informações do post...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além do que foi dito, rode essa query:

$cadastrar = mysql_query("INSERT INTO tbl_usuarios (nome, login, senha, email)VALUES ('$nome','$login','$senha','$email')", $db);
Dessa forma:

 

$sql =  "INSERT INTO tbl_usuarios (nome, login, senha, email)VALUES ('$nome','$login','$senha','$email')";
echo $sql, "\n";
$cadastrar = mysql_query( $sql )or die( mysql_error() );
assim, veremos o erro real.

Erros tratados não ajudam na hora de debugar scripts.

 

Poste oque aparecer. Lembrando de adicionar lá em cima a atribuição que lhe foi sugerida:

$login     		= $_POST["login"];
$senha     		= $_POST["senha"];
$confirmacao_senha = $_POST["senha2"];
$email     		= $_POST["email"];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza agora funcionou!!!!Graças ao que você postou você Willian Bruno....

 

Agora cadastrou com sucesso!!!!

 

Deu certo, só que tem mais uma coisa , eu fui verificar se está gravando os dados na tabela no PHPMyAdmin.

Os campos login, senha estão gravando, mas os campos confirmacao_senha e email não gravaram, deve ser alguma coisa simples, vou tentar encontrar o problema, se encontrar te falo...Muito obrigado, por enquanto....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qndo você dá echo aqui:

echo $sql, "\n";
oque aparece?

o 'confirmacao_senha', eu tb não acho necessário ir para o banco..

 

mas em todo caso, ele não tá indo, pq até agora, você não colocou ele na string SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

AquiRioClaro o campo "confirmacao_senha" só é necessário no formulario de cadastro para que...o usuario não digite uma senha e acabe esquecendo o que foi digitado....por isso que...existe a confirmação da senha para ver se ele realmente sabe o que tá digitando...sendo assim o mesmo não é necessário na parte de inserção.

Segue abaixo uma forma simples de fazer isso ok.

<script type="text/javascript">

       function validarSenha(){
	  var senha1 = document.form_usuario.senha.value;
	   var senha2 = document.form_usuario.confirmar.value;
			
		if (senha1 != senha2){
		    alert("Os campos \"Senha\" e \"Confirmar Senha\" são diferentes, por favor, digite-os corretamente.");
		}
	}
</script>

<form name="form_usuario" action="" method="post">

	<table>
	
	     <tr>
		<td>
		   <div id="formularios"><br> Senha:</div>
		</td>
		<td><br>
		    <input type="password" name="senha" value="" size="20" maxlength="10"><?= $obrigatorio?> <font size="1">(Máximo de 10 caracteres)</font>
		</td>
	     </tr>
	     <tr>
		<td>
		     <div id="formularios"><br> Conf. Senha:</div>
		</td>
		<td><br>
		     <input type="password" name="confirmar" value="" size="20" maxlength="10"  onchange="validarSenha()"><font size="1">(Máximo de 10 caracteres)</font>
		</td>
	     </tr>
	</table>

</form>

Lembrando que....não é necessário envia-lo para inserção ok. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vocês tem razão não é necessário gravar a confirmacao_senha, coloquei apenas para poder aprender um pouo mais. Quantas coisas desnecessárias aprendemos na escola e até mesmo na vida não é mesmo!!!!...... mas nunca se sabe se de uma coisa boba dessas não possamos usar nada algum dia.....

 

 

Gente muito obrigado por me ajudar a resolver o problema, agora tá funcionando perfeitamente....Valeu mesmo, obrigado à todos!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...precisando...fique à vontade para vir à esse forum...rsss

Abraços e boa sorte!!!

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.