Ir ao conteúdo
  • Cadastre-se
Felipe Gomes DA Silva

Bloquear acesso pela url na minha página restrita

Recommended Posts

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");
    }
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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;
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×