Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Alves

Sistema Login & Cadastro AJAX (MD5,reCAPTCHA,XHTML,CONFIGS,PT-BR)

Recommended Posts

Características

- Página para Login;

- Página para Cadastro;

- Todo em AJAX;

- Código XHTML & CSS válidos;

- Configurações avançadas no arquivo config.php;

- Letras de verificação (reCAPTCHA);

- Codificação MD5;

- Sistema seguro contra eventuais ataques;

- Código limpo, meio comentado;

- Design básico.

 

Instalação

- Crie um banco de dados no seu MySQL;

- Abra o arquivo config.php;

- Mude as configuracoes e preencha os dados do MySQL;

- Acesso o arquivo install.php ou execute tabelas.sql;

- Delete a pasta sql;

- Pronto.

 

Avisos

- Padrao:

Usuario: teste

Senha: teste

- Para trancar uma pagina use este codigo *trancar.php deve esta na mesma pasta do arquivo trancado (copie-o)

<?php include_once('trancar.php'); ?>
- Sistema de CACHE está em testes, qualquer problema me avise.

 

Screenshots

Imagem Postada

------------------------------------------------------------------------------------------

Imagem Postada

Teste de Segurança

Imagem Postada

* Testado por Acunetix Web Vulnerability Scanner 6.1.

 

Configs

<?php
// MySQL
define('M_USUARIO','root');		// Usuario do MySQL
define('M_SENHA','');	// Senha do MySQL
define('M_HOST','localhost');	// Host do MySQL
define('M_BD','');		// Nome do banco de dados

// Configuracoes Login
define('USA_MD5','1');			// Usar encriptacao MD5 (0=NAO) (1=SIM)
define('TEMPO_COOKIE','24');	// Tempo de duracao do cookie (1=UMA HORA)
define('L_USAR_CAPTCHA','0');	// Usar checagem de letras (0=NAO) (1=SIM)
define('P_INDEX','logado.php');	// Pagina protegida que sera acessada apos o login

// Configuracoes Cadastro
define('MIN_USUARIO',4);		// Minimo de caracteres
define('MAX_USUARIO',32);		// Maximo de caracteres (MAX=32)
define('MIN_SENHA',4);			// Minimo de caracteres
define('MAX_SENHA',32);			// Maximo de caracteres (MAX=32)
define('C_USAR_CAPTCHA','1');	// Usar checagem de letras (0=NAO) (1=SIM)

// Configuracoes Captcha
define('PUBLIC_KEY','');	// Public Key dado na ReCaptcha
define('PRIVATE_KEY','');	// Private Key dado na ReCaptcha

// Mensagens
$msg[0] = 'Preencha todos os campos.';					// Campos nulos 		(Login,Cadastro)
$msg[1][0] = 'Usuário ou senha não correspondem.';		// Erro nas informacoes (Login)
$msg[1][1] = 'Esse usuário já existe, escolha outro.';	// Erro nas informacoes (Cadastro)
$msg[2][0] = 'Login efetuado! Aguarde';					// Sucesso 				(Login)
$msg[2][1] = 'Cadastro efetuado! Aguarde';				// Sucesso 				(Cadastro)
$msg[3] = 'Erro do sistema, tente outra hora.';			// Erro (MySQL,Query) 	(Login,Cadastro)
$msg[4] = 'Campo de verificação incorreto.';			// reCAPTCHA incorreto	(Login,Cadastro)

?>

-------------------------------------------

Demo

http://thiagors.co.cc/login/

* reCAPTCHA desativado por problemas no servidor

 

-------------------------------------------

Downloads

-> SysLogin v2.1.4 ( 35.6KB )

->-> Servidor Mediafire

->-> Servidor MegaUpload

->-> Link Direto

 

-------------------------------------------

 

Sistema atualizado.

Versão 3.0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você aceita criticas entao vou falar algumas

 

isso ta errado

 

