Ir para conteúdo

Sistema De Login


fsg

Posts Recomendados

Eaee XTibianos, depois de muito tempo vou postar um Sistema de Login muito bom que encontrei em outro local desenvolvido pelo Fabyo. Já usei e agora vou trazer para vocês XTibianos.

Chega de papo e vamos começar...

 

Exemplo simples de um sistema login usando session e protegido contra ataques sql injection.

Mas basicamente você precisa só colocar nas suas paginas o include "protecao.php".

 

index.php:

 

<?php
include "protecao.php";
?>

 

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"></a> 
<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>

 

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

?>
</body>
</html>

 

principal.php:

 

<?php
// incluo a pagina de protecao que faz a verificação do usuario
include "protecao.php";
?>

 

pagina2.php:

 

<?php
include "protecao.php";
?>

 

Banco de Dados usado no exemplo:

 

Já tem o usuário Teste senha 123.

Observação: Lembre-se na hora de gravar mais um usuario usar md5 na senha.

 

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, 'Teste', '202cb962ac59075b964b07152d234b70');

 

Fonte:

Clique aqui

 

Créditos:

  • Fabyo

O sistema é muito simples e é funcional, espero que gostem :smile_positivo:

Abraços.

Link para o comentário
Compartilhar em outros sites

Bem simples o artigo, até um tanto ultrapassado.

 

Mas útil e eficaz.

 

Creio que para iniciantes deve ser uma super mão na roda, seja para usar ou para aprender um pouco mais da linguagem.

 

Obrigado por trazer esse conteúdo ao XTibia =D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...