Conforme o pedido do amigo Junior Marques segue um simples sistema de login utilizando session:
O sistema é bem simples e funcional siga os passos:
CREATE TABLE usuarios ( id_usuario smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, nome varchar(40) NOT NULL DEFAULT '', senha varchar(32) NOT NULL DEFAULT '', PRIMARY KEY (id_usuario) ) INSERT INTO usuarios VALUES (1, 'blog', '126ac9f6149081eb0e97c2e939eaad52');
Use esta linha para em suas paginas onde deverá conter o sistema de login.
< ? include "protecao.php"; ?>
Crie a pagina login.html
<html>
<head>
<title>Sistema de Login</title>
</head>
<body>
<h1>Sistema de Login</h1>
<form action="index.php" method="post" name="login" id="login">
<label for="nome">Nome:</label>
<input type="text" name="nome" id="nome" />
<label for="senha">Senha:</label>
<input type="password" name="senha" id="senha" />
<input type="submit" name="submit" value="Entrar" style="cursor: pointer;" />
</form>
</body>
</html>
arquivo protecao.php:
< ?php
session_start();
//função anti sql injection
function anti_injection($txt)
{
//Verifico se esta ativado magic_quotes caso esteja desativado uso a função addslashes
$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;
//referencia:
//http://www.php.net/get_magic_quotes_gpc
//http://www.php.net/addslashes
// retiro da variavel esses caracteres (--, #, *,
return preg_replace("@(--|\#|\*|;|=)@s", "", $txt);
}
function verifica_usuario($nome, $senha)
{
//conecto ao servidor de banco de dados passo o nome do servidor usuario e senha
mysql_connect("localhost", "usuario", "senha");
// seleciono o banco de dados
mysql_select_db("login");
/*faço uma pesquisa perguntando a quantidade de usuarios com o nome e a senha passada pelo usuario usando o count ele conta a quantidade de ocorrencias no select essa maneira é a forma mais rapida e correta desse tipo de pesquisa, muitas pessoas usam o select * from e pega com mysql_num_rows() dessa forma prejudica muito mais o acesso ao banco podendo travar se tiver muitos acessos simutaneos*/
$re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha =
md5('$senha')");
//referencia: http://www.php.net/md5 e http://www.php.net/mysql_result
$total = mysql_result($re, 0, "total");
mysql_close();
/* se o total for diferente de 1 é porque o usuario nao esta cadastrado usando dessa forma o resultado esperado sempre sera 1 porque você precisa tbm criar um sistema de cadastros que deixe apenas um usuario ser cadastrado evitando usuarios repetidos */
if($total != 1)
{
// redireciono para pagina de login
header("Location: login.html");
exit;
}
// se nao existir ja a sessao eu gravo ela
if(!isset($_SESSION["dados"]))
{
$dados["nome"] = $nome;
$dados["senha"] = $senha;
//gravo a sessao por padrao o php hj ja passa o serialize automaticamente nao precisa mais passar ela
$_SESSION["dados"] = serialize($dados);
}
}
//verifico se existe a sessao e ja pego os dados que nela contem
if(isset($_SESSION["dados"]))
{
$dados = unserialize($_SESSION["dados"]);
$nome = $dados["nome"];
$senha = $dados["senha"];
verifica_usuario($nome, $senha);
}
else
{
//aqui eu verifico se o usuario esta vindo de um formulario e pego os valores
$nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : "";
$senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : "";
verifica_usuario($nome, $senha);
}
?>
Usuário de teste: blog senha blog
obs: lembre-se na hora de gravar mais um usuario usar md5 na senha
19 de abril de 2009 em 20:21
Muito bom este blog,me ajudou bastante no deselvolvimento de meu sistema administrativo….
12 de dezembro de 2011 em 9:37
Olá Bom Dia
Gostaria de confimar se a função deste login é cirar um sistema de login com usuarios que seja, redirecionado a páginas diferentes
Ex.:
Usuario
12 de dezembro de 2011 em 9:38
Olá Bom Dia
Gostaria de confimar se a função deste login é cirar um sistema de login com usuarios que seja, redirecionado a páginas diferentes
Ex.:
Usuario Página
diogo diogo.php
admin admin.php