skullrazor
Portugal@Home Member
Tenho vindo a ver muita gente com dificuldades e duvidas em fazer um sistema de login e por isso decidi disponibilizar um simples exemplo de um sistema. Apenas usaremos html, php e uma base de dados em MySql. Todo o código está comentado para ser mais fácil de o entender.
Começamos por criar 4 páginas de php: bdsql.php, index.php, verifica.php, logout.php e uma base de dados em MySql com uma tabela, tendo essa tabela 3 campos: id, username, password.
Na página bdsql.php iremos colocar as ligações à base de dados:
Na página index.php iremos por o código que irá fazer a busca na base de dados para validar o login, passar os dados para a sessão e depois redireccionar para a página verifica.php:
Na página verifica.php iremos verificar se os dados de login foram passados para a sessão, caso tenham sido irá redireccionar para a página da conta pessoal, caso não tenham sido passados irá redireccionar para o index.php:
Na página logout.php iremos fazer Logout, ou seja apagar os dados da sessão e voltar ao index.php (terá de se criar um link para esta página na página da conta pessoal):
E assim feito teremos um simples sistema de login em funcionamento.
Todo o código postado foi testado e não foi encontrado nenhum erro.
Espero que ajude!
Cumps
skullrazor
Começamos por criar 4 páginas de php: bdsql.php, index.php, verifica.php, logout.php e uma base de dados em MySql com uma tabela, tendo essa tabela 3 campos: id, username, password.
Na página bdsql.php iremos colocar as ligações à base de dados:
PHP:
<?
$sqlhost = "localhost";
$sqluser = "user_da_bd";//Geralmente nos servidores caseiros costuma ser "root"
$sqlpass = "pass_da_bd";//Geralmente nos servidores caseiros costuma ser "", ou seja fica em branco, apenas com as aspas
$sqlbase = "nome_da_bd";
?>
Na página index.php iremos por o código que irá fazer a busca na base de dados para validar o login, passar os dados para a sessão e depois redireccionar para a página verifica.php:
PHP:
<?php
// Inicia sessões
session_start();
// Conexão com a base de dados
include("bdsql.php");
mysql_connect($sqlhost, $sqluser, $sqlpass) or die ('Erro na conexão ao servidor.');
mysql_select_db($sqlbase) or die ('Erro na conexão à Base de Dados.');
if ( isset($_POST['login']) && isset($_POST['pass'])) {
// Recupera o login
$login = isset($_POST["login"]) ? addslashes(trim($_POST["login"])) : FALSE;
// Recupera a senha, criptografandoa com sha1()
$senha = isset($_POST["pass"]) ? sha1(trim($_POST["pass"])) : FALSE;
// Se o user não forneceu a senha ou o login
if(!$login || !$senha) {
echo '<p>Todos os campos de Login têm de ser preenchidos!</p>';
}
}
/**
* Consulta a base de dados.
* Caso o número de linhas retornadas seja 1 o login é válido,
* caso 0, inválido.
*/
$SQL = "SELECT id, username, password
FROM tabela_users_bd
WHERE username = '" . $login . "'";
$result_id = @mysql_query($SQL);
$total = @mysql_num_rows($result_id);
// Caso o usuário tenha digitado um login válido o número de linhas será 1..
if($total)
{
// Obtém os dados do usuário, para poder verificar a senha e passar os dados para a sessão
$dados = @mysql_fetch_array($result_id);
// Agora verifica a senha
if(!strcmp($senha, $dados["password"]))
{
// Agora, passa os dados para a sessão e redirecciona o user
$_SESSION["id_user"] = $dados["id"];
$_SESSION["nome_user"] = stripslashes($dados["username"]);
echo '<meta http-equiv="refresh" content="0; url=verifica.php" />';
}
// Senha inválida
else
{
echo '<p>Password inválida!</p>';
}
}
// Login inválido
if ($total == 0 && $login != "") {
echo '<p>O Username inserido não existe!</p>';
}
echo '<form action="index.php" method="post">';
echo 'Username <input type="text" id="textbox" name="login"><br>';
echo 'Password <input type="password" id="textbox" name="pass"><br>';
echo '<input type="submit" id="button" value="Login">';
echo '</form>';
?>
Na página verifica.php iremos verificar se os dados de login foram passados para a sessão, caso tenham sido irá redireccionar para a página da conta pessoal, caso não tenham sido passados irá redireccionar para o index.php:
PHP:
<?php
// Inicia sessões
session_start();
// Verifica se existem os dados da sessão de login
if(!isset($_SESSION["id_user"]) || !isset($_SESSION["nome_user"])) {
// Se os dados não existem redirecciona para a página de login
echo '<meta http-equiv="refresh" content="0; url=index.php" />';//URL mostrado apenas de exemplo
} else
{
//Se os dados existem redirecciona para a página da conta pessoal
echo '<meta http-equiv="refresh" content="0; url=conta.php" />';//URL mostrado apenas de exemplo
}
?>
Na página logout.php iremos fazer Logout, ou seja apagar os dados da sessão e voltar ao index.php (terá de se criar um link para esta página na página da conta pessoal):
PHP:
<?php
// Inicia sessões
session_start();
//Destroi os dados da sessão e redirecciona para a página inicial
$_SESSION = array();
session_destroy();
echo '<meta http-equiv="refresh" content="0; url=index.php" />';//URL mostrado apenas de exemplo
?>
E assim feito teremos um simples sistema de login em funcionamento.
Todo o código postado foi testado e não foi encontrado nenhum erro.
Espero que ajude!
Cumps
skullrazor
Última edição: