Ir para conteúdo
  • 0
haoasakura

Bloquear e Desbloquear páginas para users

Pergunta

Pessoal tudo bem??

Sou novo aqui prazer em conhecer vocês!

 

To fazendo um site de ensino de idiomas,

e queria eu mesmo criar o perfil de cada aluno.

Até ai tudo bem eu crio o perfil de cada um e dou o login e senha para eles usarem.

Porém tem páginas que não quero que eles acessem.

Quero que certas páginas sejam bloqueadas a acesso para os usuários.

 

Por exemplo o que comprou o curso de inglês não acessa o link da página de japonês e assim vai, apenas se tiver permissão

Tava pensando em como fazer isso, alguém tem uma idea?

 

As páginas de estudo serão totalmente em HTML e CSS feitas na unha,

mas quero que apenas usuários logados possam acessar,

e quero que apenas um determinado usuário, que eu autorizar acesse uma determinada pagina

por exemplo

o aluno Ruan vai acessar www.idiomas.com.br/ingles.html
Permissao concebida

 

Tem como fazer isso com php? nem sei por onde começa xD 

 

Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 resposta a esta questão

Recommended Posts

  • 0

Porqur não usar a sua estrutura toda com php?

 

Uma ideia de permissão de página 

 

Faz uma tabela modulos

 

