Jump to content
Fórum Script Brasil
  • 0

Sistema de Login e cadastro em php+mysql


sensshomaru

Question

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

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

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

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.

Link to comment
Share on other sites

  • 0

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

Edited by Adenison Santos
Link to comment
Share on other sites

  • 0
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.

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

Link to comment
Share on other sites

  • 0

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!

Link to comment
Share on other sites

  • 0

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?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...