Ajuda - Busca - Membros - Calendário
Versão Completa: Sistema de Login e cadastro em php+mysql
Fórum Script Brasil > Programação & Desenvolvimento > PHP > Repositório de Scripts - PHP
sensshomaru
Bom galera este é meu primeiro tópico aqui no script brasil e para começar eu irei postar um script de cadastro de usuarios mais login utilizando php e o mysql como banco de dados bom para começar você deverá criar a tabela no banco de dados:

Tabela.sql

create table usuarios (
id int(10) unsigned not null auto_increment,
nome varchar(80) not null,
senha int(8) unsigned not null,
email varchar(80) not null,
primary key (id));

agora iremos criar o arquivo responsável pela conecção ao banco de dados:

config.php

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

Agora criaremos o formulário para os usuários se cadastrarem:

cadastrar.php

<html>
<head>
<style type="text/css">
<!--
form.login {
background-color: #FFFFCC;
width:155px;
font: 11px Verdana, sans-serif;
color: #003399;
border: 2px solid #000000;
padding-left:10px;
}
.campos {
background-color:#B0E0E6;
font: 11px georgia, sans-serif;
color:#0033CC;
margin-right: 15px;
}

input {
background-color: #B0E0E6;
font: 12px verdana, arial, helvetica, sans-serif;
color:#003399;
border:2px solid #000099;
}

</style>
</head>
<body>

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

</body>
</html>

agora crie o arquivo que armazenará as informações do formulário de cadastro ao banco de dados:

enviar_cadastro.php

<?
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 `$tabela` 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.<br>"; //se o login já existir, ele adiciona o erro
}

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

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

if ( $senha != $senha2 ) {
$errors .= "Você digitou 2 senhas diferentes.<br>"; //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 `$tabela` (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><br><br><br>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><br><br><br>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:<br><br>$errors</font></div>"; //mostra os erros do usuário, caso houver
}
?>

agora galera é só criar o formulário para os usuários efetuar o login:

Login.php

<html>
<head>
<style type="text/css">
<!--
form.login {
background-color: #FFFFCC;
width:155px;
font: 11px Verdana, sans-serif;
color: #003399;
border: 2px solid #000000;
padding-left:10px;
}
.campos {
background-color:#B0E0E6;
font: 11px georgia, sans-serif;
color:#0033CC;
margin-right: 15px;
}

input {
background-color: #B0E0E6;
font: 12px verdana, arial, helvetica, sans-serif;
color:#003399;
border:2px solid #000099;
}

</style>
</head>
<body>
<table border=2 bordercolor='#003399' rules=all>
<tr>
<td><form name="login" method="post" action="confirmar_login.php">
Login:

<input name="login" type="text" id="login">


<p>
Senha:<input name="senha" type="password" id="senha">
</p>
<p align=center><input name="entrar" type="submit" id="entrar" value="Entrar"></p>


<a href="senha.php">Esqueceu
a senha?</a>
<br><a href="cadastrar.php">Cadastre-se</a></br>
</td>
</tr>
</table>
</form>

</body>
</html>

agora o arquivo responsável por checar se o usuário realmente existe em nosso banco de dados:

confirmar_login.php

<?
session_start();
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 `$tabela` 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 ) {
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
echo "&lt;script>location.href='index1.php'</script>"; //entra na pagina restrita
echo "Usuário logado."; //se a senha digitada está correta, mostra a mensagem
} else {
echo "Login ou senha inválidos. <a href=Login.php>Clique aqui para voltar.</a>"; //se a senha está incorreta mostra essa mensagem
}
?>

pronto, feito isso crie o arquivo index1 que será o arquivo de teste quando o usuário fizer login e proceder tudo ok!

index1.php

<? //todas as páginas que você quiser por o nome de quem ta logado tem q por todo esse codigo no inicio



session_start();







if ( !isset($_SESSION['login']) ){



echo "&lt;script>location.href='erro.php';</script>";



}



?>







<p><strong>Olá!<b>
<?







echo $_SESSION['login']; ?>
(<a href="logout.php">Sair</a>) </b></strong></p>


agora só criar o arquivo logout que será o responsável por finalizar a sessão :

logout.php

<?
session_start(); //iniciamos a sessão que foi aberta

session_destroy(); //pei!!! destruimos a sessão wink.gif
session_unset(); //limpamos as variaveis globais das sessões

