Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
>
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!
[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
}
?>
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
;)