Ir ao conteúdo
  • Cadastre-se

Login - Nível de acesso PHP


Klausjr

Posts recomendados

Olá,

sou novato em programação.

estou criando um sistema de login com níveis de usuários para controlar o acesso a páginas.

Eu criei uma página com o formulário de login

index.html

 <form method="post" action="validacao.php" name="autentica">
<p align="center">Login:<input type="text" name="nome">
<p align="center">Senha:<input type="password" name="password">
<p align="center"><input type="submit" value="Entrar" name="Submit" align="center"></form>

criei também uma página de validação (verifica se o usuário está registrado)

validacao.php

<?
///////////////////////////////////////////////////////////////////////
///////////////// Autenticação de usuário ///////////////////////////
//Inicia sessão
session_start();
$nome=addslashes($nome);
$password=addslashes($password);
$usuario="";

//conexão e definição MySQL
$conexao=mysql_connect("localhost","login","senha");
mysql_select_db("banco_de_dados",$conexao);

//Consultar login (variavel)
$consultar_login="select * from sis_usuarios where login='$nome' and senha='$password'";


//Retorna os resultados
$resultado=mysql_query($consultar_login,$conexao) or die (mysql_error());

//While
While($campo=mysql_fetch_array($resultado))
{
$id=$campo["id"];
$usuario=$campo["login"];
}

//Registra na sessão de navegação
session_register("id");
session_register("usuario");

//Determina autorização
if ($usuario=="")
{
$autorizadosis="nao";
session_register("autorizadosis");
header("Location: index.php");
}
else
{
$autorizadosis="sim";
session_register("autorizadosis");
header("Location: inicio.php");
}


//Fecha conexão MySQL
MySQL_Close($conexao);

?>

Na tabela do BD MySQL eu coloquei um campo 'Nivel' onde irá ser definido o nivel de usuário...

Eu não sei como fazer o PHP pegar esse valor e registra-lo em uma string...

pois ai eu posso criar um arquivo que verifica o nivel do usuario logado e verifica se ele tem acesso a página requisitada. (utilizando Inlude(); )

Se alguém puder me ajudar ficarei grato...

eu já encontrei alguns outros códigos... mas eu sou novato e não entendo nada do que esta programado lá.. :wacko:

valeu!!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Se você vai colocar no DB os niveis, supondo, 1 2 e 3, pega esse valor e guarda numa variável de sessão, assim quando o usuário tentar entrar em uma página você, usando a tal variável, verifica se o nivel dele permite o acesso.

Uma dica: o uso de session_register() está obsoleto, ao invés disso utilize a global $_SESSION

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Na hora do login o seu script já acessa, basta que você utilize o valor.

//Consultar login (variavel)
$consultar_login="select * from sis_usuarios where login='$nome' and senha='$password'";

Acima você está selecionando TODOS os campos, um deles é do nível de permissão. Para gravar, use a global $_SESSION:

$_SESSION['nivel_permissao'] = $valor_encontrado

Para utilizar a global $_SESSION basta iniciar com o session_start() no começo do seu arquivo.

Lá no arquivo restrito você testa essa global criada acima, se tiver permissão acessa, senão linha na pipa:

<?php

// INICIO O USO DAS SESSIONS
session_start();

// INFORMO QUE O NIVEL DE ACESSO DESTE ARQUIVO É 1
$nivel_de_acesso_arquivo = '1';

// VERIFICO SE EXISTE A VARIAVEL E SE ELA TEM O VALOR DEFINIDO ACIMA
if(!isset($_SESSION['nivel_permissao']) || $_SESSION['nivel_permissao'] != $nivel_de_acesso_arquivo) {

exit("Você não tem permissão para acessar esta página"); // NÃO TEM? BYE

}

// E DAQUI PRA BAIXO CONTINUA NORMALMENTE...

?>

Link para o comentário
Compartilhar em outros sites

Eu tentei fazer...

olha como ficou:

Index.php


<form method="post" action="validacao.php" name="autentica">
Usuario: <input type="text" name="usuario">
<br>
Senha: <input type="password" name="senha">
<br>
<br>
<input type="submit" value="Entrar" name="Submit" align="center">
</form>
<br>
<br>
<? echo "$erro"; ?>

validacao.php


/////////////////////////////////////
$login=addslashes($login);
$senha=addslashes($senha);
$usuario="";
$conexao=mysql_connect("localhost","usuario","senha");
mysql_select_db("bancodedados", $conexao);

