Ir para conteúdo

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
https://xtibia.com/forum/topic/147894-sistema-de-login/
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
https://xtibia.com/forum/topic/147894-sistema-de-login/#findComment-978903
Compartilhar em outros sites

×
×
  • Criar Novo...