$_COOKIE[NOME_COOKIE];

 

e você ta escondendo o erro com @

 

toda string tem que ser delimitada, porque nao é constante

 

entao o certo seria $_COOKIE["NOME_COOKIE"];

 

e você poderia fazer direto

 

if(isset($_COOKIE["NOME_COOKIE"])){

 

outra dica é usar mysqli, no lugar de mysql que esta obsoleto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Editado -

Fabyo acho que voce se confundiu. NOME_COOKIE é uma constante, e aqui com aspas não funcionou e o @ é para o caso de o cookie não está setado, assim nao vai aparecer erro.

Mas a dica de mysqli valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interessante!

Mas ao invés de usar as funções da extensão do banco de dados mysql (seja mysqli ou mysql),é interessante usar funções de alguma extensão que permita a abstração do mesmo (dbx,pdo,etc).

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois de analizar o código, encontrei algumas coisas interessantes, como cookies abertos que qualquer um vai poder se logar sem saber senha e se o usuário tiver os cookies desabilitados não vai conseguir usar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu realmente procurei sobre segurança de cookies, mas nada me deu uma resposta. Se voce podesse me passar alguma dica, serviria.

O script do trancar.php nao fui eu quem fiz nao, tem aqui no forum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostei muito do script, mas como faço para adicionar uma confirmação da senha digitada, e um campo para o email no registro?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei, eu sei, mais um sistema.

Mas mesmo assim eu vou postar, não custa nada.

 

Características

- Página para Login;

- Página para Cadastro;

- Todo em AJAX (Jquery);

- Código XHTML & CSS válidos (inclusive o do reCAPTCHA);

- Configurações avançadas no arquivo config.php;

- Letras de verificação Login & Cadastro;

- Codificação MD5;

- Código limpo, meio comentado;

- Design básico.

 

Dúvidas?

- Usuário padrão:

usuario: teste

senha: teste

- Exlclua ele depois.

- Leiam o ReadMe.txt

- É sério lê mesmo lá tem respostas pra muitas perguntas.

- Ou se não posta aqui mesmo.

 

Avisem qualquer bug.

Estou aceitando críticas.

-------------------------------------------

 

Opa

Parabens pelo sistema, melhor sistema que ja vi na minha vida de login

e o design em ajax, perfeito..

Funcionou 100%, só preciso de uma coisa

Tenho um programa, completamente configurado,

com servidores, ativos e rodando nele.

Porem ele tem uma parte de login, com esta codificação base64_encode(pack('H*', sha1

eu gostaria de mudar uma coisa, em vez de MD5, utilizar a codificação do meu programa,

ele ja esta configurado, em muitos lugares, e não queria mudar nele a codificação para MD5

Tem como você me ajudar a colocar neste sistema esta codificação ?

Muito obrigado, Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostei muito do script, mas como faço para adicionar uma confirmação da senha digitada, e um campo para o email no registro?

Obrigado

Nao entendi a confirmacao da senha

Mas o campo de email é facil, insira o campo email na base de dados, crie um input na pagina de cadastro e faça as verificacoes na pagina func_cadastro, mas nao esqueça de alterar a query.

 

Opa

Parabens pelo sistema, melhor sistema que ja vi na minha vida de login

e o design em ajax, perfeito..

Funcionou 100%, só preciso de uma coisa

Tenho um programa, completamente configurado,

com servidores, ativos e rodando nele.

Porem ele tem uma parte de login, com esta codificação base64_encode(pack('H*', sha1

eu gostaria de mudar uma coisa, em vez de MD5, utilizar a codificação do meu programa,

ele ja esta configurado, em muitos lugares, e não queria mudar nele a codificação para MD5

Tem como você me ajudar a colocar neste sistema esta codificação ?

Muito obrigado, Abraços...

Por padrao está assim:

USA_MD5 == 1 ? $senha=md5($senha) : "";
Você pode fazer assim:

$senha = base64_encode(pack('H*', sha1($senha)));
Altere isso na pagina de cadastro e login

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder..

Fiz a alteração nos arquivos> func_cadastro.php ; func_login.php,

Tinha apenas uma linha em cada arquivo que podia alterar,

estava assim:

USA_MD5 == 1 ? $senha=md5($senha) : "";
Tentei colocar assim direto:

$senha = base64_encode(pack('H*', sha1($senha)));
Não funcionou, Então tentei:

USA_MD5 == 1 ? $senha = base64_encode(pack('H*', sha1($senha)));
O que acontece...

 

Quando esta assim : $senha = base64....

Digito as informações na pagina de Cadastro, e então mando cadastrar,

ele aparece a imagem de carregando, e logo depois ele some a imagem, e fica na tela em que aparece Usuario logado, redirecionando..., mas ao invez disto, fica sem letras, e nada acontece...

 

Quando esta assim: USA_MD5 == 1 ? $senha = base64...

Digito as informações na pagina de Cadastro, e então mando cadastrar,

Ele diz, preencha todos os campos corretamente..

 

(PS: Sempre com a configuração do MD5 ativo no arquivo config.php)

 

Obrigado pela atenção..

Abraços.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preste atenção

ctype_alnum()
(condicao) ? (true->comandos) : (false->comandos);
Sua encriptacao tem que retornar NUMEROS e LETRAS, caso nao retire a linha onde tem ctype_alnum

E o if usado na checagem MD5 é um IF simplificado:

Operador Ternário

 

Estou fazendo uma versao com menos bugs, ainda hoje eu edito o post

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, Thiago

Me desculpa a ignorancia, porem sou iniciante em php,

Teria como você dizer como (e onde) editar,

Por que, não entendi o que você disse no topico anterior,

Obrigado pela ajuda, Abraços...

 

 

Moderador, me desculpe por ter postado 4 posts,

quando mandava enviar, ele não carregava a pagina

e mesmo depois de uns 15 minutos não apareceram os posts...

Apague fazendo favor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em func_login e func_cadastro

USA_MD5 == 1 ? $senha = base64_encode(pack('H*', sha1($senha))) : '';

Se der erro Preencha todos os campos corretamente delete a linha

!ctype_alnum($senha) ? $data='0' : '';

Estou colocando uma versao muito melhor jaja...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago

Funcinou,

tanto na v2.0 quanto na v2.1

Porem, ele não esta redirecionando para a pagina logado.php depois de logar, que esta definida no config.php

Ele esta logando, pois se eu tentar acessar ela antes de logar vai para a pagina de login,

se eu tentar acessar depois, aparece o conteudo normal,

É um bug, hora que consertar Avisa..... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif/>

 

 

E mais uma coisa, usando a versão 2.0,

eu consegui fazer funcionar com a encriptação do meu programa (Muito obrigado pela ajuda),

porem eu queria alterar, o nome da tabela, de adm_usuarios, para accounts,

e editar a query, fiz umas tentativas, porem não consegui, olha a estrutura dela:

 

CREATE TABLE `accounts` (

`login` varchar(45) NOT NULL default '',

`password` varchar(45) default NULL,

`lastactive` decimal(20,0) default NULL,

`accessLevel` int(11) NOT NULL default '0',

`lastIP` varchar(20) default NULL,

PRIMARY KEY (`login`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

Precisaria alterar 3 coisas, o nome da tabela, em vez de usuario senha, usar, login password, e sempre, na coluna accessLevel, adicionar o valor 0, não pedir ao usuario, ele só tem que adicionar o valor 0, as outras colunas podem ficar null, ao invéz de postar na tabela adm_usuarios, posta na accounts

O programa esta usando esta tabela, prometo que é a ultima coisa que incomodo o pessoal aqui sobre este assunto http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif/>

 

Valeu pessoal Abraços....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.