//////////////////////////////////////

$consultar_login="select * from sis_usuarios where login='$login' and senha='$senha'";
$resultado=mysql_query($consultar_login,$conexao) or die (mysql_error());

While($campo=mysql_fetch_array($resultado))
{
$id=$campo["id"];
$login=$campo["login"];
$nome=$campo["nome"];
$nivel=$campo["nivel"];
}

if ($id!="")
{
//Registra na sessão de navegação
$_SESSION["idusuario"]=$id;
$_SESSION["nomeusuario"]=$nome;
$_SESSION["usuario"]=$login;
$_SESSION["nivelusuario"]=$nivel;
$_SESSION["autorizadosis"]="sim";
header("Location: inicio.php");

}
else
{
$_SESSION["autorizadosis"]="não";
header("Location: index.php?erro=usuario nao registrado e/ou senha nao confere");
}
//Fecha conexão MySQL
MySQL_Close($conexao);

?>

inicio.php


<?
session_start();
if ($_SESSION["autorizadosis"]=="sim")
{
}
else
{
header("Location: index.php?erro=voce nao pode acessar esta pagina");
}
?>
<br>
seja bem vindo(a): <? echo $_SESSION["nomeusuario"]; ?>
<br>
Seu nivel de usuário é: <? echo $_SESSION["nivelusuario"]; ?>

Mas não funciona!!!! :wacko:

Alguém por favor poderia me dizer o que está acontecendo??

eu sou iniciante em php e não conheço bem a linguagem ainda... então peço que seja claro pra que eu e as demais pessoas que tem a mesma dúvida consigam entender...

:rolleyes:

valeu galera!!

assim que estiver pronto o sistema eu vou disponibiliza-lo para download... com os devidos agradecimentos...

Link para o comentário
Compartilhar em outros sites

Será assim.. Eu recomendo q na hora do cadastro.. o padrão seja cadastrado com nivel inicial por exemplo 1... agora continuando a duvida..

Pensa só.. voce quer entrar em uma boate.. so q precisa de um indispensavel... se nao tiver você na oentra se tiver entrar.. Effting cala a boca estamos faladno de programaçao.. sim sim eu sei.. mais é logica.. voce pode comparar o nivel de acesso como indispensavel e fazer um codigo do tipo..quando voce aperta login faz uma validaçao bem pequena(da pra melhora.. claro.. mais os um exemplo)

primeiro resgata do banco de dados o nivel

session_start();//vamos mexer com session então "starta" ela em todas as paginas.. de preferência coloque junto com a pagina de configuração do banco de dados q tera e, todas as paginas tb.

//importa ou coloca nessa pagina a conexao com o banco de dados eim xD

$variavel = mysql_query("SELECT * FROM tabela WHERE loginDaTabela =".$_POST['login']."");

if($variavel > 0){

echo "voce tem conta.. seja bem vindo";

$_session['login'] = $_POST['LOGIN'];//aqui você cria sua sessao..

}else{

echo "voce nao tem indispensavel.. cai fora!";

usset($_SESSION['login']); //aqui se destroy a sessao.. porque fiz isso.. para nao dar bug de q de repente ja tinha uma session criada..

}

Continuando... agora tera q ver o nivel da pessoa.. é so resgatar o valor do nivel e fazer a regra..

faz a query

$conexao=mysql_query("SELECT * FROM tabela login = '".$_SESSION['login']."'");//se nao funcionar coloque a session em uma variavel e coloca a variavel ali :B

$row = mysql_fetch_assoc($conexao);//pegue o valor como uma arrarey mesmo..

if($row['nivel'] > 2){//se o valor q esta no banco de dados for 2 tera acesso senao nao tera.. isso poderá ser feito com qualquer numero.. so colocar =D..

echo "voce tem acesso!";

}else{

echo "voce nao tem acesso! cai fora daqui!";

}

Se nao entedese post ai q te ajudo ^^

Falou..

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

O erro que está acontecendo é no arquivo validacao.php. Falta o session_start() no inicio dele. Pode ser que seu php.ini esteja configurado com inicio automatico de sessões, daí o problema seria outro, mas eu não creio nisso porque não é default.

Dica pra quem está iniciando:

