Ir ao conteúdo
  • Cadastre-se

Como redirecionar o usuario que nao estiver logado.


Ir à solução Resolvido por DiF,

Posts recomendados

@dif abri este tópico porque acho que o outro ja estava fora de contexto sobre vários assuntos.

 

Queria redirecionar o usuario que nao estiver logado, por exemplo tenho ja um codigo que faz o usuario logar e um codigo falho por que foi feito por mim,

se o cara quiser entrar em uma pagina. por exemplo www.site.com/site.php ele vai conseguir . digitando no barra de endereço. queria que a pagina redirecionasse ele pra o login.php. 

 

 

 

Atualização: Consegui Usando sessões no PHP

<meta charset="utf-8"><?phpsession_start();$usuario = $_POST['usuario'];$senha = $_POST['senha'];$conexao = mysqli_connect('localhost','root','','cadastro');$consulta = mysqli_query($conexao, "SELECT * FROM usuarios WHERE usuario='$usuario' AND senha='$senha'") or die(mysqli_error());$retorno = mysqli_num_rows($consulta);if($retorno == 0){echo "Usuario ou Senha Incorretos";}else{$_SESSION['usuario'] = $usuario;$_SESSION['senha'] = $senha;echo"<script>alert('Bem-Vindo ao Site.'); location.href='pagina1.php';</script>";}?>
<meta charset="utf-8"><?phpsession_start();if((isset($_SESSION['usuario']) == false) and (isset($_SESSION['senha']) == false)){	echo "USUARIO NAO LOGADO";}else{echo "usuario logado";}?>
Link para o comentário
Compartilhar em outros sites

Eu fiz assim:

<?phpinclude("seguranca.php"); // Onde as variáveis de sessão são definidas assim que o usuário efetua loginif (!(isset($_SESSION['usuarioLogin']) and isset($_SESSION['usuarioSenha']))) {    header("Location: index.php");}

Você está guardando as senhas do BD sem criptografia ou esse seu código foi apenas um exemplo?

Link para o comentário
Compartilhar em outros sites

  • Moderador
  • Solução

@FabianoS

 

Geralmente eu faço desta maneira(pode variar algumas coisas):

 

recebeDados.php

<?phpsession_start();		$login = $_POST["email"];	$senha = $_POST["senha"];		$loginSeguro = addslashes($login);	$senhaSegura = addslashes($senha);		if (empty($login) or empty($senha)) {    echo "<script>          alert('Preencha todos os campos');          history.go(-1);          </script>";    exit;      }			include 'includes/conexao.php';		$sql = "SELECT * FROM usuario WHERE email ='$loginSeguro' AND DES_DECRYPT(senha) = '$senhaSegura' ";	$dados = mysqli_query($conecta, $sql);	$num = mysqli_num_rows($dados);		if ($num == 0){		echo "<script>				alert('Usuario ou senha Incorreta');				history.go(-1);			  </script>";		exit;	} else {		$linha = mysqli_fetch_object($dados);		$coduser = $linha->idUsuario;				$_SESSION["codusuario"] = $coduser;		$_SESSION["email"] = $login;						$data = date('Y-m-d');		$log = "INSERT INTO logs(idusuario, idAcao, data, hora) VALUES($coduser, '1', '$data', curtime())";		$dados2 = mysqli_query($conecta,$log);						header ("Location: GeFin.php");			}	 	 mysqli_close($conecta);

Resumindo, abro a sessão.. 

Recupero os dados do formulário... Eu costumo utilizar o próprio e-mail da pessoa como login.. pois é mais provável que ela não esqueça.

Testo as variáveis .. caso estiverem vazias.. mensagem de erro em um alert.

Incluo a conexão, seleciono o e-mail e a senha descriptografada do banco de dados

Testo se tem contagem de linhas..  se igual a zero, mensagem de erro.

Senão, aplico um fetch na variavel da consulta
Coloco em uma variável o valor do campo ID
Atribuo a uma variável de sessão o valor do campo ID
Atribuo em uma variável de sessão o e-mail usado como login.
 
Logo após, coloco em uma variável a data atual
Crio uma variável para inserir no banco de dados na tabela de logs o ID de quem acessou, o ID da ação(logar, deslogar, apagar, cadastrar), a data, e a hora.
 
No fim redireciono para o arquivo gefin.php que seria a página de logados.
E por ultimo, fecho a conexão.
 
Depois no arquivo gefin.php eu testo se o usuário está logado ou não assim:
<?phpsession_start();setcookie("ck_authorized", "true", 0, "/");if(!isset($_SESSION["email"])):    header("location: index.php");else:    $login = $_SESSION["email"];endif;    ?>

ps: Isso tem que ficar antes de tudo acima do <doctype> e <html>

 

Entenda o código:

Abre a sessão

Seta um cookie para autorizar a entrada

Testa com um IF se a sessão do login NÂO está vazia.

Se estiver vazia, redireciona para o index.php cujo arquivo do formulário do login.

Se não estiver fazia, Atribui em uma variável  a sessão.

Isso serve se quiser mostrar depois o lance do: " olá fulano, sua última visita foi  no dia 08/09/15"

 

