Ir ao conteúdo
  • Cadastre-se

PHP Como restringir acesso de url para os usuários que já estão logados.


Ir à solução Resolvido por luscas,

Posts recomendados

Eu tenho um sistema de controle hospitalar onde todas as funcionalidades estão restritas apenas para os usuários que fizerem login, porém tenho a opção médico e coordenador, que são redirecionados para suas páginas através do login. Só que o médico consegue acessar a página do coordenador quando modifica a url, portanto, queria a ajuda de vocês para restringir o acesso da url. Funcionando da seguinte forma: quando o médico tentar acessar a página do coordenador permanecer na sua página e o mesmo para o coordenador, quando ele tentar acessar a página do médico, permanecer na sua própria página.

verificar.php:

<?php
if(!isset($_SESSION['codigo'])){
	session_start();
	header("Location: login.php");
}
if (strcmp(basename($_SESSION['codigo']), basename('coordenador.php')) == 0) {
    header("Location: index.php");
}
login.php:
<?php
  include("config.php");
  $msg = 0;
  if(isset($_POST['email'])) {
    $email = $_POST['email'];
    $senha = $_POST['senha'];
    $consulta1 = $MySQLi->query("SELECT * FROM TB_MEDICOS join TB_PLANTOES on MED_PLANT_CODIGO =PLANT_CODIGO where MED_EMAIL = '$email' and MED_SENHA = '$senha'");
    $consulta2 = $MySQLi->query("SELECT * FROM TB_COORDENADORES WHERE COORD_EMAIL = '$email' and COORD_SENHA = '$senha'");
    if($resultado1 = $consulta1->fetch_assoc()){
      $_SESSION['codigo'] = $resultado1['MED_CODIGO'];
      $_SESSION['nome'] = $resultado1['MED_NOME'];
      $_SESSION['dia'] = $resultado1['PLANT_DIA'];
      $_SESSION['tarde'] = $resultado1['PLANT_TARDE'];
      header("Location: medico.php");
    }elseif($resultado2 = $consulta2->fetch_assoc()){
      $_SESSION['codigo'] = $resultado2['COORD_CODIGO'];
      $_SESSION['nome'] = $resultado2['COORD_NOME'];
      header("Location: coordenador.php");
    }
    $msg = 1;
  }
?>
medico.php:

<?php 
include("config.php");
include("verificar.php");
?>
coordenador.php:

<?php 
include("config.php");
include("verificar.php");
?>

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Ao logar crie uma session de identificação,com base no acesso coordenador/medico, depois nas paginas especificas para o mesmo utilize a session para verificar, verificando e constando que a identificação esta correta permita o acesso, caso contrario redirecione para outra pagina.

 

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

@luscas Valeu, cara! Me ajudou bastante! Deu tudo certo.

@luscas você saberia me informar se com php e mysql consigo fazer a seguinte situação?

Eu preciso cadastrar os plantões e nele colocar o nome dos médicos, mas para isso eu teria que usar o código de cada médico no cadastro. Pensei no seguinte: na hora do cadastro aparecer o nome do médico, para quem for fazer o cadastro, e em questão de programação a pessoa estaria selecionando o código do médico.

Por exemplo: o médico Alfonso tem o código nº 1, no cadastro apareceria o nome de Alfonso e na programação eu estaria digitando o código nº 1. Consegue entender? Acha que dá pra fazer? Pode me orientar como fazer?

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

  • Moderador

@MEGATRON1432 Não sei como você está desenvolvendo o sistema, mas é comum, bastante comum, criar uma tabela no banco de dados contendo os dados cadastrais.

Por exemplo:

 

ID Nome           RG         telResidencia  celular 
1  Fulano de tal  8770870870     1             2

Ao desenvolver o formulário de preencher e selecionar o médico.. você pode colocar dentro de um campo select. desta forma:

 

<select name="medico">
   <?php
      include 'conexao.php';
   
     $select = mysqli_query($conexao,"SELECT ID, Nome FROM medico");
  
     while($dados = mysqli_fetch_object($select):
           echo "<option value='$dados->ID'> $dados->Nome </option>";
     endwhile;
</select>           
           
           

Basicamente, você pega do banco de dados o ID dele, e põe no value do select,  e mostra o nome do médico.

Quando selecionar e enviar, o valor que vai ser enviado será o ID do médico.

 

Dessa forma, não há como correr o risco de por exemplo escrever o nome do médico errado, ou escrever com maiúsculo ou minúsculo..

 

PS: para comentar, o campo telResidencia e celular, eu coloquei como se fosse chaves estrangeiras de uma outra tabela separada só para telefones... isso faz parte da 2 NF de banco de dados.. separar dados para não gerar inconsistências.

 

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

@DiF Criei desta forma:

if(isset($_POST['turno1'])){
    $turno1 = $_POST['turno1'];
    $turno2 = $_POST['turno2'];
    $data = $_POST['data'];
    $med = $_POST['med'];
    $consulta = $MySQLi -> query("insert into TB_PLANTOES (PLANT_DIA, PLANT_TARDE, PLANT_DATA, PLANT_MED_CODIGO)
      values ('$turno1', '$turno2', '$data', '$med')");
    $consulta2 = $MySQLi -> query("insert into TB_MEDICOS (MED_NOME) values ('$med')");
    header("Location: lsplantao.php");
  }
<select name="med" class="form-control">
	<?php while ($resultado = $consulta2 -> fetch_assoc()) { ?>
    	<option value="$resultado['MED_CODIGO']"> <?php echo $resultado['MED_NOME']; ?> </option>
	<?php } ?>
</select>

 

 

Só que não deu certo, poderia me falar qual foi o erro?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@MEGATRON1432 Qual é o erro exatamente?

 

Uma coisa que me chamou a atenção é que você está fazendo um insert em uma tabelas de médico contendo o nome além de um insert na tabela de plantões.

No select você coloca no while o fetch errado.

 

O normal é ter uma área de CRUD, onde você faz o cadastro das coisas mais importantes... como médicos, especializações e etc.

 

O select deve fazer uma query de busca na tabela.. exatamente como eu exemplifiquei.

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...