MorFer 0 Denunciar post Postado Outubro 25, 2006 E tem como eu colocar um link de logoff após a pessoa entrar no sistema?O script para fazer logout eh simples. Vou posta-lo abaixo.Vou postar um sistema que eu desenvolvi. Esta funcionando perfeito. Um pouco diferente do sistema do Fabyo, mas com a mesma finalidade. conection.php (dados para conectar ao banco de dados) ---------------- <?php $host = "localhost"; // IP do banco de dados $usr = "root"; // Login do bd $pwd = ""; // Senha do bd $db = "accounts"; // Nome da base de dados ?> conecta.php (funcoes de conexao com banco de dados)-------------- <?php include("conection.php"); $conexao = mysql_connect("$host","$usr","$pwd"); $selectdb = mysql_select_db("$db",$conexao); function conectabd() { global $conexao, $selectdb; if(!$conexao) { die('O sistema está com problemas. Tente mais tarde. ' . mysql_error()); return false; } else { if(!$selectdb) { die('Ocorreu um erro com o banco de dados. Por favor informe ao administrador. ' . mysql_error()); return false; } else { return true; } } } function fecha_conexaobd() { global $conexao; mysql_close($conexao); } function checa_senha($nome,$pass) { global $conexao; if (conectabd()) { $resultado = mysql_query("SELECT login, senha FROM contas WHERE login = '$nome'", $conexao); if (!$resultado) { die('Erro no banco de dados. Reporte ao administrador. ' . mysql_error()); } else { $linha = mysql_fetch_array($resultado); if (($linha['login'] == $nome) && ($linha['senha'] == $pass)) { return true; } else { return false; } } fecha_conexao_bd(); } else { return false; } } ?> verifica.php (garante que o usuario esta logado. Toda pagina q incluir o verifica.php sera restrita a usuarios logados no sistema)------------- <?php // Inicia sessoes session_start(); // verifica se existe sessao. if(!isset($_SESSION["usuario"])) { // redireciona para pag. de login header("Location: login.php"); exit; //garante q nao sera executado nenhum codigo dessa pagina apos o login. } ?> index.php (pagina principal)----------- <?php session_start(); include("verifica.php"); //verifica se esta logado ou nao. caso nao esteja vai pra pag. de login. ?> <html><head> <title> Sistema de Login </title></head><body> <div align="left"><center> Bem Vindo <b> <?php echo "<font color=green>".$_SESSION['usuario']."</font>"; ?></b> <a href="sair.php">(Sair)</a></center> </body></html> login.php (pagina de login) ---------- <?php if ($submit) { if ($_POST['user'] && $_POST['senha']) { session_start(); //carrega sessoes e destroi session_destroy(); // para garantir que nao fique resto de outras sessoes. session_start(); //carrega sessoes limpas. include('conecta.php'); $login = $_POST['user']; $senha = $_POST['senha']; if (checa_senha($login,$senha)) { $_SESSION['usuario'] = $login; header("Location: index.php"); } else { $saida = "<tr><td><div align=center><font color=red> Senha ou Login inválidos! </font></div></td></tr> "; } } else { $saida = "<tr><td><div align=center><font color=red> Preencha todos os dados. </font></div></td></tr> "; } } ?> <html><head> <title> Sistema de Login </title></head><body> <div align="left"> <form method="post" action="<?php echo $PHP_SELF ?>"> <table width="220"><tr><td> <div align="center"> <font color="#000000"> <p align=left>Login: <input name="user" value="<?php echo $_POST['user'];?>" type="text" size="10"><br> Senha: <input name="senha" type="password" size="10"> <input type="submit" name="submit" value="Enviar"></p> </div></form></font></td></tr> <?php echo $saida; ?> </body></html> sair.php (script para deslogar)--------- <?php // Inicia sessões, para assim poder destruí-las session_start(); session_destroy(); header("Location: login.php"); ?> Ja no sistema do Fabyo, eh simples resolver esses erros.O erro de nao passar para a "pagina2.php": //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); // basta retirar essa linha para funcionar. Se ja existe sessao, o usuario ja esta logado, nao precisa verificar de novo. } Ja o problema de nao logar mais de uma vez, basta usar o script de logout que postei ai em cima. Ele nao loga mais de uma vez pq ja tem uma sessao q nao foi destruida. Ai galera, espero ter ajudado. Ate +! Compartilhar este post Link para o post Compartilhar em outros sites
MorFer 0 Denunciar post Postado Outubro 25, 2006 Como faria para acrescentar um popup dizendo que o login esta errado?Se você quer somente avisar que o login esta errado em um pop-up, eh simples.você tem q usar javascript, pois o php nao faz isso. você pode tentar assim (vou usar o sistema que postei como exemplo): if (checa_senha($login,$senha)) { $_SESSION['usuario'] = $login; header("Location: index.php"); } else { echo "<script language=javascript> window.open('login_error.html','login_error','resizable=0,width=300,height=300,left = 362,top = 234'); </script>"; } login_error.html------------------- <html><body><font color=red size=+3> LOGIN ERRADO </font></body></html>Espero ter ajudado.Ate+! Compartilhar este post Link para o post Compartilhar em outros sites
MorFer 0 Denunciar post Postado Outubro 25, 2006 Eu estou conseguindo acesso com qqer user e ou senha digitados. A consistência não está sendo realizada. Alguém testou usar uma senha errada pra ver no que dá? Simples resolucao: no arquivo protecao.php ---------------------------- function verifica_usuario($nome, $senha) { //conecto ao servidor de banco de dados passo o nome do servidor usuario e senha mysql_connect("localhost", "root", ""); // seleciono o banco de dados mysql_select_db("login"); $re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = '".md5($senha)."'"); $total = mysql_res A linha $re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = '".md5($senha)."'"); antes era $re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha =md5('$senha')"); A funcao md5 eh do PHP e nao do MySQL, portanto, tem q fechar as aspas duplas (que vem logo antes do select), concatenar o resultado da funcao md5() do PHP e abrir as aspas duplas novamente para finalizar a query. Espero ter ajudado. Ate+. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Outubro 25, 2006 MorFer voce esta enganado o mysql tbm tem a função md5 e ta certo sim daquele jeito Compartilhar este post Link para o post Compartilhar em outros sites
MorFer 0 Denunciar post Postado Outubro 25, 2006 MorFer voce esta enganado o mysql tbm tem a função md5e ta certo sim daquele jeitoBom, comigo nao funcionou daquele jeito, entao optei por deixar o md5 pro php. Ai passou a funcionar. ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Outubro 25, 2006 mas funciona sim, da uma olhada o mysql existe muitas funções http://dev.mysql.com/doc/refman/5.0/en/enc...ml#function_md5 http://dev.mysql.com/doc/refman/5.0/en/enc...-functions.html Compartilhar este post Link para o post Compartilhar em outros sites
Eduneri 0 Denunciar post Postado Outubro 25, 2006 coloque no meu aki, e deu o seguinte erro:Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\pos\protecao.php on line 29Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\pos\indexadm.php:6) in c:\apache\htdocs\pos\protecao.php on line 36Agradeço pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
Ygornet 0 Denunciar post Postado Novembro 12, 2006 Opa Fabyo.esse sistema tah dando muita zebra .. se puder dar um jeito aew pra galera.. ficaremos grato...Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo.RFS 0 Denunciar post Postado Novembro 13, 2006 cara eu coloquei aqui no laboratório um sistema de login parecido... da uma olhada! Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Novembro 13, 2006 Ygornet o sistema ta bom, é o pessoal que nao sabe implementar, pois precisa saber um pouco de php, nao é só copiar e colar. mas em todo caso eu fiz outro sistema de login, com session, tableless, javascript nao obstrusivo com mensagens amigaveis em css no lugar de alert() to anexando o sistema junto com o banco.sql de exemplo e nele tem nivel de acesso, por exemplo se o usuario tem nivel = 0 nao pode logar, se tem 1 é um usuario comun e 2 admin e criei uma chave para ajudar na segurança, quando voce cadastrar um usuario novo na chave voce faz assim: $chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) ); e salve no banco de dados: INSERT INTO usuarios ( id_usuario , nome , senha , email , nivel_acesso , chave ) VALUES ( NULL , '$nome', '$senha', '$email', '$nivel', '$chave' ); qualquer outra duvida só perguntar login.zip Compartilhar este post Link para o post Compartilhar em outros sites
RIGOTTI 0 Denunciar post Postado Novembro 14, 2006 MUITO OBRIGADO primeiramento ao Fábyo.Gostei muito deste sistema que você postou por último, deixei ele de acordo com minha necessidade e ele já está rodando OK. No estando tenho uma dúvida em como "administrar" as página de acordo com "nivel_acesso", por exemplo deixar um página restrita ao nivel_acesso 2 (admin). Compartilhar este post Link para o post Compartilhar em outros sites
RIGOTTI 0 Denunciar post Postado Novembro 14, 2006 Descobri........sobre a dúvida que postei, na última mensagem. Compartilhar este post Link para o post Compartilhar em outros sites
Geison GM 0 Denunciar post Postado Dezembro 5, 2006 Ygornet o sistema ta bom, é o pessoal que nao sabe implementar, pois precisa saber um pouco de php, nao é só copiar e colar. mas em todo caso eu fiz outro sistema de login, com session, tableless, javascript nao obstrusivo com mensagens amigaveis em css no lugar de alert() to anexando o sistema junto com o banco.sql de exemplo e nele tem nivel de acesso, por exemplo se o usuario tem nivel = 0 nao pode logar, se tem 1 é um usuario comun e 2 admin e criei uma chave para ajudar na segurança, quando voce cadastrar um usuario novo na chave voce faz assim: $chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) ); e salve no banco de dados: INSERT INTO usuarios ( id_usuario , nome , senha , email , nivel_acesso , chave ) VALUES (NULL , '$nome', '$senha', '$email', '$nivel', '$chave' );qualquer outra duvida só perguntar login.zip Muito bom, porém não estou conseguindo criar um usuário e senha...tipo...criar eu até crio (não sei se corretamente) porém sempre dá como senha ou usuário invalido.O que poderia ser? Grato. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 5, 2006 Geison GM voce esta salvando a senha junto com a chave no padrao que eu mostrei acima? $chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) ); se nao salvar com a chave corretamente o login nunca ira funcionar mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Everton Denis 0 Denunciar post Postado Dezembro 5, 2006 Geison GM voce esta salvando a senha junto com a chave no padrao que eu mostrei acima?$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) ); se nao salvar com a chave corretamente o login nunca ira funcionar mesmoDesculpa minha ignorancia Fabyo, mas como faz isso que você disse de salvar a senha junto com a chave????Por exemplo, faço um sistema de cadastro de usuarios, mas como fazer isso de salvar senha e chave? Como funciona essa chave???Obs.: deu para notar que não sei mto de php num eh mesmo?! mas só agora me deparei com a necessidade de criar login e senha, ainda mais só agora reconheci a necessidade de tomar cuidado com a segurança do mesmo.Obs 2.: Otimos tutoriais o seu!Espero ajuda véio.Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 6, 2006 Everton o modo de gravar o usuario corretamente eu postei no topico acima http://forum.imasters.com.br/index.php?s=&...st&p=677152 Compartilhar este post Link para o post Compartilhar em outros sites
Everton Denis 0 Denunciar post Postado Dezembro 6, 2006 Everton o modo de gravar o usuario corretamente eu postei no topico acimahttp://forum.imasters.com.br/index.php?s=&...st&p=677152Não deu tempo hehehe, você postou antes.Eu sai do trampo ontem e depois q esfriei a cabeça vi a besteira q eu disse no post, eu nem precisava t perguntar tal coisa http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Pensando um pouco mais eu vi a lógica do md5 e como implementar.Mesmo assim obrigado por reforçar oq você disse no post. Compartilhar este post Link para o post Compartilhar em outros sites
Everton Denis 0 Denunciar post Postado Dezembro 7, 2006 Olá Fabyo!!! Bom cara, não tem jeito, tentei de tdo e não está dando certo. Crie um form para criar mais usuários, até ai tdo bem, o problema é que nao está logando, ou seja, digito o login e a senha e volta novamente para a página do login. Já alterei o php.ini, colocando o path mas nda, sempre a mesma coisa. Não aparece mensagem de erro nenhum tbm. Oque pode estar acontecendo cara????? Preciso de um help!!!!!!! Pior que enquanto eu não conseguir não vou sucegar. Gostei desse sistema e não vou desistir dele rsss Abraço cara e espero ajuda! ...............................................Edit Achei melhor colocar os codigos q estou usando para incluir usuarios: cad_login2.php: <form id="formulario" name="formulario" action="inclui_usuario.php" method="post" > <table width="228" border="0" align="center"> <tr> <td width="68">Nome</td> <td width="244"><input type="text" id="nome" name="nome" /></td> </tr> <tr> <td>Senha</td> <td><input type="password" id="senha" name="senha" /></td> </tr> <tr> <td>E mail </td> <td><input type="text" id="email" name="email" /></td> </tr> <tr> <td>Nivel</td> <td><input type="text" id="nivel" name="nivel" /></td> </tr> <tr> <td colspan="2"><div align="center"> <input name="submit" type="submit" value="Cadastrar" /> </div></td> </tr> </table></form></body></html>inclui_usuario.php: <body><p align="center"> <? mysql_connect("localhost", "root", ""); mysql_select_db("carrinho"); $nome = mysql_escape_string($nome); $senha = mysql_escape_string($senha); $chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) ); $senha = md5($senha);$sql = "INSERT INTO usuarios ( id_usuario , nome , senha , email , nivel_acesso , chave ) VALUES ( NULL , '$nome', '$senha', '$email', '$nivel', '$chave' )";//echo $sql;//$rs = mysqlexecuta($sql);$re = mysql_query(sprintf($sql));?></p><div align="center">Cadastro efetuado com sucesso!!! </div><p align="center"></p><meta HTTP-EQUIV="REFRESH" CONTENT="3; URL=cad_login2.php"></body></html>Abs Compartilhar este post Link para o post Compartilhar em outros sites
Sergio R 0 Denunciar post Postado Dezembro 14, 2006 Boa tarde Fabyoserá que você pode explicar essa parte do script if ( get_magic_quotes_gpc() ) { $nome = stripslashes($_POST["Nome"]); $senha = stripslashes($_POST["Senha"]); } $nome = mysql_escape_string($nome); $senha = mysql_escape_string($senha); por quê usar stripslashes sendo antes não foi usado nenhuma função como de escape. Agradeço desde já. Compartilhar este post Link para o post Compartilhar em outros sites
Hamister 0 Denunciar post Postado Dezembro 16, 2006 ótimo tutorial, aqui n deu problema nenhum Compartilhar este post Link para o post Compartilhar em outros sites