create table if not exists `modulos`(
`id` int(11) not null AUTO_INCREMENT,
`nome` varchar(255) not null,
`url` varchar(255) not ,
`icone` varchar(255) not null,
`status` int(11) not null,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

INSERT INTO `modulos` (`id`, `nome`, `url`, `icone`, `status`) VALUES
(1, 'Português', 'portugues.php', 'portugues.png', '1'),
(2, 'English', 'english.php', 'english.png', '1'),
(3, 'Espanhol', 'spanish.php', 'spanish.png', '1'),
(1, 'Japonês, 'japones.php', 'japones.png', '0');

Depois a tabela usuários 

create table if not exists `usuarios`(
`id` int(11) not null AUTO_INCREMENT,
`nome` varchar(255) not null,
`login` varchar(255) not null,
`senha` varchar(255) not null,
`email` varchar(255) not null,
`nivel` int(2) not null,
`permissao` varchar(500) not null,
`status` int(11) not null,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

No arquivo usuarios.php

 

<?php

required_once('include/function.php');
required_once('controller/usuarios.php');
?>
<form>
<label>Nivel do Usuário</label>
<select class="form-control" name="nivel" required>
  <option value="1">WebMaster</option>
  <option value="2">Administrador</option>
  <option value="3">Usuários</option>
</select>

<label>Permissão de acesso</label>
<select class="form-control select2" name="permissao[]" multiple="multiple" data-placeholder="Da acesso a certo módulos">
  <?php $Query = DBREAD('modulos','nome, url'); if (is_array($Query)) { foreach ($Query as $Modulos) { ?>
  <option value="<?= $Modulos['url']; ?>"><?= $Modulos['nome']; ?></option>
  <?php }} ?>
</select>

<label>Status</label>
<select class="form-control" name="status">
  <option value="1">Ativo</option>
  <option value="2">Inativo</option>
</select>
  </form>

No editar usuários 

 

<?php
required_once('include/function.php');
required_once('controller/usuarios.php');
$Query = DBREAD('usuarios','*',"WHERE id ='{$id}'"); foreach ($Query as $usuarios) { ?>
<form>
<label>Nivel do Usuário</label>
<select class="form-control" name="nivel" required>
  <option value="1" <?php if($usuarios['nivel'] == '1') { echo "selected"; } ?>>WebMaster</option>
  <option value="2" <?php if($usuarios['nivel'] == '2') { echo "selected"; } ?>>Administrador</option>
  <option value="3" <?php if($usuarios['nivel'] == '1') { echo "selected"; } ?> >Usuários</option>
</select>

<label>Permissão de acesso</label>
<select class="form-control select2" name="permissao[]" multiple="multiple" data-placeholder="Da acesso a certo módulos">
  <?php $Query = DBREAD('modulos','nome, url'); if (is_array($Query)) { foreach ($Query as $Modulos) { 
if(strpos($usuarios['permissao'], $Modulos['url']) !== false) { ?>
  <option selected value="<?= $Modulos['url']; ?>"><?= $Modulos['nome']; ?></option>
  <?php }else{ ?>
  <option value="<?= $Modulos['url']; ?>"><?= $Modulos['nome']; ?></option>
  <?php }}} ?>
</select>

<label>Status</label>
<select class="form-control" name="status">
  <option value="1">Ativo</option>
  <option value="2">Inativo</option>
</select>
</form>
<?php } ?>

 

No arquivo controller/usuarios.php 

 

Fazemos assim Adicionar e Atualizar 

 

<?php
//Adicionar 
if (isset($_GET['Adicionar'])) {
    if(isset($_POST['permissao'])) {
       $Permissao = implode(', ', array_values('$_POST['permissao']));
}else{
$Permissao = false;
}

$Add = array(
'nome' => $_POST['nome'],
'login' => $_POST['login'],
'senha' => md5($_POST['permissao']);
'email' => $_POST['email'],
'nivel' => $_POST['nivel'],
'permissao' => $Permissao,
'status' => $_POST['status']
);
$Query = DBCreate('usuarios', $Add);
if($Query != 0) {
  Redireciona('?sucesso');
}else{
  Redireciona('?erro');

  }
}



//Atualizar
if (isset($_GET['Atualizar])) {
  $id = $GET['Atualizar'];

    if(isset($_POST['senha']) && !empty($_POST['senha'])) {
if(isset($_POST['permissao'])) {
       $Permissao = implode(', ', array_values('$_POST['permissao']));
}else{
$Permissao = false;
}

$AddAtualizar = array(
'nome' => $_POST['nome'],
'login' => $_POST['login'],
'senha' => md5($_POST['permissao']);
'email' => $_POST['email'],
'nivel' => $_POST['nivel'],
'permissao' => $Permissao,
'status' => $_POST['status']
);
}else{
if(isset($_POST['permissao'])) {
       $Permissao = implode(', ', array_values('$_POST['permissao']));
}else{
$Permissao = false;
}

$AddAtualizar = array(
'nome' => $_POST['nome'],
'login' => $_POST['login'],
//'senha' => md5($_POST['permissao']);
'email' => $_POST['email'],
'nivel' => $_POST['nivel'],
'permissao' => $Permissao,
'status' => $_POST['status']
);

}
$Query = DBUpdate('usuarios', $AddAtualizar, "id = '{$id}'");
if($Query != 0) {
  Redireciona('?sucesso');
}else{
  Redireciona('?erro');

  }
}

 

Agora vamos criar uma função 

<?php
//redirecionar com javascript 
function Redireciona($arquivo) {
echo "<script> window.location = '$arquivo'; </script>";
}

//Dados Sessão
function DadosSession($Item) {
return $_SESSION['node']["{$Item}"];
}

//verificar se o usuarios tem ou nao permissao ao modulo
function VerificarPermissao($URL) {
$IDUSER = DadosSession('id');

$Query = DBREAD('usuarios','permissao',"WHERE id='{$IDUSER}'"); foreach ($Query as $usuarios) {
$ModPermissao = $usuarios['permissao'];
if(empty($ModPermissao)) {
return true;
}elseif(!empty($ModPermissao)) {
   if(strpos($ModPermissao, $URL) !== false) {
return true;
   }else{
//return false;
return Redireciona('index.php');
     }
    }
   }
  }

 

Nos arquivos que sera feito as permissões  faz a chamada assim

 

Exemplo 

portugues.php

 

<?php

$Query = DBREAD('modulos', '*', "WHERE status = '1' AND url = 'portugues.php'")

if(VerificarPermissao($Modulos['url']) == true) { ?>

<body>

AQUI SERA OS CONTEÚDOS DO ARQUIVOS PORTUGUES.PHP 

</body>

<?php } }} ?>

Os codigo a cima tu pode adaptar da sua forma que tu usa ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por joao b silva
      Tenho uma pequena aplicação em php que gera arquivos pdf com a MPDF e envia email com a PHPMAILER. De repente a app parou de enviar os emails  e apresenta a seguinte mensagem de erro:
       
      Error PHPMailer: SMTP Error: Could not authenticate.
       
      Faço uso de um hotmail para a configuração do PHPMAILER.
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos.
       
      Quando programava em DOS. utilizava algumas teclas de atalho para: SALVAR / EDITAR / EXCLUIR / IMPRIMIR.
      Por exemplo:
      Salvar ----> ALT+S
      Editar ----> ALT+E
      Excluir --> ALT+X
      Imprimir -> ALT+I

      no PHP tem como colocar esses ATALHOS nos button, para o usuário trabalhar com esses atalhos e como seria ?

      grato,
       
      Cesar
    • Por violin101
      Caros Amigos, saudações.
       
      Por favor, me perdoa em postar uma dúvida.
       
      Preciso criar uma Rotina onde o usuário possa buscar na Base de Dados de Produtos, tanto por Código e Descrição, ou seja:
      - caso o usuário digita o Código, mostra os dados do Produto.
      - caso o usuário digita a Descrição, mostra os dados do Produto
       
      Fiz uma Rotina, onde o usuário digita a DESCRIÇÃO com a função AUTOCOMPLETE.    <=== está funcionando certinho.
       
      Minha dúvida é como faço para DIGITAR o Código e mostrar os dados também.
       
      o meu AutoComplete na MODEL está assim.
      public function autoCompleteProduto($q){ $this->db->select('*' ) ->from('produtos') ->where('produtos.statusProd',1) ->like('descricao', $q) ->limit(5) ->order_by('descricao', 'ASC'); $query = $this->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { $row_set[] = ['label' => str_pad($row['idProdutos'], '5', '0', STR_PAD_LEFT).' - '.$row['descricao'], 'id' => $row['idProdutos'], 'descricao' => $row['descricao'], 'cod_interno' => $row['cod_interno'], 'prd_unid' => $row['prd_unid'], 'estoque_atual' => $row['estoque_atual'] ]; } echo json_encode($row_set); } }  
       
      no CONTROLLER está assim:
      public function autoCompleteProduto() { $this->load->model('estoque/lancamentos_model'); if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->lancamentos_model->autoCompleteProduto($q); } }  
       
      na VIEW está assim:
      <div class="col-md-10"> <label for="idProdutos">Produto:</label> <input type="hidden" name="idProdutos" id="idProdutos"> <input type="text" class="form-control" id="descricao" name="descricao" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por descrição do produto" disabled> </div>  
      VIEW + JAVASCRIPT
       
      //Função para trazer os Dados pelo o AutoComplete. function resolveAutocomplete() { $("#descricao").autocomplete({ source: "<?php echo base_url(); ?>estoque/lancamentos/autoCompleteProduto/", minLength: 2, select: function (event, ui) { $("#idProdutos").val(ui.item.id); $("#cod_interno").val(ui.item.cod_interno); $("#descricao").val(ui.item.descricao); $("#prd_unid").val(ui.item.prd_unid); $("#estoque_atual").val(ui.item.estoque_atual); $("#qtde").focus(); } }); } // inicia o autocomplete resolveAutocomplete();  
      Grato,
       
      Cesar
    • Por belann
      Olá!
       
      Estou tentando criar um projeto laravel e está dando o seguinte erro 
      curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
        er certificate
      Já tentei atualizar o composer, mas dá o mesmo erro acima.
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.