Ir para conteúdo

POWERED BY:

Arquivado

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

e3tadashi

Estou logado?

Recommended Posts

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

<?

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

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

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

É 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

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

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

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

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

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

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

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

×

Informação importante

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