Jump to content

session login


António
 Share

Recommended Posts

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

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 by António
Link to comment
Share on other sites

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 by hugorodrigues

Because being normal isn't funny

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.