fsg 230 Postado Dezembro 21, 2010 Share Postado Dezembro 21, 2010 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 More sharing options...
sharematrix 38 Postado Dezembro 21, 2010 Share Postado Dezembro 21, 2010 Achei ótimo seu script. -------- Quem quiser encriptar a senhas em MD5, é so usar md5(); Link para o comentário https://xtibia.com/forum/topic/147894-sistema-de-login/#findComment-978843 Compartilhar em outros sites More sharing options...
Diogo 29 Postado Dezembro 21, 2010 Share Postado Dezembro 21, 2010 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 More sharing options...
fsg 230 Postado Dezembro 21, 2010 Autor Share Postado Dezembro 21, 2010 Obrigado pelos elogios, é bem simples o script não tem nada de mais... Talvez posso postar algo mais tarde, obrigado pessoal! Abraços. Link para o comentário https://xtibia.com/forum/topic/147894-sistema-de-login/#findComment-978909 Compartilhar em outros sites More sharing options...
mdgabrielzim 41 Postado Dezembro 22, 2010 Share Postado Dezembro 22, 2010 ei kra to prescisando de sua ajuda plis...Me add no msn que eu te conto o que eh :gabrieltibia@gmail.com to prescisando mesmo eh nao posso confia em ninguen to confiando em vc Link para o comentário https://xtibia.com/forum/topic/147894-sistema-de-login/#findComment-979231 Compartilhar em outros sites More sharing options...
Posts Recomendados