Ir para conteúdo

POWERED BY:

Arquivado

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

renatagramos

[Resolvido] Gravar checkbox no banco em array para permissões

Recommended Posts

Oi, pessoal.

 

Estou enlouquecendo tentando achar uma solução para criar permissões das páginas do meu sistema em PHP.

 

Preciso preencher o seguinte formulário:

 


<form id="permissao" name="permissao" method="post" action="sql_cadastra_permissao.php">

<table width="400" border="0" align="center" cellspacing="2" cellpadding="2">

<tr><td width="30" colspan="3"><b>ADMINISTRAÇÃO</b></td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Documentação</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="AdmDocCad" value="AdmDocCad">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="AdmDocAlt" value="AdmDocAlt">Atualizar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="AdmDocCon" value="AdmDocCon">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Filial / Representante</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Frota (Veículo)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Frota (Documento)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Telefonia (Nextel)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Telefonia (Celular)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="1" value="1">Consultar</td></tr>

<tr> 
<td align="center"> 
<input name="limpar" type="reset" id="limpar" value="Limpar">
<input name="enviar" type="submit" id="enviar" value="Enviar">
</td>
</tr>
</table>

 

Após preenchido, preciso entrar com essas informações em um campo na tabela 'Permissao' do banco MySQL, mas em forma de array.

 

Depois preciso verificar em cada página se o usuário tem permissão para acessá-la.

 

Como faço isso??? Quais valores uso para o array, o nome da pagina ou um número para cada página?

 

Ajudem, por favor!! Obrigada!

 

* Se alguém tiver uma sugestão melhor, aceito também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, você não deve definir os nomes dos inputs dessa forma, outra coisa, você vai criar uma tabela no MySQL de acordo com os itens

que são relacionados a Administração, como telefonia, documentos, com os campos 'id_usuario', 'documentos', 'alterar', 'excluir', 'cadastrar' ok ?

na hora de ler, quando o usuário fizer seu login, você vai verificando com um IF se ele tem a permissão pra tal cadastrada no banco de dados

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, você não deve definir os nomes dos inputs dessa forma, outra coisa, você vai criar uma tabela no MySQL de acordo com os itens

que são relacionados a Administração, como telefonia, documentos, com os campos 'id_usuario', 'documentos', 'alterar', 'excluir', 'cadastrar' ok ?

na hora de ler, quando o usuário fizer seu login, você vai verificando com um IF se ele tem a permissão pra tal cadastrada no banco de dados

 

;)

 

Obrigada, Andrey, pela rápida resposta.

 

Vamos ver se entendi...

 

Eu tenho o módulo "Administração", dentro dele o menu "Frota" e os submenus "Cadatrar", "Alterar" e "Consultar".

 

Faço uma tabela assim:

 

