gRoOvE 0 Denunciar post Postado Dezembro 1, 2007 gostaria de saber como fazer akele "lembrar login" quando a pessoa vai logar e marca a opcao lah, acho q eh por COOKIES "/ se for, um exempl ?? se nao, tem como fazer de outra forma ?? vlws Compartilhar este post Link para o post Compartilhar em outros sites
lifeSample 1 Denunciar post Postado Dezembro 1, 2007 é sim por cookies de uma olhada Session + Cookies Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 1, 2007 velho nao sabe onde posso ler algo mais claro sobre cookies, nao intendi nada do php.net "/ Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 1, 2007 Para salvar um cookie: setcookie("nome_do_cookie", "valor"); se voce não passar nenhum valor para ele, o cookie expirará quando a pagina for fechada para salvar um cookie com tempo: setcookie("nome_do_cookie", "valor", time()+3600); o tempo é em segundos entao 3600 segundos = 1 hora para testar se o cookie existe: if(isset($_COOKIE["nome_do_cookie"])){ echo "OK Ja ta logado"; } else { echo "Nao ta logado redirecione para pagina de login"; } Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 1, 2007 hmm, sakei...mas na pagina onde ele vai fazer o login que vai ter o checkbox caso o usuario queira ser lembrado, tenho q passar o valor do checkbox pro banco ?? e quando eu quiser que o cookie do usuario NUNCA expire, que soh expire quando ele fizer logout ?? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 1, 2007 Não precisa salvar no banco. Na página de login, verifique se o usuário marcou o checkbox. Se sim, crie o cookie, caso contrário, não o crie. É bom criar um script como auto_login.php, que verifique se os dados do login coincidem com os salvos no BD. Isso prov6e mais segurança, já que os cookies podem ser editados ou até mesmo criados. Outra coisa: crie um array com os dados do login e use serialize() para salvá-los no cookie. Depois use unserialize(). Isso é útil quando se precisa salvar um array ou objecto no formato de string. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 1, 2007 heAE hIAUEAHE calma veio, eu nem consegui fazer a parte mais simples...essa parte que você falou se o cara marcar o checkbox criar o cookie ou nao eh na parte do formulario ou na parte PHP q vai processar o formulario ?? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 1, 2007 eu quis dar a idéia geral. vamos por partes, como diria Jack Estripador. :) Esse checkbox será marcado no login. Faça as verificações de usuário e senha. Se estiverem corretos, verifique se o checkbox foi marcado. Se sim, crie o cookie. Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 2, 2007 bom na verdade entao vou ter q usar SESSION e COOKIE juntos né ? pois como você falou "ali verifique se o checkbox foi marcado. Se sim, crie o cookie." ... se não foi marcado eu nao crio o COOKIE e consequentemente nao vou conseguir logar, pois eu preciso do COOKIE pra conseguir gravar os dados como se fosse SESSION, não é ? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 2, 2007 Eu costumo usar session e cookie. Uso cookie só para mater o usuário logado, caso ele o deseje. Mas dá para fazer o sistema somente com cookies. Nesse caso, o cookie sempre seria criado, mas com um pormenor: se o checkbox for marcado, o cookie ficará ativo por um tempo mais longo. Caso contrário, o cookie expirará ao fechar o navegador (neste último caso, nem é necessário definir o "tempo de vida" do cookie, como o Fabyo já citou) Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 2, 2007 ahh agora sakei, entao vou fazer primeiro só por COOKIE, definindo os dois com "tempo de vida" diferentes. Me diga ma coisa, e quando eu quiser fazer o COOKIE nunca expirar ?? ficar lah até que o usuário faça logout "/ Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 2, 2007 Você pode definir o tempo do cookie para um ano: time() + 60 * 60 * 24 * 365 Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 4, 2007 e agora como estou usando SESSION e COOKIE juntos, como vo fazer eles trabalharem juntos olha meu codigo como está: se por exemplo a pessoa marca o checkbox "lembrar login", fecha a pagina e abre denovo...a SESSION nao vai mais existir SÓ o COOKIE e ai ?? ali onde tem $_SESSION['login'] vai fica com erro "/ <?php if (isset($_SESSION['login']) || (isset($_COOKIE['login']))){ ?> <table> <tr> <td> Bem Vindo: <?=$_SESSION['login'];?><br /> Seu Último acesso foi: <?=$_SESSION['data_ultimo_login'];?><br /> Nível: <?=$_SESSION['nivel'];?> [ <a href="logout.php">SAIR</a> ] </td> </tr> </table> <? } else { ?> <form action="login_db.php" method="post"> <table> <tr> <td>Login:</td> <td><input type="text" name="login" size="15" /></td> </tr> </table> <? } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 4, 2007 Para verificar se a sessão foi iniciada: PHP if (!isset($_SESSION)){ session_start(); } Isso evita que se use $_SESSION sem ter iniciado a sessão. Depois basta verificar se o cookie existe. Se existir, pegue os valores, faça as verificações no BD e, se estiver tudo ok, salve-as nas variáveis de sessão. Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 5, 2007 a sessao jah foi inciada no topo da pagina...eu nao consigo fazer elas trabalharem juntas "/ ve se esse meu code ta certo: <?php session_start(); include "config.php"; $login = trim($_POST['login']); $senha = trim($_POST['senha']); if (empty($login) || empty($senha)) { if (empty($login)) { echo "Digite seu Login<br />"; } if (empty($senha)) { echo "Digite sua Senha<br />"; } } else { $sql_login = "SELECT * FROM membros WHERE login ='$login' AND senha='$senha'"; $exe_login = mysql_query($sql_login) or die(mysql_error()); $num_login = mysql_num_rows($exe_login); if ($num_login > 0) { $reg_login = mysql_fetch_array($exe_login); if($reg_login['nivel'] > 0){ $dados = array(); $dados['nome'] = $reg_login['nome']; $dados['senha'] = $senha; $dados['nivel'] = $reg_login['nivel']; $dados['login'] = $login; $_SESSION['dados'] = $dados; if(isset($_POST['gravar'])){ setcookie("dados", serialize($dados), time()+10); } mysql_query("UPDATE membros SET data_ultimo_login = now() WHERE login = '$login'"); header("location: index.php?categoria=protegido"); } else { echo "Login e/ou senha incorretos"; } } } ?> depois eu tento fazer a logica...caso a SESSION ou COOKIE exista ele mostra "Bem vindo usuarioX" e esconde o form pra pessoa logar com o login e senha...isso que nao to conseguindo se marcar a checkbox e salvar o COOKIE ai ele mostra certo mas se for só na SESSION fica soh o form pra login "/ Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 5, 2007 Está correto. Apenas reveja o tempo que o cookie existirá. No seu caso, ele só ficará ativo por 10 segundos. Vou postar o arquivo auto_login.php, que criei para usar em sistemas de login. O código está comentado e acho que será fácil de entender. OBS: A classe MySQLiConnection() é extendida da classe MySQLi, presente no PHP 5. auto_login.php PHP <?php/* Este script verifica a existência do cookie de auto-identificação. Se ele existir, certfica-se de que as informações nele presentes coincidem com as armazenadas no banco de dados. Este script é rodado na index.php. */ if (isset ($_COOKIE["login"])) { $dados = unserialize($_COOKIE["login"]); $MySQLi = new MySQLiConnection(); $sql = $MySQLi->query("Select login, senha, id_nivel From ". TB_USUARIOS ." Where id = " . $dados['id_usuario']); if ($sql->num_rows != 1)//se não existir um usuário com o id presente no cookie { //destrói o cookie setcookie("login", "", time() - 1, "/"); if (isset($_SESSION['login'])) { unset($_SESSION['login']); } } else//se for encontrado somente um usuário { $f = $sql->fetch_object(); if ($dados['login'] != $f->login || $dados['senha'] != $f->senha || $dados['nivel'] != $f->id_nivel)//se os dados não coincidirem { //destrói o cookie setcookie("login", "", time() - 1, "/"); if (isset($_SESSION['login'])) { unset($_SESSION['login']); } } else { //cria $_SESSION['login'] com os dados do cookie $_SESSION['login'] = $dados; } } } ?> É simples e funcional. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 5, 2007 hmm, vou analisar o codigo...mas me diga uma coisa nessa parte do script: $dados = array(); $dados['nome'] = $reg_login['nome']; $dados['senha'] = $senha; $dados['nivel'] = $reg_login['nivel']; $dados['login'] = $login; $_SESSION['dados'] = $dados;a $_SESSION['dados'] pega o valor das variaveis $dados['nomecampo'] e transforma tudo em $dados['nomemcapo'] ?? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 5, 2007 Não. Nesse caso, acesse as variáveis assim: $_SESSION['dados']['nome'] $_SESSION['dados']['login'] ... Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 5, 2007 beraldo, aproveitei o topico do fabyo ensinando a fazer bem isso que estou querendo -> http://forum.imasters.com.br/index.php?showtopic=261114 só nao intendi esse codigo inline: $dados = isset($_SESSION["dados"]) ? $_SESSION["dados"] : unserialize($_COOKIE["dados"]); echo "Seja Bem-Vindo ". $dados["nome"]." ";pq aqui parece que ele juntou td, as SESSION e COOKIE em uma variavel soh $dados['nomecampo']; Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 5, 2007 Essa sintaxe equivale a um if: PHP if (isset($_SESSION['dados'])){ $dados = $_SESSION['dados']; } else { $daods = unserialize($_COOKIE["dados"]); } Chama-se operador ternário: PHP $var = (condicao) ? true : false; Compartilhar este post Link para o post Compartilhar em outros sites