Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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,
Você deve usar o que o Thiago - Bulfaitelo disse acima mas se não souber usar aprender com um dos links seguintes:
https://www.codigofonte.net/dicas/php/124_veja-como-usar-sessions-no-php
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
>
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
eu fiz dessa forma, porem quando eu faço o login ele vota pro login.php
então fez algo errado.
mostre o trecho de código
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>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']?
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>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)
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.
Você faz o if verificando se $_SESSION['logado'] é igual a true, certo? Logo, tem criar $_SESSION['logado'] com o valor true:
$_SESSION['logado'] = true;Agora ele voltou a fazer o login, só que se eu for pelo link ele acessa também...
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?
Consegui resolver, era pq o meu logout.php não estava destruindo a $_SESSION['LOGADO'], obrigado pela ajuda rs
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:
Qualquer duvida estámos ai
Abraço