Login and Password with permission level in php

-1

I am putting together a system to facilitate communication and support for the representatives of the company where I work. The rest of the page already exists, but I need to get each type of user directed to a different page.

One of the biggest problems I'm facing is that the message always appears that mysql_connect no longer works and should be replaced with PDO mode.

Does anyone here help me?

Follow the code

<?php

// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
    header("Location: index.php"); exit;
}

// Tenta se conectar ao servidor MySQL
mysqli_connect('localhost', 'root', '') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysqli_select_db('novosistema') or trigger_error(mysql_error());

$usuario = mysqli_real_escape_string($_POST['usuario']);
$senha = mysqli_real_escape_string($_POST['senha']);

// Validação do usuário/senha digitados
$sql = "SELECT 'id', 'nome', 'nivel' FROM 'usuarios' WHERE ('usuario' = '". $usuario ."') AND ('senha' = '". sha1($senha) ."') AND ('ativo' = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
    // Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
    echo "Login inválido!"; exit;
} else {
    // Salva os dados encontados na variável $resultado
    $resultado = mysql_fetch_assoc($query);

    // Se a sessão não existir, inicia uma
    if (!isset($_SESSION)) session_start();

    // Salva os dados encontrados na sessão
    $_SESSION['UsuarioID'] = $resultado['id'];
    $_SESSION['UsuarioNome'] = $resultado['nome'];
    $_SESSION['UsuarioNivel'] = $resultado['nivel'];

    // Redireciona o visitante
    header("Location: restrito.php"); exit;
}

?>
    
asked by anonymous 13.02.2015 / 17:01

2 answers

0
  

mysql_connect no longer works and should be replaced with PDO mode.

We should not use this function anymore, simply because PHP has more sophisticated and more secure methods. besides mysql having limitations you can use mysqli that it is an improved method. in stackoverflow we have topics addressing this issue: Why we should not use mysql-type functions.

This link explains the benefits of using the PDO class.

Now let's talk a bit about logic. you need to redirect the user to a specific page according to their level of access. you can simply do a scan

se  sessãonivel == administrador então acesse pagina x
se  sessãonivel == cliente entao acesse pagina y.

Create a function that verifies that user x is accessing the page y and redirects to the correct page.

    
13.02.2015 / 17:21
0

Dude I suggest that you update access with the PDO library, which is much easier and safer. If you are accustomed to programming PHP OO , use classes to get the values of $_SESSION .

Here is an example that I used for login validation with PDO

<?php
// Conexão Com o banco de dados
// INCLUI A CLASSE PARA CONEXÃO COM BANCO DE DADOS
    function __autoload($classe){
        if(file_exists("pdo/{$classe}.class.php")){
            require_once "pdo/{$classe}.class.php";
        }
    }

// Inicia sessões
session_start();

// Recupera o login
$login = isset($_POST["login"]) ? (trim($_POST["login"])) : FALSE;
// Recupera a senha, a criptografando em MD5
$senha = isset($_POST["senha"]) ? md5(trim($_POST["senha"])) : FALSE;

// Usuário não forneceu a senha ou o login
    if(!$login || !$senha){  
        header("Location: erro_login.php");
    exit;
    }

$Consulta_Login     =   "SELECT id, nome, sobre_nome, data_nascimento, senha, resgata_senha, email, estado, cidade, iurd
                            FROM login_usuario
                        WHERE email = '" . $login . "'";

        $PDO    =   ConexaoBanco::open();
        $result =   $PDO->query($Consulta_Login);

        if($result->rowCount()){
            $linhas = $result->fetch(PDO::FETCH_OBJ);

            if(!strcmp($senha, $linhas->senha)){
                $_SESSION["id_login_usuario"]   =   $linhas->id;
                $_SESSION["confirma_cadastro"]  =   "0";

                    switch ($linhas->nome) {    

                        default;
                            //header("Location: loading.html");
                            header("Location: loading.php");
                        break;

                    }
                    exit;
            }else{
                // Senha inválida
                    header("Location: erro_login.php");
                exit;
            }

        }else{
            //Login Invalido
                header("Location: erro_login.php");
            exit;
        }   

        $PDO    =   null;


?>

With regard to access level, there are several ways, since you have entered a level field in the database, such as Switch to have actions according to the levels.

    
13.02.2015 / 17:24