Ir para conteúdo

POWERED BY:

Arquivado

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

Robson Barros da Rocha

Restringir acesso em página com PHP

Recommended Posts

Olá amigos!

 

Novamente estou de volta com minha dúvida no PHP. Desta vez gostaria de saber como criar uma seção que bloqueia uma página para visitantes. Por exemplo, eu criei um sistema de Login que funciona normalmente com o mysql e tal, porém, a página index.php aparece para qualquer um.

 

Ou seja:

Fazendo ou não o Login a página index.php aparece, e eu gostaria que a mesma fosse visível somente após o login, mas não consigo tal proeza.

 

Alguém saberia algum PHP que faça tal trabalho?

 

Atenciosamente,

ROCHA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Só que o outro esquema não funciona. :( Na verdade, tenho sub-pastas com um pequeno sistema de notícias que funciona com LOGIN. Só é possível acessá-lo se fizer o login. Copiei o PHP que impede a visualização, mas não funciona:

 

<?php
if($_SESSION["admin"]=="on"){ ?>

CONTEÚDO PROTEGIDO

<?php } ?>

 

Se observar, o trecho "admin" no código diz que somente os Admins podem ver, e isso funciona. Contudo, se eu fizer isso no index, os demais grupos que eu fizer no mysql não vão conseguir ver a página depois do login.

 

Atenciosamente,

ROCHA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, é uma questão de lógica nada mais, você tem que saber manipular um jogo de condicional IFs, além de nomear corretamente suas sessões para que você saiba o que está fazendo.

 

 

 

 

<?php
if($_SESSION["logado"]=="on"){ ?>

CONTEÚDO PROTEGIDO

<?php }else{ print 'faça o login para entrar'; } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Acho que compreendi. Mas através do PHP que apresentei acima em minha mensagem, é possível adicionar duas seções? Tipo uma seção para ADMIN e outra para outro grupo ou nome? Como está no código, "admin" é um grupo e funciona. Se eu mudar para "logar", ele não funciona. Teria como colocar "admin" mais "mod"?

 

Atenciosamente,

ROCHA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso você cria uma sessão para nivel de usuario, seguindo o exemplo do Alaerte só que com nivel de acesso:

 

<?php
if($_SESSION["logado"]=="on"){ 

  if($_SESSION['nivel'] == 'ADMIN'){
    //CONTEDUO REFERENTE AO ADMINISTRADOR
  }

  if($_SESSION['nivel'] == 'MOD'){
    //CONTEDUO REFERENTE AO MODERADOR
  }

}else{ print 'faça o login para entrar'; } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ricardo!

 

Não entendi seu código Ricardo. Se eu substituir o valor entre as aspas "logado" por "admin" e mudar os atributos dentro das aspas dos grupos abaixo para os grupos que eu desejo, então terei o que espero? Eu fiz exatamente assim e não funcionou:

<?php
if($_SESSION["logado"]=="on"){ 

  if($_SESSION['admin'] == 'on'){
    //CONTEDUO REFERENTE AO ADMINISTRADOR
  }

  if($_SESSION['mod'] == 'on'){
    //CONTEDUO REFERENTE AO MODERADOR
  }

}else{ print 'faça o login para entrar'; } ?>

 

O código que Gabriel passou funciona só quando mudo o "logado" para "admin".

 

Atenciosamente,

ROCHA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, no seu banco de dados você tem o nivel admin correto ? cujo valor é ON. você deve adicionar os demais níveis com o valor ON também, e fazer a sua regra como disse o Ricardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Mas é isso mesmo Gabriel, se eu adiciono o código do Ricardo substituindo-o para o que está me aconselhando, recebo a mensagem de "faça login para acessar" mesmo já efetuando o login, e quando adiciono seu código mudando o "logado" para "admin" ou "mod" funciona. :S

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Ainda não foi resolvido. Quer dizer, eu agradeço pela colaboração em me ajudar, só que através do código do Ricardo, se faço tal procedimento, a mensagem aparece como esperado, contudo, se eu logar ou não, essa mesma mensagem aparece. Você aceita que eu mostre a página?

 

EDIT: Aqui está a página com o código:

http://servicos.xp3.biz/adv/

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Login.htm

<html>

<head>
<title>Login</title>
<link rel="stylesheet" type="text/css" href="../estilo.css">
</head>

<body>

<form method="POST" action="logar.php">
<p> </p>
<p> </p>
<p> </p>
<center><table border="0" cellpadding="0" cellspacing="0" width="16" height="43">
  <tr>
    <td width="14" bgcolor="#C0C0C0" colspan="2" height="18">
      <b><font face="Arial" size="2">::Administração::</font></b>
    </td>
  </tr>
  <tr>
    <td width="1" bgcolor="#C0C0C0" height="25"><font face="Arial" size="2">Login:  
      </font></td>
    <td width="80" bgcolor="#C0C0C0" height="25"><font face="Arial" size="2"><input type="text" name="login" size="6" style="font-family: arial; font-size: 10 pt; border: 1 solid #000000"></font></td>
  </tr>
  <tr>
    <td width="1" bgcolor="#C0C0C0" height="25"><font face="Arial" size="2">Senha:</font></td>
    <td width="80" bgcolor="#C0C0C0" height="25"><font face="Arial" size="2"><input type="password" name="senha" size="6" style="font-family: arial; font-size: 10 pt; border: 1 solid #000000"></font></td>
  </tr>
  <tr>
    <td width="1" bgcolor="#C0C0C0" height="25"><font face="Arial" size="2"><input type="submit" value="Logar" style="font-family: arial; font-size: 10 pt; border: 1 solid #000000"></font></td>
    <td width="80" bgcolor="#C0C0C0" height="25"> </td>
  </tr>
</table>
</center>

</form>

<p> </p>
<p> </p>
<p align="center"><font face="Arial" size="1">Produzido por: <a href="http://www.clenisson.guisamp.com" target="_blank">Clenisson
Calaça</a>.</font></p>

</body>

</html>

 

Logar.php

<?
session_start();
include("../conexao.php");
$login = $_POST["login"];
$senha = $_POST["senha"];
$sql   = "select * from news_mods where login='$login' AND senha='$senha'";
$query = mysql_query($sql);
$nr    = mysql_num_rows($query);
if($nr>0){
$_SESSION["mod"] = "on";
echo "<script>
location.href='../'
</script>
";
}
else {
echo "<script>
location.href='login.htm'
</script>
";
}
?>

 

Correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Não está correto, pois, se você possui esses valores de cada nível na base de dados, fica inviável você definir esses valores na variável sessão.

 

Pois, quando você quiser desativar um usuário, como faria ?! entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ao invés de da um echo com javascript você poderia usar o header('location: ../'); e também não ficaria colocando if dentro de if, separe-os tipo.

 

<?php
      if ($_SESSION['logado'] != "ON"){ 
          echo "Página restrita, logue-se para acessa-la."; 
          header('location: ../');
          exit(); 
      } 
      
      if ($_SESSION['nivel'] == "ADMIN"){ 
          //include('conteudoadmin.php'); 
?> 
Conteúdo ADMIN 
<?php 
      } elseif ($_SESSION['nivel'] == "MOD"){ 
          //include('conteudomod.php');
?>
CONTEÚDO MOD
<?php }?>

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.