echo "&lt;script>alert('Você saiu!');top.location.href='Login.php';</script>"; /*aqui você pode por alguma coisa falando que ele saiu ou fazer como eu, coloquei redirecionar para uma certa página*/

?>

e agora galera eu criei dois arquivos especiais que são responsável por enviar a senha ao e-mail do usuário caso este esqueça, são os arquivos senha.php e enviar_senha.php um é o formulário e outro executa a função citada.OBS: o servidor smtp não está configurado apenas a função criada você deverá especificar qual servidor ficará encarregado de mandar a senha para o usuário.

Senha.php

<html>
<head>
<style type="text/css">
<!--
form.login {
background-color: #FFFFCC;
width:155px;
font: 11px Verdana, sans-serif;
color: #003399;
border: 2px solid #000000;
padding-left:10px;
}
.campos {
background-color:#B0E0E6;
font: 11px georgia, sans-serif;
color:#0033CC;
margin-right: 15px;
}

input {
background-color: #B0E0E6;
font: 12px verdana, arial, helvetica, sans-serif;
color:#003399;
border:2px solid #000099;
}

</style>
</head>
<body>

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

</body>
</html>

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 `$tabela` 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: $Remetenten"); //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
}
?>

Bom galera este foi o meu tutorial espero ter ajudado aqueles que estão a procura de um sistema simples descomplicado e efetivo para sua página e para quem quiser estarei disponibilizando o link para o download de todos estes arquivos juntos valeu e até o próximo tutorial...

Link para Download
BroTheR
Reveja seu script.

Dei uma visualizada rapida, e logo no inicio já tem um erro pequeno.
Na parte sql não acha que esta faltando a opção login não?

Caso o login não esteja no SQL erro para cadatsar o usuario ira aconetcer, o script não vai aceitar e provavelmente dara um erro. Pois esta enviando um dado e no SQL não há como ser registrado.

Sempre é bom testar, reeler o script antes de postar, para evitar erros simples.
Adenison Santos
Sensshomaru, Brother,

Segui passo a passo esse tutorial, mais quando vou enviar o cadastro aparece a seguinte mensagem de erro.
" Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/freehost/t35.com/p/o/polos/enviar_cadastro.php on line 8
Ocorreu os seguintes erros ao tentar se cadastrar:

Você não digitou um login
Você não digitou uma senha
"


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



Apreciaria muito a ajuda de vocês..

Obrigado
BroTheR
QUOTE(Adenison Santos @ 11/03/2010 - 02:41) *
Sensshomaru, Brother,

Segui passo a passo esse tutorial, mais quando vou enviar o cadastro aparece a seguinte mensagem de erro.
" Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/freehost/t35.com/p/o/polos/enviar_cadastro.php on line 8
Ocorreu os seguintes erros ao tentar se cadastrar:

Você não digitou um login
Você não digitou uma senha
"


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


Apreciaria muito a ajuda de vocês..

Obrigado

Esse erro é a falta de campo na tabela usuarios.
O criador do Topic errou na tabela SQL postada pelo mesmo.
Tente reecriar a tabela colocando este comando depois no SQL.
CODE
create table usuarios (
id int(10) unsigned not null auto_increment,
nome varchar(80) not null,
login varchar(30) not null,
senha int(8) unsigned not null,
email varchar(80) not null,
primary key (id));
Drica01
Sensshomaru: Parabens!!!
Sou iniciante e buscava um sistema assim há uma semana, tentei varios ( varios mesmo) outro tutorias sem sucesso ou eram complicados demais para iniciantes ou quem escrevia o tutorial ignorava explicar coisas que eles supunham obvias demais ( e para quem é iniciante o óbvio nem sempre é obvio demais...)
Enfim: salvo a errinho na sua tabela, devidamente corrigido pelo Brother, rodou perfeito.
Te parabenizo e fico esperando outros posts seus.
Obrigada.
Um abraco e muito obrigada!
Drica01
Um erro encontrado apenas:
Se eu cadastrar um usuário e depois tentar me logar colocando somente o nome de usuário cadastrado Sem Senha ( ou com senha errada) eu consigo acessar....
não deveria ter acesso apenas usuários que digitassem corretamente nome de Usuário cadastrado + senha cadastrada?

Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.