Ir ao conteúdo
  • Cadastre-se

PHP Como impedir acesso direto pela url em php


Posts recomendados

Queria saber como faço para impedir acesso direto pelo url de arquivos php, pois estou desenvolvendo um sistema como trabalho de facul, mas eu consigo acessar qualquer pagina php somente digitando a url sem ter feito login, como impedir isso, fazendo com que somente logado o usuario possa entrar, e se ele tentar entrar no link redirecionar ele pro login novamente. Vi em alguns tópicos falando como, porém tem q ficar usando include em todas as paginas, e aqui, são muitas, existe outra maneira. Segue as minhas duas paginas que fiz.

 

Autenticacao.php

<html lang="pt-br">
<head>
	<meta charset="UTF-8" />
 	<title></title>
  	<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
	<link rel="stylesheet" type="text/css" href="css/estilo.css" >
	<link rel="stylesheet" type="text/css" href="css/autenticacao.css">

</head>
<body>
<div class="loginbox">
	<img src="imagens/user.png" class="avatar">
	<script  type="text/javascript">
		function loginsucessfully(){ //função que controla o tempo de espera de redirecionamento
			setTimeout("window.location = 'painel.php'", 4000);
		}

		function loginfailed(){
			setTimeout("window.location = 'index.html'", 4000);
		}
	</script>


<?php

require ("conexao.php");


if(isset($_POST['login']) && isset($_POST['senha'])){
	$login = $_POST ['login'];
	$senha = $_POST ['senha'];
}

$sql = mysqli_query($conexao,"SELECT * FROM usuarios WHERE login = '$login' and senha = '$senha'") or die (mysqli_error());
$row = mysqli_num_rows($sql);
?>

<?php
if ($row == 1) {

	while($percorrer = mysqli_fetch_array($sql)){
		$nivel = $percorrer['nivel'];
		$nome = $percorrer['nome'];

		session_start();

		if($nivel == 'adm') {
			$_SESSION['adm'] = $nome;
		}
		else if ($nivel == 'tec') {
			$_SESSION['tec'] = $nome;
		}
		else {
			$_SESSION['comum'] = $nome;
		}
	}

	echo "<br><br><center><span class='foco-sucesso'>Efetuando Login!</span><br><br> Aguarde um instante.</center>";
	echo "<script>loginsucessfully()</script>";
	
} else {
	echo "<br><br><center><span class='foco-erro'>Dados inválidos!</span><br><br>Aguarde um instante e tente novamente.</center>";
	echo "<script>loginfailed()</script>";
}
echo ' <br><center><div class="loader"></div></center>';
?>

</div>
</body>
</html>

painel.php

 

<html lang="pt-br">
<head>
 	<meta charset="UTF-8" />
 	<title></title>
 	<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
  	<link rel="stylesheet" type="text/css" href="css/estilo.css" >
	<link rel="stylesheet" type="text/css" href="css/autenticacao.css">
</head>
<body>

<?php

	require ("conexao.php");

	session_start();


	if(isset($_SESSION['adm'])) {
		header("Location: ./Administrador/home.php"); //Faz o redirecionamento para a pagina desejada de acordo com o perfil.

	} else if (isset($_SESSION['tec'])) {
		header("Location: ./Tecnico/home.php"); //Faz o redirecionamento para a pagina desejada de acordo com o perfil.

	} else {
		header("Location: ./Comum/home.php"); ///Faz o redirecionamento para a pagina desejada de acordo com o perfil.
	}

?>
	<a href="logout.php">Sair</a>  <!--Link que ao usuario clikar em sair ele faz logout-->
</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

Bom dia Sr @Rickkdinho ,,

 

Uma das firmas seguras é sim colocar o include,, pois,, assim você evita de ter que inserir o mesmo código de verificação em diversas páginas.

 

Um dos modos de baixa autenticação é o session_start : https://www.php.net/manual/pt_BR/function.session-start.php e setcookie https://www.php.net/manual/en/function.setcookie.php

 

 

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

  • Moderador

@Rickkdinho Tem um exemplo de sistema de login com acesso restringido aqui no fórum:

 

A parte que mais interessa é:

 

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

/*testa se a sessão tem valor.
  Refere-se a linha lá no arquivo de login onde
  é inserido o login na sessão. */
if(!isset($_SESSION["login"])):
    header("location: index.php");
else:
    $login = $_SESSION["login"];
endif;    
?>

Exatamente como o colega disse acima. usar o session e cookie

Esse parte você deve colocar em cada página PHP que quer restringir o acesso.  Sugiro você entrar no link acima e ler todo o post onde explico melhor.

 

Com o código acima e a parte no outro tópico que postei acima, sempre que deslogar, e tentar acessar outra página ele vai te mandar para a página de login.

Fora isso, ainda você deve ter em mente, que se você quiser impedir as pessoas de acessar arquivos no servidor, você precisa usar um .htaccess com algumas regras.

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

  • Moderador

@Rickkdinho Sim...  não sei se vai funcionar da forma que testa o login ali... mas se usar ajax, é mais fácil de controlar.

 

De qualquer forma testa isso:

 

if(!isset($_SESSION["login"])):
   echo "<script>
              alert("faça o login");
         </script>";     

    header("location: index.php");
else:
    $login = $_SESSION["login"];
endif;    

Basicamente, o que deveria acontecer ali é:  se não fez o login,  mostra o alert. Quando clicar em OK, vai ser redirecionado ao index.php.

 

Como eu disse anteriormente, isso é o que deveria acontecer. Se acontece na prática, eu não sei. Mas sei que com ajax é melhor.

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...