Ir para conteúdo

POWERED BY:

Arquivado

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

testao35

Acessando pagina restrita pela url

Recommended Posts

Olá tudo bein?

To com um probleminha aqui... To com um sistema de loguin que ta funcionando bacana, vou descrever como ta o sistema.

 

Aréa de loguin: loguin.php

Aréa do usuario: painel.php

 

O meu problema é o seguinte, se eu tiver na pagina loguin.php e for na url e digitar painel.php ele acessa, gostaria de saber alguma forma de permitir acesso apenas para os usuariarios que estiverem logado, alguma dica, sugestão ?

 

Att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

você de alguma maneira deve usar $_SESSION ou $_COOKIE, para validar o usuário logado coreto

usa um if para compara o session com o valor no banco caso seja falso ele volta para a pagina de login

 

exemplo:

if($_SESSION['id_usuario'] == $id_usuario_banco){

       header("Location: loguin.php");

}

Qualquer duvida estámos ai

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, não é loguin, é login. Um simples erro desse pode reduzir a credibilidade de seu sistema :thumbsup:

 

 

Sobre a restrição de acesso, normalmente se coloca uma restrição em todo script que só deve ser acessado por usuários logados. Por exemplo, se estiver usando session, pode fazer o seguinte: crie um arquivo verifica.php com este conteúdo:

 

 

<?php
if ( ! isset( $_SESSION ) || ! isset( $_SESSION['logado'] ) || $_SESSION['logado'] != true )
{
     header( 'Location: login.php' );
}

 

depois, em cada página restrita, basta dar um require no topo

 

<?php
require_once 'verifica.php';
 
// restante do código

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Primeiro, não é loguin, é login. Um simples erro desse pode reduzir a credibilidade de seu sistema :thumbsup:

 

 

Sobre a restrição de acesso, normalmente se coloca uma restrição em todo script que só deve ser acessado por usuários logados. Por exemplo, se estiver usando session, pode fazer o seguinte: crie um arquivo verifica.php com este conteúdo:

<?php
if ( ! isset( $_SESSION ) || ! isset( $_SESSION['logado'] ) || $_SESSION['logado'] != true )
{
     header( 'Location: login.php' );
}

depois, em cada página restrita, basta dar um require no topo

<?php
require_once 'verifica.php';
 
// restante do código

eu fiz dessa forma, porem quando eu faço o login ele vota pro login.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifica.php

<?php
if ( ! isset( $_SESSION ) || ! isset( $_SESSION['logado'] ) || $_SESSION['logado'] != true )
{
     header( 'Location: login.php' );
}

painel.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Painel Admninistrativo</title>
	<link rel="shortcut icon" href="img/favicon.ico"/>
	<link type="text/css" href="cssadm/styleadm.css"  rel="stylesheet"/>
</head>
<body>
<div id="interface" style="display: block;" >	
	<div id="menufix">
		<h2>Painel Administrativo</h2>
		<div class="banner">   
           <img src="../img/logo1.png" width="182" height="114" />     
		 </div>	
	</div>
       <div id="submenu">
<p>
	<?php
require_once 'verifica.php';
session_start();
echo "Bem vindo: ".$_SESSION['nome'];
?></p>
       </div>
		
	<div id="menu">
		<ul>
			<li><a href="#">Monitorar seu pet</a></li>
			<li><a href="#">Carteira de vacinação</a></li>
			<li><a href="">Agendar serviços</a></li>
			<li><a href="logout.php">Sair</a></li>
		</ul>
	</div>
	<div id="conteudo" style="padding-top: 0%;"> 	
	  <div id="dentro_conteudo">
            <iframe width="80%" marginheight="0" marginwidth="0" frameborder="0" src="menu.php">
            </iframe>
         </div>
	</div>
	
	<div id="rodape">
		
	</div>
</div>

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. session_start() deve ser sempre a primeira coisa do script. Inclusive antes do require de verifica.php. Não pode haver saídas HTML antes dessa função

 

2. Onde processa o login? Onde verifica usuário/senha e cria a variável $_SESSION['logado']?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta ai

<html>
<head>
<title>Untitled</title>
</head>
<body>
<?php
require_once("conecta.php");
$usuario=$_POST["txtUser"];
$senha=$_POST["txtSenha"];
$sql = mysql_query("
SELECT U.username, U.nome FROM usuarios U WHERE U.username = '$usuario' AND
U.senha = '$senha'") or die("ERRO NO COMANDO SQL");
$row = mysql_num_rows($sql);
if (empty($_POST['txtUser']) && ($_POST['txtSenha'])){
echo "<script> location.href='login.php'; alert('Vazio!') ;</script>";
}elseif ($row == 1){
$id = mysql_result($sql, 0, "username");
$nome = mysql_result($sql, 0, "nome");
session_start();
$_SESSION[id] = $id;
$_SESSION[nome] = $nome;
Header("Location: painel.php");
}else{
echo "<script> location.href='login.php'; alert('Usuário ou senha incorretos!') ;</script>";
}
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você criou $_SESSION['id'] e $_SESSION'nome'], mas não criou $_SESSION['logado'], que você usa na verifica.php. Por isso sempre redireciona para login

 

 

PS: use sempre aspas em strings: $_SESSION['id'] em vez de $_SESSION[id]

 

PPS: funções mysql_* estão obsoletas. Use mysqli_* ou PDO (recomendo PDO)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz o que você falou, porém continua o mesmo problema, ele volta pro login.php

 

 

tentei assim

$_SESSION['id'] = $id;
$_SESSION['nome'] = $nome;
$_SESSION['logado'] =$logado

assim

$_SESSION['id'] = $id;
$_SESSION['nome'] = $nome;
$_SESSION['logado'];

To vendo que é um erro besta, que to apanhando p carai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora ele voltou a fazer o login, só que se eu for pelo link ele acessa também...

Se o usuário estiver logado, poderá acessar diretamente. Está correto.

Você quer bloquear acesso direto mesmo se ele estiver logado?

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.