Login: Senha: Registrar-se - Esqueci minha senha
.: Menu
Home
Artigos
Sign. dos Sonhos
Papel de Parede
Ilusões de Ótica
.: Bancos
Emoticons e Gifs
Ícones
Logos
.: Serviços
Mural de Recados
Usuários Online
Bloco de Notas
Formmail
Meu IP
.: Geradores
Gerador de Senhas
Barra de Rolagem
Recomende
Pop-up
Inverter Link
.: Canais
Apostilas
Arte/Cultura
Blog
Busca
Celular
Downloads
E-mail Grátis
Emoticons
Esportes
Filmes
Flogs
Fontes
GTA Mods
Host Grátis
Humor
Infantil
Informática
Jogos
Jogos Online
Linux
Músicas
Notícias
Offline
Redirecionadores
Sites Parceiros
Webdesigners
Webmasters
.: Na Faixa
Sobre
Contato
Recomende-nos
Termos de uso

Sistemas de Login

Enviado em 08/01/2007 - 11:42
Fonte: A A A A

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

nivel iniciante

mas basicamente vc precisa só colocar nas suas paginas o include "protecao.php"

index.php:

QUOTE
<?
include "protecao.php";
?>
<a href="principal.php">Pagina Principal</a>


login.html:

QUOTE
<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><br />
<input type="text" name="nome" id="nome" /><br />
<label for="senha">Senha:</label><br />
<input type="password" name="senha" id="senha" /><br />
<input type="submit" name="submit" value="Entrar" style="cursor: pointer;" />
</form>
</body>
</html>


protecao.php:

QUOTE
<?
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 vc 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:

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


pagina2.php:

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


banco de dados usado no exemplo:

ja tem o usuario Teste senha 123
obs: lembre-se na hora de gravar mais um usuario usar md5 na senha

SQL
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: www.imasters.com.br postadas por Fabyo

Enviado por: brunohcs

Esse artigo foi visualizado 2619 vezes

Compartilhe este artigo
facebook del.icio.us rec6 digg
Recomende este artigo a um amigo


Voltar
>> Comentários
 
Related Posts Plugin for WordPress, Blogger...
Comentar
Buscar Artigos:
.: Mods de GTA
GTA SA, VC, IV
SA - Carros
IV - Carros
Mods
GTA IV
SA - Mods Cleo
.: Saúde
Calculadora de IMC
Peso Ideal
Artigos de Saúde
.: Jogos Online
Ação
Aventura
Cassino
Classicos
Colorir
Corrida
Educativos
Esporte
Estrategia
Infantil
Luta
Meninas
Nave
Tiro
Outros
Adulto
Top Jogos
.: Parceiros
Mural de Recados Grátis
Papel de Parede
Show Moto
Web Visual
.: Nossos Números
Artigos: 930
Categorias: 50
Comentarios: 1863
Usuarios: 26634
Blocos de Nota: 87
Canais: 169

website monitoring service
eXTReMe Tracker
Na Faixa.net - Todos os direitos reservados. 12/2003 - 04/2024
Leia nossos Termos de Uso - Política de Privacidade
Desenvolvido por Web Visual
Crie seu Site - Papel de Parede Grátis - Show Moto - Mural de Recados Grátis - Dicas10