É muito importante ver todos os níveis de erro do php quando estamos em desenvolvimento. Isso melhora a nossa aplicação, dando mais consistencia e confiabilidade a mesma, por isso, procurem solicitar ao php que mostre todos os erros. Por default o php mostra o nivel E_ALL mas não mostra o nivel NOTICE.

Se você usa um arquivo config.php ou configure.php, daqueles que você insere com include() em todas os arquivos, basta que no início dele você utilize a função error_reporting(). O nivel notice, pra quem tá começando, enche um pouco o saco porque ele pega muita coisa que por default passaria direto, mas eu recomendo mesmo assim, com o tempo se acostuma.

<?php

error_reporting(E_ALL | E_NOTICE); // isto em desenvolvimento

error_reporting(0); // isto em produção

?>

Dá pra configurar no php.ini tb, mas daí depende se cada um tem o acesso a ele. Alias, no php.ini muita coisa pode ser configurada, e é recomendável que todo mundo que deseja algo mais do que ficar fazendo formulário a vida toda, estude e entenda. Assim como o httpd.conf do apache, opoder de um.htaccess e por aí vai. Configurando direto no server ou no .htaccess você otimiza muito mais as suas aplicações.

Mais info:

http://br.php.net/manual/pt_BR/function.error-reporting.php

http://br.php.net/manual/pt_BR/ini.php

http://www.criarweb.com/artigos/arquivo-httpd-conf.html

http://www.devin.com.br/htaccess/

Link para o comentário
Compartilhar em outros sites

Galera!!

Consegui fazer funcionar...

valeu ae vocês q me ajudaram...

eu vou conseguir terminar este sistema de RH e assim que estiver td certinho eu colocou aqui para download....

vou colocar abaixo como ficou o código.

index.php


<form method="post" action="validacao.php">
<p align="center">Login:
<input type="text" name="usuario">
<p align="center">Senha:
<input type="password" name="senha">
</p>
<p align="center">
<input type="submit" value="Entrar" name="Submit" align="center">

<div align="center"><? echo "$erro"; ?></div>
</form>

Validacao.php


<?
require_once("config.php");
$login=$_POST[usuario];
$login=addslashes($login);
$senha=$_POST[senha];
$sql=mysql_query("SELECT * FROM sis_usuarios WHERE login='$login' AND senha='$senha'") or die ("Não foi possível conectar a tabela sis_usuarios");
$row=mysql_num_rows($sql);
if ($row == 0)
{
session_start();
$_SESSION["autorizadosis"] = "não";
header ("Location: index.php?erro=Usuário e/ou senha inválidos");
}
else
{
session_start();
$id = mysql_result($sql, 0,"id");
$nome = mysql_result($sql, 0, "nome");
$nivel = mysql_result($sql, 0,"nivel");
$ultimoacesso = mysql_result($sql, 0,"ultimoacesso");
$_SESSION['idusuario'] = $id;
$_SESSION['nomeusuario'] = $nome;
$_SESSION['nivelusuario'] = $nivel;
$_SESSION['ultimoacesso'] = $ultimoacesso;
$_SESSION['autorizadosis'] = "sim";
header ("location: inicio.php");
}
?>

inicio.php


<?
require_once ("valida.php");
?>
<?
require_once("config.php");
session_start();
$sqldata = mysql_query("UPDATE sis_usuarios SET ultimoacesso=(DATE_FORMAT(NOW(), '%d/%m/%Y %H:%i')) WHERE id='". $_SESSION['idusuario'] ."'");
?>
seja bem vindo(a): <? echo $_SESSION['nomeusuario']; ?>
<br>
Seu ultimo acesso foi: <? echo $_SESSION['ultimoacesso']; ?>
<br>
Seu nível de usuário é: <? echo $_SESSION['nivelusuario']; ?>
<br>

valida.php


<?
session_start();

if ($_SESSION["autorizadosis"] == "sim")
{
}
else
{
header ("location: index.php?erro=Você não está autorizado a visualizar esta página");
}
?>

config.php


<?
$conexao=mysql_connect("localhost","login","senha");
mysql_select_db("BD",$conexao);
?>

Agora eu vou desenvolver alguns modulos.. e irei criar arquivos de validação para cada nivel de usuario...

ai quando eu quiser restringir a página eu faço um inclusão dela. (selecionando os usuários desejados)

valeu galera!!!

Eu to com outra duvida... mas vou abri-la em outro tópico

abração!!

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!