e3tadashi 0 Denunciar post Postado Julho 7, 2012 Olá, Estou com uma dúvida meio teórica. Estou criando uma pagina estilo loja virtual. Já fiz um sistema bem simples de cadastro e login. Parece estar funcionando. Digito o usuário e senha no formulário de login, ele faz as verificações no banco de dados e tudo mais. OK! Ai o site me joga numa pagina de boas vindas, e dps automaticamente para a pagina da loja. Então nessa parte eu travei. Como eu permaneço logado? Pois apartir de agora estarei navegando sem nenhum metodo POST e GET. Por exemplo, dps que vou automaticamente para a loja, gostaria de escrever algo no menu do top como: "Bem vindo (nome do usuario logado)!" Alguma dica? =x Se alguem souber me indicar uns tutoriais sobre isso tbm agradeço. Estou aprendendo na raça e aos tutoriais picados. =p Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Julho 7, 2012 <? session_start(); include "conexao.php"; $login = $_SESSION['login']; $senha = $_SESSION['senha']; date_default_timezone_set('America/Sao_Paulo'); $data=date('Y-m-d'); $hora = date('H'); if ($hora < 12) $saudacao = 'Bom dia'; elseif($hora < 18) $saudacao = 'Boa tarde'; else $saudacao = 'Boa noite'; $db = mysql_connect ($host, $login_db, $senha_db); //conectamos ao mysql $basedados = mysql_select_db($database); //conectamos ao database $confirmacao = mysql_query("SELECT * FROM usuarios WHERE login = '$nome' AND senha = '$senha',$db"); $contagem = mysql_num_rows($confirmacao); if ( $contagem == 0 ) { header('Location: index.php'); exit; } ?> <? echo $saudacao; ?> <? echo $nome; ?> tenta ai ^^ <? session_start(); include "conexao.php"; $login = $_SESSION['login']; $senha = $_SESSION['senha']; date_default_timezone_set('America/Sao_Paulo'); $data=date('Y-m-d'); $hora = date('H'); if ($hora < 12) $saudacao = 'Bom dia'; elseif($hora < 18) $saudacao = 'Boa tarde'; else $saudacao = 'Boa noite'; $db = mysql_connect ($host, $login_db, $senha_db); //conectamos ao mysql $basedados = mysql_select_db($database); //conectamos ao database $confirmacao = mysql_query("SELECT * FROM usuarios WHERE login = '$nome' AND senha = '$senha',$db"); $contagem = mysql_num_rows($confirmacao); if ( $contagem == 0 ) { header('Location: index.php'); exit; } ?> <? echo $saudacao; ?> <? echo $nome; ?> tenta ai ^^ Compartilhar este post Link para o post Compartilhar em outros sites
e3tadashi 0 Denunciar post Postado Julho 7, 2012 Gostei da ideia de verificar o horário pra escolher a saudação hehe. Vou tentar. Pesquisei umas coisas sobre cookie e session. Pelo que eu vi, o cookie da pra eu setar o tempo de expire. Enquanto o session, se eu fechar a pagina, já era. Então me pareceu melhor fazer o sistema usando cookie, mas percebi algo indesejável no resultado. Por exemplo, eu entro no site e no topo esta um "Bem vindo", que é gerado assim: <div class="menu_top_text" style="margin-left:15px;"> <?php if(!isset($_COOKIE["usuario_logado"])) { echo " Bem vindo! "; }else { if(isset($_COOKIE["usuario_logado"])) { echo " Bem vindo ".$_COOKIE['usuario_logado']."! "; }else { echo " Até mais! "; } } ?> </div> Então eu faço o login, e sou mandado pra uma pagina de boas vindas, onde faço um set no cookie: <?php include 'conexao.php'; if($_SERVER['REQUEST_METHOD'] == "POST") { $sql = "SELECT username FROM accounts WHERE username = '".$_POST['user_name']."' AND password = '".$_POST['password']."' LIMIT 1"; $query = mysql_query($sql) or die(mysql_error()); $resultado = mysql_fetch_assoc($query); if(empty($resultado)) { include 'header.php'; echo " <div class='alert_box'> <p>** Usuário e/ou senha inválidos</p> <p>** Digite usuário e senha corretamente.</p> </div> "; include 'footer.php'; }else { setcookie("usuario_logado", $_POST['user_name'], time()+3600); include 'header.php'; echo " <div class='alert_box'> <p>Olá ".$_POST['user_name']."! Seja bem vindo!</p> <p>Você será redirecionado para nossa loja automaticamente.</p> <p><a id='autored' href='shopping_page.php' style='color:#AAA; font-size:12px;'>Clique aqui caso não queira esperar.</a></p> </div> <script type='application/javascript'> document.onload = redirecionamento('autored',6); </script> "; include 'footer.php'; } } ?> Mas durante essa pagina de boas vindas e redirecionamento, parece que as coisas que eu programei para "faça quando o cookie estiver setado" não funciona. Só funciona depois do redirecionamento. Pra essa pagina de boas vindas não fica tão estranho. Mas depois eu fiz uma pagina de logout: <?php setcookie("usuario_logado","",time()-3600); ?> <?php include 'header.php'; echo " <div class='alert_box'> <p>Muito obrigado pela sua visita!</p> <p>Você será redirecionado para nossa homepage automaticamente.</p> <p><a id='autored' href='home_page.php' style='color:#AAA; font-size:12px;'>Clique aqui caso não queira esperar.</a></p> </div> <script type='application/javascript'> document.onload = redirecionamento('autored',6); </script> "; include 'footer.php'; ?> E ai durante a pagina de logout, que deveria aparecer "Até mais" no topo, ainda aparece "Bem vindo (nome do usuário)", junto com a mensagem no meio do site "Muito obrigado pela visita...". Fica bem tosco. =p Como corrijo isso? =s Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Julho 7, 2012 nao entedo muito de cookie mais achu que session é mais seguro ouvi dizer que tem hackers ja usando programa pra roubarem cookies... tipo creio que seria mais ow menos assim <?php setcookie("nomedocookie", 0, 1); header("Location: index.php"); ?> ow entao tu poderia coloca um... echo echo"lalalala"; Compartilhar este post Link para o post Compartilhar em outros sites
e3tadashi 0 Denunciar post Postado Julho 7, 2012 É tem isso também. Mas no caso eu fiz só assim: setcookie("usuario_logado", $_POST['user_name'], time()+3600); Ai eu estou guardando só o usuário né? Acho que não teria perigo teria? Tipo de descobrirem as senhas e tal. O session eu não consiguiria usar para o que quero. Sempre que troca de pagina o session zera não é? O header("index.php"); ele carrega só as tags header da página né? Tem algo no php que faz o carregamento da pagina toda? Tipo um redirecionamento? O código da pagina de boas vindas está assim: welcome_page.php <?php include 'conexao.php'; if($_SERVER['REQUEST_METHOD'] == "POST") { $sql = "SELECT username FROM accounts WHERE username = '".$_POST['user_name']."' AND password = '".$_POST['password']."' LIMIT 1"; $query = mysql_query($sql) or die(mysql_error()); $resultado = mysql_fetch_assoc($query); if(empty($resultado)) { include 'header.php'; echo " <div class='alert_box'> <p>** Usuário e/ou senha inválidos</p> <p>** Digite usuário e senha corretamente.</p> </div> "; include 'footer.php'; }else { setcookie("usuario_logado", $_POST['user_name'], time()+3600); include 'header.php'; echo " <div class='alert_box'> <p>Olá ".$_POST['user_name']."! Seja bem vindo!</p> <p>Você será redirecionado para nossa loja automaticamente.</p> <p><a id='autored' href='shopping_page.php' style='color:#AAA; font-size:12px;'>Clique aqui caso não queira esperar.</a></p> </div> <script type='application/javascript'> document.onload = redirecionamento(6); </script> "; include 'footer.php'; } } ?> Em vez de setar os cookies aqui, eu pensei em fazer uma pagina intermediária, só pra setar os cookies e depois ir pra welcome_page.php Ou quebrar essa pagina em 2 processos. Primeiro verifico o login. Se OK, seto o cookie, e jogo pra pagina de boas vindas. Provavelmente de certo, mas o processo ficaria bem mais lento eu acho. E como estou fazendo redirecionamento via javascript, mais lento ainda =x. Se é que tem outro jeito. Tentei umas outras ideias aqui. Mas acho que caiu em um laço infinito. =p Que tipo de estrategia seria usada pra esses casos de cookie? Compartilhar este post Link para o post Compartilhar em outros sites
Vini_Aviva 13 Denunciar post Postado Julho 7, 2012 Nunca use COOKIES para criar um sistema de login utilize sempre SESSION. Compartilhar este post Link para o post Compartilhar em outros sites
Mayron Ceccon 5 Denunciar post Postado Julho 7, 2012 $_SESSION é uma boa idéia! Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Julho 7, 2012 tipo session nao acaba se você muda de pagina nao ela acaba se tu fecha a pagina e depois voltar... ja o cookies quando você fecha e voltar permanece logando ate o tempo do cookie acaba... mais prefiro session mais seguro.e acho mais simples.... Compartilhar este post Link para o post Compartilhar em outros sites
e3tadashi 0 Denunciar post Postado Julho 8, 2012 Pow, valeu ai galera. Voh tentar fazer usando sessions então. Os cookies eu utilizo em que situações então? Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Julho 8, 2012 tipo acho que tem como usar os 2 e cookies que eu sei que defini o tempo da sessão tipo ele pode coloca pra lembra os dados na hora que você for logar... Compartilhar este post Link para o post Compartilhar em outros sites
e3tadashi 0 Denunciar post Postado Julho 8, 2012 Hummmm... Tipo aquelas paginas que você abre, e o formulário já vem preenchido né? Só pra confirmar, quando eu faço o codigo: setcookie("usuario_logado", $_POST['user_name'], time()+3600); Eu estou guardando só o usuário né? Ou tem algum jeito de alguém descobrir a senha do cara assim? Porque se não tiver esse risco, usar o cookies me parece ser muito melhor (sou principiante, por favor me convençam se eu estiver errado =p). Não consigo enxergar os riscos de usar os cookies. Alguém me da uma luz ai. Diversos sites eu percebo que quando fecho a pagina, e abro logo em seguida, ainda estou logado. Isso é cookies né? Esse forúm por exemplo, estou logado desde anteontem acho =p hehe... Ou tem alguma outra técnica além dessas duas? Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Julho 8, 2012 vou esplica os cookies sao boa mais quem usa eles a maioria coloca classes para que ele tenhao mais segurança em guarda dados... nao posso dizer se cookies e uma boa ow nao mais uso session e ate agora nao tive dificuldade.. Compartilhar este post Link para o post Compartilhar em outros sites
e3tadashi 0 Denunciar post Postado Julho 8, 2012 Intendi. Acho que quando for algo que precise de mais segurança, seria melhor o session né. Vou praticando com os 2 aqui, por enquanto estou só aprendendo hehe. Muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel_Moraes 11 Denunciar post Postado Julho 8, 2012 Já que foi abordado a questão SESSION ou COOKIE vamos analisar. Session são bem melhores você pode armazenar qualquer coisa, você tambêm pode definir a duração de uma sessão para ser destruida em qualquer momento; Com a função session.gx_maxlifetime O padrão é 1440 = 24 minutos que pode ser configurado no php.ini. Caso quiser 1 hora execute session_start(); //defina uma sessão echo ini_get("session.gc_maxlifetime"); //1440 ini_set("session.gc_maxlifetime","3600"); echo ini_get("session.gc_maxlifetime"); //3600 segundos = 1 hora Por isso defino sessões melhores, pois pode defino seu valor em qualquer formato como (bool, int, double, string, char...) e tabem defino a duração como num cookie . Compartilhar este post Link para o post Compartilhar em outros sites
e3tadashi 0 Denunciar post Postado Julho 10, 2012 hummmm, intendi. Mas então no caso deu querer um sistema de login, em que o cara mesmo fechando a janela, permaneça logado por um tempo. Teria algum método diferente de cookie? Ou algum jeito de tornar o cookie menos perigoso, igual o marcos comentou sobre as classes? Por que eu queria mesmo um sistema que o cara não precise relogar sempre que fecha a janela. Apesar do session ser seguro, não se encaixa para o que eu qria. =s Compartilhar este post Link para o post Compartilhar em outros sites