António Posted September 4, 2014 at 11:18 AM Report Share #566229 Posted September 4, 2014 at 11:18 AM Estou a desenvolver um site que tem um painel administrativo. Esse painel tem um login, o meu problema é que eu consigo entrar dentro do painel atravez do link, ou seja não esta seguro, qualquer pessoa é capaz de entrar se souber o nome dos ficheiros. ex: localhost/om/admin/Painel.php se eu fizer isto entra me no site e consigo realizar tudo sem ser admin, isto é com session mas nao sei como fazer(nao tenho qualquer código, apenas tenho um ficheiro chamado _config.php que esta a ser chamado em todos os ficheiros do painel). Link to comment Share on other sites More sharing options...
herty Posted September 4, 2014 at 11:57 AM Report Share #566238 Posted September 4, 2014 at 11:57 AM Crias um ficheiro php que depois vais incluir nos ficheiros que necessitem de permições. Nesse ficheiro verificas se a session de login contem as permissões que queiras. Caso não faes redirecionamento para outra pagina Link to comment Share on other sites More sharing options...
António Posted September 4, 2014 at 03:42 PM Author Report Share #566271 Posted September 4, 2014 at 03:42 PM (edited) nesse ficheiro que estavas a dizer tenho isto <?php if (!(isset($_SESSION['user']) && $_SESSION['user']['logado'])) exit('<div style="text-align:center;font-weight:bold;">Você não tem permissão para realizar este acesso.</div>'); ?> e no ficheiro do login tenho isto if (mysql_num_rows($resultado)>0){ $_SESSION['user'] = Array( 'logado' => true, 'email' => $resultado['email'], 'pass' => $resultado['pass'] ); } else { $_SESSION['user'] = Array( 'logado' => false, 'email' => '', 'pass' => '' ); } o problema é que isso nao entre nem mesmo com os dados corretos que estao na base de dados! ajudem pls Edited September 4, 2014 at 04:14 PM by António Link to comment Share on other sites More sharing options...
hugorodrigues Posted September 4, 2014 at 04:55 PM Report Share #566280 Posted September 4, 2014 at 04:55 PM (edited) Acho que já estou a ver o problema. Tens o if mal construido. <?php if (isset($_SESSION['user']) && $_SESSION['user']['logado']]) exit('<div style="text-align:center;font-weight:bold;">Você não tem permissão para realizar este acesso.</div>'); ?> As alterações que fiz foi tirar o contrário e separar os valores das variaveis. No caso de teres outra tabela com utilizadores, podes juntar a tabela dos admins com a dos utilizadores e adicionas o campo 'admin', que é boolean. Assim no array onde guardas os dados também crias um "campo" para guardar se ele é ou não admin. Depois onde fazes a verificação vez se é admin ou não. É mais ou menos assim: Ficheiro com a verificação <?php if (!isset($_SESSION['user']) || $_SESSION['user']['logado'] && !$_SESSION['user']['admin']) exit('<div style="text-align:center;font-weight:bold;">Você não tem permissão para realizar este acesso.</div>'); ?> Ficheiro de login if (mysql_num_rows($resultado)>0){ $_SESSION['user'] = Array( 'logado' => true, 'email' => $resultado['email'], 'pass' => $resultado['pass'], 'admin' => $resultado['admin'] ); } else { $_SESSION['user'] = Array( 'logado' => false, 'email' => '', 'pass' => '', 'admin' => false ); } Desta maneira só precisas de ter uma tabela com os utilizadores do site todo, visto que fazes a distinção na coluna admin. Caso queiras usar uma tabela separa(o que não me parece muito bem) ou apenas tens utilizadores para a área administrativa, basta corrigires o if e não precisas de alterar o script de login. Edited September 4, 2014 at 05:10 PM by hugorodrigues Because being normal isn't funny Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now