Ir para conteúdo

POWERED BY:

Arquivado

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

phpbrasil

Incluir nivel de acesso no login

Recommended Posts

Pessoal,

Como faço para discriminar nivel de acesso no login em php?

 

Criei um sistema de login e consigo acessar com usuario e senha de adm, mas preciso criar tambem um acesso para usuario comum...

Ja tenho usuario e senha de usuario comum no banco, assim como os niveis de acesso (1=ADM, 2=USERCOMUM)

Poderiam me ajudar?

 

Seguem meus codigos:

 

INDEX.PHP

<html>
<head>
<title> Projeto </title>

<style>
body{

background-color:#11a6d4;
}

#login-box{
background-color:#1992b7;
width:380px;
height:260px;
margin:140px auto 0px;
border-radius:5px;
opacity:0.5;
}

#login-box-interno{
width:360px;
height:240px;
background-color:white;
position:absolute;
margin:10px;
border-radius:5px;
box-shadow:0px 0px 55px black;
overflow:hidden;

}

#login-box-label{
height:40px;
text-align:center;
font:bold 14px/45px arial;
border-top-left-radius:5px;
border-top-right-radius:5px;
background: #f2f5f6;
background: -moz-linear-gradient(top, #f2f5f6 0%, #e3eaed 100%, #c8d7dc 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f5f6), color-stop(100%,#e3eaed), color-stop(100%,#c8d7dc));

background: -webkit-linear-gradient(top, #f2f5f6 0%,#e3eaed 100%,#c8d7dc 100%);
background: -o-linear-gradient(top, #f2f5f6 0%,#e3eaed 100%,#c8d7dc 100%);
background: -ms-linear-gradient(top, #f2f5f6 0%,#e3eaed 100%,#c8d7dc 100%);
background: linear-gradient(to bottom, #f2f5f6 0%,#e3eaed 100%,#c8d7dc 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f2f5f6', endColorstr='#c8d7dc',GradientType=0 );

border-bottom:1px solid #bfc3c5;
box-shadow:1px 0px 3px #dedede;
color:#555555;
text-shadow:1px 0px 1px white;


}

.input-div{
margin-right:30px;
margin-top:-90px;
padding:5px;
background-color:#f2f5f7;
font:14px/45px arial;

}

#botoes{

width:310px;
margin-left:25px;
margin-top:65px;
}

#submit{
float:right;
background-color:red;
padding:5px 15px;
font:12px arial;
border-radius: 20px;
text-shadow:0px 1px 0px white;
border:1px solid #9eb9c3;
background: #edf6f9;
background: -moz-linear-gradient(top, #edf6f9 0%, #edf6f9 100%, #cde5ee 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#edf6f9), color-stop(100%,#edf6f9), color-stop(100%,#cde5ee));

background: -webkit-linear-gradient(top, #edf6f9 0%,#edf6f9 100%,#cde5ee 100%);
background: -o-linear-gradient(top, #edf6f9 0%,#edf6f9 100%,#cde5ee 100%);
background: -ms-linear-gradient(top, #edf6f9 0%,#edf6f9 100%,#cde5ee 100%);
background: linear-gradient(to bottom, #edf6f9 0%,#edf6f9 100%,#cde5ee 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#edf6f9', endColorstr='#cde5ee',GradientType=0 );
color:#527988;
box-shadow:0px 0px 10px #c9c9c9;

}

#submit:hover{
background: #cde5ee;
background: -moz-linear-gradient(top, #cde5ee 0%, #edf6f9 0%, #edf6f9 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#cde5ee), color-stop(0%,#edf6f9), color-stop(100%,#edf6f9));

background: -webkit-linear-gradient(top, #cde5ee 0%,#edf6f9 0%,#edf6f9 100%);
background: -o-linear-gradient(top, #cde5ee 0%,#edf6f9 0%,#edf6f9 100%);

background: -ms-linear-gradient(top, #cde5ee 0%,#edf6f9 0%,#edf6f9 100%);

background: linear-gradient(to bottom, #cde5ee 0%,#edf6f9 0%,#edf6f9 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cde5ee', endColorstr='#edf6f9',GradientType=0 );

cursor:pointer;

}

#esqueceu-senha{
font:12px arial;
margin:35px;
margin-top:15px;
}
}



</style>
</head>

<body>


<form method="post" action="ope.php" >
<div id="login-box">
<div id="login-box-interno">
<div class="imagem">


<div id="login-box-label">
Login
</div>


<img src="digital.jpg" alt="titulo" />


<div class="input-div" style="text-align:right" id="senha">
Senha:
<input type="password" name="senha" />

</div>



<div class="input-div" type="text" style="text-align:right" id="login">
Login:
<input type="text" name="login" />

</div>


<div id="botoes">


<div align="right"><input type="submit" value="Login" id="submit" /> </div>


<div id="esqueceu-senha"><a href="esqueci.html">Esqueceu sua senha?</a></div>
</div>
</div>
</div>


</form>
</body>
</html>

 

VALIDA.PHP

<?php
session_start();

$login = $_POST['login'];
$senha = $_POST['senha'];

$con = mysql_connect("127.0.0.1", "root", "vertrigo") or die ("Sem conexao com o servidor");
$select = mysql_select_db("controlfrequenciaescolar") or die ("Sem acesso ao DB. Entre em contato com o Administrador");

$result = mysql_query("SELECT * FROM `USUARIOS` WHERE `USUARIO` = '$login' AND `SENHA` = '$senha'");

if(mysql_num_rows ($result) > 0)
{
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
header('location:telaadm.php');
}
else{
unset ($_SESSION['login']);
unset ($_SESSION['senha']);
header('location:index.php');

}



?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você poderia salvar o nível na sessão, e depois usar um if para limitar o acesso.

Tem como me mostrar como? desculpe! mas ja tentei de todas as maneiras e nao consegui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem o nivel na tabela usuário, certo?

if(mysql_num_rows ($result) > 0)
{
$usuario = mysql_fetch_assoc($result);
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
$_SESSION['nivel'] = $usuario['nivel'];
header('location:telaadm.php');
}
else{
       unset ($_SESSION['login']);
       unset ($_SESSION['senha']);
      unset($_SESSION['nivel']);
       header('location:index.php');
       
       }

depois, nas outras páginas

<?php
session_start();
if(empty($_SESSION['login']))
   die('você não está logado');

$nivel = $_SESSION['nivel'];
 
if($nivel == 2)
    echo 'você é nivel 2';

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Você tem o nivel na tabela usuário, certo?

if(mysql_num_rows ($result) > 0)
{
$usuario = mysql_fetch_assoc($result);
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
$_SESSION['nivel'] = $usuario['nivel'];
header('location:telaadm.php');
}
else{
       unset ($_SESSION['login']);
       unset ($_SESSION['senha']);
      unset($_SESSION['nivel']);
       header('location:index.php');
       
       }

depois, nas outras páginas

<?php
session_start();
if(empty($_SESSION['login']))
   die('você não está logado');

$nivel = $_SESSION['nivel'];
 
if($nivel == 2)
    echo 'você é nivel 2';

fiz o que voce falou, mas quando logo como adm e como user, smp joga para a tela de adm...

 

meu codigo VALIDACAO.PHP ficou assim:

[inline]session_start();

 

$login = $_POST['login'];

$senha = $_POST['senha'];

 

$con = mysql_connect("127.0.0.1", "root", "vertrigo") or die ("Sem conexao com o servidor");

$select = mysql_select_db("controlfrequenciaescolar") or die ("Sem acesso ao DB. Entre em contato com o Administrador");

 

$result = mysql_query("SELECT * FROM `USUARIOS` WHERE `USUARIO` = '$login' AND `SENHA` = '$senha'");

 

if(mysql_num_rows ($result) > 0)

{

$usuario = mysql_fetch_assoc($result);

$_SESSION['login'] = $login;

$_SESSION['senha'] = $senha;

$_SESSION['usu_nivel'] = $usuario['usu_nivel'];

header('location:telaadm.php');

}

else{

unset ($_SESSION['login']);

unset ($_SESSION['senha']);

unset ($_SESSION['usu_nivel']);

header('location:telauser.php');

 

}

 

 

 

?>[/inline]

 

e nas paginas TELAADM.PHP e TELAUSER.PHP ficou assim no inicio:

 

[inline]

 

 

 

 

 

 

session_start();

 

if(empty($_SESSION['login']))

die('você não está logado');

 

$nivel = $_SESSION['usu_nivel'];

 

if($nivel == 2)

echo 'você é nivel 2';

 

?>

 

[/inline]

 

A coluna no banco referente ao nivel de acesso esta como usu_nivel

Compartilhar este post


Link para o post
Compartilhar em outros sites
session_start();


$login = $_POST['login'];

$senha = $_POST['senha'];


$con = mysql_connect("127.0.0.1", "root", "vertrigo") or die ("Sem conexao com o servidor");

$select = mysql_select_db("controlfrequenciaescolar") or die ("Sem acesso ao DB. Entre em contato com o Administrador");


$result = mysql_query("SELECT * FROM `USUARIOS` WHERE `USUARIO` = '$login' AND `SENHA` = '$senha'");


if(mysql_num_rows ($result) > 0)

{

$usuario = mysql_fetch_assoc($result);

$_SESSION['login'] = $login;

$_SESSION['senha'] = $senha;

$_SESSION['usu_nivel'] = $usuario['usu_nivel'];

 if($usuario['usu_nivel'] < 2 || $_SESSION['usu_nivel'] < 2){
   header('location:telaadm.php');
 }else{
  header('Location: telauser.php');
 }

// Este if acima pega a variavel que contem o valor referente ao nivel de usuario e ver se o valor é para admin ou user comum e depois redireciona cada um para sua página.

}

else{

unset ($_SESSION['login']);

unset ($_SESSION['senha']);

unset ($_SESSION['usu_nivel']);

header('location:paglogin.php'); 
// Aqui você não deveria dar um erro? porque se retornotou menor as linhas da consulta retornou um numero menor que 1 ou seja 0(zero) é por que não tem nenhum usuario com esses dados, ai você em vez de jogar pra página de login, você tá jogando ele para a página de usuario comum


}




?>

Não sei se vai funcionar do jeito esperado, se funcionar visa :)

 

eu aconselho a você fazer uma página php para cada coisa que você vai usar, depois usa include no arquivo pricipal, dai é só você fazer uma verificação na variavel do nivel de usuario para saber se vai ou não dá include em um arquivo, assim não precisa de uma página para cada nivel de usuario e consegue limitar o acesso

 

um exemplo:

 

digamos que você tem um arquivo que vai criar alguma coisa,mas você não pode dar include nele de qualquer jeito, pq ai os dois niveis vão ver e usar, o que você tem que fazer é um if para saber se vai ou não dar include, assim

<?php
  session_start('login');

  if(!isset($_SESSION)){
   header('Location: index.php');
  }

  if($_SESSION['usu_nivel'] = 1){
    include("criar_alguma_coisa.php");
  }

?>

Lembrando que se já abriu a session não precisa fazer dnv pq da erro

Compartilhar este post


Link para o post
Compartilhar em outros sites
session_start();


$login = $_POST['login'];

$senha = $_POST['senha'];


$con = mysql_connect("127.0.0.1", "root", "vertrigo") or die ("Sem conexao com o servidor");

$select = mysql_select_db("controlfrequenciaescolar") or die ("Sem acesso ao DB. Entre em contato com o Administrador");


$result = mysql_query("SELECT * FROM `USUARIOS` WHERE `USUARIO` = '$login' AND `SENHA` = '$senha'");


if(mysql_num_rows ($result) > 0)

{

$usuario = mysql_fetch_assoc($result);

$_SESSION['login'] = $login;

$_SESSION['senha'] = $senha;

$_SESSION['usu_nivel'] = $usuario['usu_nivel'];

 if($usuario['usu_nivel'] < 2 || $_SESSION['usu_nivel'] < 2){
   header('location:telaadm.php');
 }else{
  header('Location: telauser.php');
 }

// Este if acima pega a variavel que contem o valor referente ao nivel de usuario e ver se o valor é para admin ou user comum e depois redireciona cada um para sua página.

}

else{

unset ($_SESSION['login']);

unset ($_SESSION['senha']);

unset ($_SESSION['usu_nivel']);

header('location:paglogin.php'); 
// Aqui você não deveria dar um erro? porque se retornotou menor as linhas da consulta retornou um numero menor que 1 ou seja 0(zero) é por que não tem nenhum usuario com esses dados, ai você em vez de jogar pra página de login, você tá jogando ele para a página de usuario comum


}




?>

Não sei se vai funcionar do jeito esperado, se funcionar visa :)

 

eu aconselho a você fazer uma página php para cada coisa que você vai usar, depois usa include no arquivo pricipal, dai é só você fazer uma verificação na variavel do nivel de usuario para saber se vai ou não dá include em um arquivo, assim não precisa de uma página para cada nivel de usuario e consegue limitar o acesso

 

um exemplo:

 

digamos que você tem um arquivo que vai criar alguma coisa,mas você não pode dar include nele de qualquer jeito, pq ai os dois niveis vão ver e usar, o que você tem que fazer é um if para saber se vai ou não dar include, assim

<?php
  session_start('login');

  if(!isset($_SESSION)){
   header('Location: index.php');
  }

  if($_SESSION['usu_nivel'] = 1){
    include("criar_alguma_coisa.php");
  }

?>

Lembrando que se já abriu a session não precisa fazer dnv pq da erro

 

Muito obrigada pela ajudaa...

Agora deu certo e tb consegui fazer a pagina de logout que e bem facil...

 

Gostaria de incluir um script de aviso quando o usuario inserir os dados incorretos no login, como faço?

 

Gostaria tambem de fazer isso no logout, pergunto tipo "Tem certeza que deseja sair do sistema?"..

 

Obrigada pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para dá um aviso você pode voltar uma variável do tipo string por $_GET falando qual foi o error, por exemplo

session_start();


$login = $_POST['login'];

$senha = $_POST['senha'];


$con = mysql_connect("127.0.0.1", "root", "vertrigo") or die ("Sem conexao com o servidor");

$select = mysql_select_db("controlfrequenciaescolar") or die ("Sem acesso ao DB. Entre em contato com o Administrador");


$result = mysql_query("SELECT * FROM `USUARIOS` WHERE `USUARIO` = '$login' AND `SENHA` = '$senha'");


if(mysql_num_rows ($result) > 0)

{

$usuario = mysql_fetch_assoc($result);

$_SESSION['login'] = $login;

$_SESSION['senha'] = $senha;

$_SESSION['usu_nivel'] = $usuario['usu_nivel'];

header('location:telaadm.php');

}

else{

unset ($_SESSION['login']);

unset ($_SESSION['senha']);

unset ($_SESSION['usu_nivel']);

header('location:telauser.php?error=STRING'); // Onde tem String você bota o erro que quer exibir, por exemplo: Seus dados estão incorretos.


}




?>

ai na página de login, você faz o seguinte

<body>

<?php if(isset($_GET['error'])){
         echo "<p class='error'>".$_GET['error']."</p>";
      }
?>
// O que essa parte do código faz é pegar a variavel de erro que você retornou e exibir ela dentro de uma tag P com uma classe chamada error que você pode tratar no css mesmo que não tenha error sendo ixibido, você apenas deixa o css pronto para quando um erro for retornado, você pode mudar a tag para qualquer uma que queira, a classe pode mudar de nome tbm, mais lembre-se de setar no css a classe que vc botou direito.


<form method="post" action="ope.php" >
<div id="login-box">
        <div id="login-box-interno">
          <div class="imagem">
           

             <div id="login-box-label">
              Login
             </div>
            
              
              <img src="digital.jpg" alt="titulo" />
              
            
              <div class="input-div"  style="text-align:right" id="senha">
              Senha:
             <input type="password" name="senha" />
             
              </div>
              
              
             
             <div class="input-div" type="text"  style="text-align:right" id="login">
              Login:
             <input type="text" name="login" />
        
             </div>
            
             
             <div id="botoes">
            
            
             <div align="right"><input type="submit" value="Login" id="submit" /> </div>
            
              
              <div id="esqueceu-senha"><a href="esqueci.html">Esqueceu sua senha?</a></div>
            </div>
      </div>
 </div>
 

 </form>
</body>

Uma outra opção é criar um sessão com erros e depois é só verificar na index.php se tem alguma session aberta e o erro, segue exemplo:

session_start();


$login = $_POST['login'];

$senha = $_POST['senha'];


$con = mysql_connect("127.0.0.1", "root", "vertrigo") or die ("Sem conexao com o servidor");

$select = mysql_select_db("controlfrequenciaescolar") or die ("Sem acesso ao DB. Entre em contato com o Administrador");


$result = mysql_query("SELECT * FROM `USUARIOS` WHERE `USUARIO` = '$login' AND `SENHA` = '$senha'");


if(mysql_num_rows ($result) > 0)

{

$usuario = mysql_fetch_assoc($result);

$_SESSION['login'] = $login;

$_SESSION['senha'] = $senha;

$_SESSION['usu_nivel'] = $usuario['usu_nivel'];

header('location:telaadm.php');

}

else{

unset ($_SESSION['login']);

unset ($_SESSION['senha']);

unset ($_SESSION['usu_nivel']);

session_start("error_login");

$_SESSION['error'] = "Seus dados estão incorretos, tente novamente";
// Aqui você criou uma sessão e armazenou o error na variavel $_SESSION['error'];

header('location:telauser.php'); 


}




?>

Agora você faz a mesma coisa lá no index.php que você fez no exemplo anterior, apenas mude $_GET['error'] para $_SESSION['error']; quando a session não for mais necessária destrua ela.

 

OBS: não sei se vai funcionar como esperado esse exemplo da session;

 

 

O ultimo que vou falar é de voltar uma variavel por get tbm, só que com o id do error onde você vai tratar o error no index.php a partir do id dele, assim

session_start();


$login = $_POST['login'];

$senha = $_POST['senha'];


$con = mysql_connect("127.0.0.1", "root", "vertrigo") or die ("Sem conexao com o servidor");

$select = mysql_select_db("controlfrequenciaescolar") or die ("Sem acesso ao DB. Entre em contato com o Administrador");


$result = mysql_query("SELECT * FROM `USUARIOS` WHERE `USUARIO` = '$login' AND `SENHA` = '$senha'");


if(mysql_num_rows ($result) > 0)

{

$usuario = mysql_fetch_assoc($result);

$_SESSION['login'] = $login;

$_SESSION['senha'] = $senha;

$_SESSION['usu_nivel'] = $usuario['usu_nivel'];

header('location:telaadm.php');

}

else{

unset ($_SESSION['login']);

unset ($_SESSION['senha']);

unset ($_SESSION['usu_nivel']);

header('location:telauser.php?error_id=1');
// Aqui você tá mandando o id do error. que vamos tratar no index.php

}




?>

Agora no index.php você precisa fazer o sequinte:

<?php
 if($_GET['error_id']){
   switch($_GET['error_id']){
     case "1":
        echo "<p class='error'>Seus dados estão incorretos</p>";
     break;

     case "2":
       echo "<p class='error'>Impossível verificar seus dados</p>";
     break; 
   }
 }

?>

Você também pode juntar este exemplo com o da session e fazer um só

 

 

 

 

 

 

 

Para perguntar se o usuario deseja sair mesmo do site você pode fazer com ajax ou se n quiser pode ser só com php mesmo. recomendo com ajax, mas se n quer ficar dependendo de javascript para fazer isso então, faz apenas com php mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.