CREATE TABLE IF NOT EXISTS `permissao` (

`id_usuario` int(5) NOT NULL,

`adm_frota_cad` int(1) DEFAULT NULL,

`adm_frota_alt` int(1) DEFAULT NULL,

`adm_frota_con` int(1) DEFAULT NULL,

 

PRIMARY KEY (`id_usuario`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

 

Conforme o checkbox for selecionado, entra com 1 no campo correspondente; Se não for selecionado, entra com o NULL.

 

Seria isso?

 

Se for isso mesmo, até gostei da ideia, mas terei só um problema... O sistema já tem umas 100 páginas e terá mais que o dobro disso. Terei que fazer um campo para cada página???

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

[RESOLVIDO]

 

Galera,

 

Não sei se é o jeito mais correto, mas ficou exatamente como eu queria... Permissão por página!

 

form_permissao.php

<html>
<head>
<title>SIESA - Sistema Escalservice de Administração</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>

<body>

<form id="permissao" name="permissao" method="post" action="sql_permissao.php">

<table width="400" border="0" align="center" cellspacing="2" cellpadding="2">

<tr>
<td valign="middle" height="25" align="center">USUÁRIO:</td>
<td align="center"><select name="usuario" id="usuario">
<option value=""></option>
     <?php $sql = mysql_query("SELECT * FROM siesa_login WHERE status = 'ATIVO' ORDER BY nome ");
     while($monta = mysql_fetch_assoc($sql)){echo '<option value="'.$monta['id'].'">'.$monta['nome'].'</option>';} ?>
     </select></td>
</tr>

<tr><td width="30" colspan="3"><b>ADMINISTRAÇÃO</b></td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Documentação</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag01" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag02" value="1">Atualizar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag03" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Filial / Representante</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag04" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag05" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag06" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Frota (Veículo)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag07" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag08" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag09" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Frota (Documento)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag10" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag11" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag12" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Telefonia (Nextel)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag13" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag14" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag15" value="1">Consultar</td></tr>

<tr><td width="15"></td><td width="30" colspan="2"><li>Telefonia (Celular)</li></td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag16" value="1">Cadastrar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag17" value="1">Alterar</td></tr>
<tr><td width="10"></td><td width="5"></td><td width="30"><input type="checkbox" name="pag18" value="1">Consultar</td></tr>
</table>
</form>
</body>
</html>

 

 

sql_permissao.php

<?php
include "../../config.php";
include "../../logs/logs.php";

session_start();

$usuario = ($_POST['usuario']);

$pag01 = ($_POST['pag01']);
$pag02 = ($_POST['pag02']);
$pag03 = ($_POST['pag03']);

$pag04 = ($_POST['pag04']);
$pag05 = ($_POST['pag05']);
$pag06 = ($_POST['pag06']);

$pag07 = ($_POST['pag07']);
$pag08 = ($_POST['pag08']);
$pag09 = ($_POST['pag09']);

$pag10 = ($_POST['pag10']);
$pag11 = ($_POST['pag11']);
$pag12 = ($_POST['pag12']);

$pag13 = ($_POST['pag13']);
$pag14 = ($_POST['pag14']);
$pag15 = ($_POST['pag15']);

$pag16 = ($_POST['pag16']);
$pag17 = ($_POST['pag17']);
$pag18 = ($_POST['pag18']);

$sql = ("SELECT * FROM siesa_login WHERE id = '$usuario'");

$sql = ("UPDATE siesa_login SET 

pag01 = '$pag01',
pag02 = '$pag02',
pag03 = '$pag03',

pag04 = '$pag04',
pag05 = '$pag05',
pag06 = '$pag06',

pag07 = '$pag07',
pag08 = '$pag08',
pag09 = '$pag09',

pag10 = '$pag10',
pag11 = '$pag11',
pag12 = '$pag12',

pag13 = '$pag13',
pag14 = '$pag14',
pag15 = '$pag15',

pag16 = '$pag16',
pag17 = '$pag17',
pag18 = '$pag18'

WHERE id = '$usuario'");
Mysql_query($sql) or die ("<p align=\"center\"><font face=arial size=2 color=#ff0000>Não foi possível atualizar as permissões do usuário!<br><br></font>");

}
?>

 

banco.sql

CREATE TABLE IF NOT EXISTS `siesa_login` (
 `id` int(3) NOT NULL AUTO_INCREMENT,
 `nome` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
 `login` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
 `senha` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
 `email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
 `status` varchar(7) COLLATE utf8_unicode_ci NOT NULL,
 `pag01` int(1) DEFAULT 0,
 `pag02` int(1) DEFAULT 0,
 `pag03` int(1) DEFAULT 0,
 `pag04` int(1) DEFAULT 0,
 `pag05` int(1) DEFAULT 0,
 `pag06` int(1) DEFAULT 0,
 `pag07` int(1) DEFAULT 0,
 `pag08` int(1) DEFAULT 0,
 `pag09` int(1) DEFAULT 0,
 `pag10` int(1) DEFAULT 0,
 `pag11` int(1) DEFAULT 0,
 `pag12` int(1) DEFAULT 0,
 `pag13` int(1) DEFAULT 0,
 `pag14` int(1) DEFAULT 0,
 `pag15` int(1) DEFAULT 0,
 `pag16` int(1) DEFAULT 0,
 `pag17` int(1) DEFAULT 0,
 `pag18` int(1) DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

 

 

E em todas as páginas:

 


<?php
include "../../config.php";
include "../../logs/logs.php";

session_start();

if(!isset($_SESSION["login"])){
echo "ACESSO NEGADO";
}else{

$login = $_SESSION["login"];
$sql = mysql_query("SELECT * FROM siesa_login WHERE login='$login'") or die("Nome ou senha não confere. MySQL erro:".mysql_error());
$result = mysql_fetch_array($sql); 

if($result["pag18"] != "1"){
echo "<script>location='../../semacesso.php'</script>";
exit; 
} else {
<!-- CÓDIGO HTML -->

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