Ir ao conteúdo
  • Cadastre-se

Bloquear acesso pela url na minha página restrita


Posts recomendados

Bom dia, sou novato em PHP e estou tentando bloquear o acesso as minhas paginas restritas.

 

tenho minha página login, que irá enviar os dados pelo método POST para o valida.php que irá direcionar para outra página caso os dados esteja correto, mas ao copiar o endereço da pagina restrita diretamente na barra de endereço eu consigo logar.

 

O código abaixo é o valida.php (trecho de código de vídeo aulas CELKE)

 

<?php
    session_start(); 
        //Incluindo a conexão com banco de dados   
    include_once("conexao.php");    
    //O campo usuário e senha preenchido entra no if para validar
    if((isset($_POST['email'])) && (isset($_POST['senha']))){
        $usuario = mysqli_real_escape_string($conn, $_POST['email']); //Escapar de caracteres especiais, como aspas, prevenindo SQL injection
        $senha = mysqli_real_escape_string($conn, $_POST['senha']);
        $senha = md5($senha);
            
        //Buscar na tabela usuario o usuário que corresponde com os dados digitado no formulário
        $result_usuario = "SELECT * FROM usuarios WHERE email = '$usuario' && senha = '$senha' LIMIT 1";
        $resultado_usuario = mysqli_query($conn, $result_usuario);
        $resultado = mysqli_fetch_assoc($resultado_usuario);
        
        //Encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
        if(isset($resultado)){
            $_SESSION['usuarioId'] = $resultado['id'];
            $_SESSION['usuarioNome'] = $resultado['nome'];
            $_SESSION['usuarioNiveisAcessoId'] = $resultado['niveis_acesso_id'];
            $_SESSION['usuarioEmail'] = $resultado['email'];
            if($_SESSION['usuarioNiveisAcessoId'] == "1"){
                header("Location: administrativo.php");
            }elseif($_SESSION['usuarioNiveisAcessoId'] == "2"){
                header("Location: colaborador.php");
            }else{
                header("Location: cliente.php");
            }
        //Não foi encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
        //redireciona o usuario para a página de login
        }else{    
            //Váriavel global recebendo a mensagem de erro
            $_SESSION['loginErro'] = "Usuário ou senha Inválido";
            header("Location: index.php");
        }
    //O campo usuário e senha não preenchido entra no else e redireciona o usuário para a página de login
    }else{
        $_SESSION['loginErro'] = "Usuário ou senha inválido";
        header("Location: index.php");
    }
?>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Felipe Gomes DA Silva Na verdade não é no valida.php que você tem que verificar a parte da sessão, mas sim na página restrita.

 

Por exemplo:

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");

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

Outra coisa, no seu valida.php, podes alterar  a linha $_SESSION['usuarioEmail'] = $resultado['email'];

para :  $_SESSION['usuarioEmail'] = $usuario;

 

Onde o $usuario é a variável que recebe o login digitado.

 

Se quiser posso disponibilizar um modelo de como eu uso o sistema de login:

Valida.php:

<?php

session_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 SUA TABELA 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;
		
        //adiciona na sessão o login
        $_SESSION["email"] = $login;
		
		//aqui é um sistema de log de logins. insere em outra tabela quem, quando e que ação o usuário fez no sistema
		$data = date('Y-m-d');
		$log = "INSERT INTO logs(idusuario, idAcao, data, hora) VALUES($coduser, '1', '$data', curtime())";
		$dados2 = mysqli_query($conecta,$log);
		
		//redireciona para a página restrita
		header ("Location: Sua-pagina_restrita.php");
		
	}
	
 	 mysqli_close($conecta);

Na página restrita coloca-se no topo de tudo:

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");

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

 

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...