Primeiramente quero me desculpar com todos, pois não expliquei detalhadamente o que eu queria, pra fazer tal solicitação. Consegui resolver o problema, mas pra não ficar mais um tópico abandonado, acho que o correto é explicar o que eu queria e como resolvi.
Primeiramente, queria fazer com que o PHP buscasse no MySQL informações sobre direitos de acesso de usuários em áreas de minha aplicação. A aplicação é um gerenciador de pedidos de produto manufaturado, onde o usuário manipula informações de clientes (inclui, edita, exclui) e abre novas ordens de serviço, podendo alterá-las no decorrer do processo da manufatura do produto.
Todavia, uma dificuldade encontrada era que o usuário podia ter acesso a todas as partes da aplicação, desde acessar a base de clientes e ter acesso a informações pessoais destes, até mesmo excluí-los.
Resolvi colocando parametros de acesso na base de dados do MySQL onde está o cadastro do usuário que acessa o sistema. Não sei se foi da maneira mais conveniente, mas foi a saída mais rápida que encontrei, até peço desculpas se por ventura minha solução tiver sido muito "nas coxas".
Criei campos de tabela no MySQL, referente ao acesso. Vou ilustrar com o exemplo dos acessos referente clientes e pedidos.
Campos de tabela: acc_incluicliente, acc_editacliente, acc_excluicliente, acc_incluipedido, acc_editapedido, acc_excluipedido. Todos os campos CHAR, com espaço de 1 caractere apenas
Na autenticação da Session, fiz o PHP jogar um select na tabela de usuários, e autenticar junto com o username, strings para cada acesso permitido ou não:
$LoginRS__query=sprintf("SELECT login, senha, nivel, acc_incluicliente, acc_editacliente, acc_excluicliente, acc_incluipedido, acc_editapedido, acc_excluipedido FROM funcionario WHERE login=%s AND senha=%s", GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); $LoginRS = mysql_query($LoginRS__query, $data) or die(mysql_error()); $loginFoundUser = mysql_num_rows($LoginRS);
Feita a query, transformo as permissões da tabela em Strings:
if ($loginFoundUser) { $loginAccIncluiCliente = mysql_result($LoginRS,0,'acc_incluicliente'); $loginAccEditaCliente = mysql_result($LoginRS,0,'acc_editacliente'); $loginAccExcluiCliente = mysql_result($LoginRS,0,'acc_excluicliente'); $loginAccIncluiPedido = mysql_result($LoginRS,0,'acc_incluipedido'); $loginAccEditaPedido = mysql_result($LoginRS,0,'acc_editapedido'); $loginAccExcluiPedido = mysql_result($LoginRS,0,'acc_excluipedido');
E depois emprego-as...
$_SESSION['MM_Username'] = $loginUsername; $_SESSION['MM_IncluiCliente'] = $loginAccIncluiCliente; $_SESSION['MM_EditaCliente'] = $loginAccEditaCliente; $_SESSION['MM_ExcluiCliente'] = $loginAccExcluiCliente; $_SESSION['MM_IncluiPedido'] = $loginAccIncluiPedido; $_SESSION['MM_EditaPedido'] = $loginAccEditaPedido; $_SESSION['MM_ExcluiPedido'] = $loginAccExcluiPedido;
No ínicio de cada página onde queria restringir o acesso, coloquei o seguinte código, de acordo com a situação e a variável (no exemplo estou usando a variável de editar o usuário). A permissão do acesso do usuário no MySQL sempre é igual a valor 1 (caso o campo esteja com valor nulo ou diferente de 1, a permissão é negada.
$MM_restrictGoTo = "restrito.php"; if ($_SESSION['MM_EditaUsuario']<>"1") { // Se o código de acesso for diferente de 1 header("Location: ". $MM_restrictGoTo); // Então o acesso é restrito e é bloqueado } // Fim da Condição else { // SENÃO // Não faça nada } // Fim da Condição
Testei e funcionou efetivamente. Lógico, como falei antes e reitero, meus conhecimentos de PHP são extremamente amadores, então peço desculpas aos veteranos caso tenha feito algum tipo de volta absurda pra chegar nesse resultado. De qualquer maneira, agradeço muito a gentileza de todos que colaboraram.
Abraços
Wilson
Só complementando, a última parte onde usuei a variável de editar usuário a mesma não estava declarada na primeira parte da minha explicação, pois estou implementando-a agora.
Abraços