Bem.. isso sempre funcionou bem para mim

 

E o logout eu faço assim:

<?php	session_start();	include 'includes/conexao.php';		$idUsuario = $_SESSION["codusuario"];		$_SESSION = array();		if(session_destroy()){		$data = date("Y-m-d");		$insere = "INSERT INTO logs(idusuario, idAcao, data, hora) VALUES($idUsuario, '2', '$data', curtime())";		$dados = mysql_query($insere);	}			header("location: index.php");?>	

Inicio a sessão

incluo o a conexão
 
atribuo em uma variável a sessão que contem o ID do usuário
Crio uma variável de sessão que é atribuida a um array vazio.
Depois testo SE sessio_destroy.. ou seja, se destrui a sessão(fiz logout)
Cria a variável da data atual, uma variável que insere na tabela de logs o ID do usuário, o id da ação(está se deslogando), a data e a hora.
e por fim redireciona para o index.php .. que é onde está o formulário de login.
 
depois disso... pode tentar entrar na página restrita.. que não vai conseguir.. sempre será redirecionado para a entrada.. forçando a entrar com o login e senha de novo.. para ter uma nova sessão.
 
Fica as dicas..  Podes incrementar esse meu código para acrescentar controles de níveis de acesso....  aí fica a critério da sua criatividade. :D
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Bom não e à toa que aprendi com você meu código esta quase igual só no gefin.php que esta assim o meu.
 

if(!(isset($_SESSION['usuario']) == true) and (!isset($_SESSION['senha']) == true)){echo "<script>alert('voce nao esta Logado'); location.href='acesso.php';</script>";}else{}

Só vou aprender usar as datas e não usei cookies ainda.

 

O único defeito do meu código e esse else{} porque vou ter que colocar  o código html em um echo""; para exibir porque se eu colocar fora ele vai voltar pra pagina mais vai dar um vulto do código. 

 

e se deixar dentro se eu precisar usar php la dentro ai me ferro.

Link para o comentário
Compartilhar em outros sites

@FabianoS

 

Tenta fazer do meu jeito que não precisa por em um "else"..

 

Não precisa aprender agora sobre o cookie, só coloca aquele trecho na sua página restrita bem no topo.. acima do código html... que não tem erro.

Sim beleza , mais assim esse

if(!isset($_SESSION["email"])):    header("location: index.php");else:    $login = $_SESSION["email"];endif;    ?>

se a session=email for fazia redireciona e se nao for ele vai colocar o usuario na sessão?

Link para o comentário
Compartilhar em outros sites

@FabianoS

 

Sim.  pensa assim:

 

Se o cara não ta logado, volta pro lugar formulário  de login.

Se ele está logado, coloca a sessão em uma variável.

 

Esse email, é só por que eu uso o e-mail para logar... nas poderias trocar um um login qualquer.

 

Não sim, mais se você ja colocou a sessão em um variavel no recebeDados.php porque tem que colocar de novo ?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@FabianoS

 

Porque a variável de sessão contida em recebeDados.php  é a global.  Sem ela, não poderíamos acessar a a variável.

Além disso, tem uma diferença entre as duas.. a posição.

 

No recebeDados.php:

$_SESSION["email"] = $login;

E na página restrita:

$login = $_SESSION["email"];

No recebeDados.php, estou criando a variável de sessão global e colocando em uma variável. 

Na página restrita estou atribuindo uma variável local à variável de sessão.

Esta segunda é só usada para mostrar em tela o o e-mail de quem está logado.

Algo igual aqui no fórum lá no canto direito, antes do sair.. tem seu nick certo?

aquilo é uma variável que contém como valor a variável de sessão que contém o nick.

 

No meu exemplo é simples,,  mas se quisesse trazer por exemplo o nome da pessoa além do e-mail... para dar um tipo "bem vindo fulano de tal"   aí no recebe dados.. tu faz a mesma coisa.. resgata o nome do banco,, coloca em uma variável de sessão.  e ai na página restrita .. tu resgata o valor da variável de sessão do nome e coloca numa variável.. e imprime com echo.. e por aí vai.

 

Ainda tem outra coisa que podes fazer ali dentro do else, podes fazer um update set na tabela de logs, para registrar sempre a ultima hora logada.

 

Falando nisso, até já deixo essa tarefa pra você.

 

Sugestão:

 

 crie uma tabela chamada logs que receba a data, hora e ID do usuário, se quiser ir mais a fundo,  crie uma tabela chamada acoes que recebe o nome das ações que serão executadas no seu sistema... como "Login", "Logout","apagou","editou".. e por ai vai.

 

a partir daí implemente o código de forma que sempre que efetuar uma ação, faça um update set na tabela de logs

 

E depois crie um layout que mostre em tela todas as ações efetuadas.. pode ser em tabela.. lista não ordenada... Isso serviria como um controle de ações dos usuários,, monitorar ações e etc podes gravar tudo no logs..  endereço de ip... pais.. cidade... endereço... rsrs praticamente tudo que localize alguém..  é uma medida de segurança!

 

Bem isso foi um exercício que meu professor me passou enquanto cursava a faculdade.

Parece ser difícil.. mas não. o básico você já sabe!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!