quinta-feira, 25 de novembro de 2010

Utilização de Sessão em PHP

Utilização de Sessão em PHP



Uma coisa que tenho utilizado nas minhas programações em PHP é o acesso restrito a certas páginas. Como mencionei no meu tutorial sobre Campos interessantes em um banco de dados MySQL, eu gosto de colocar um campo de "level" (nível) de usuário no banco de dados de membros. Assim fica fácil liberar ou restringir de acordo com o nível do usuário.

Na programação em PHP eu utilizo a variável $_SESSION para salvar informações sobre a pessoa que está visitando o site. Se o usuário não efetuou o login, não tem informações na variável $_SESSION. Se fez o login, eu salvo informações do usuário, tipo nome completo, nível e data da última visita.

No início de cada página PHP, é colocado o seguinte código:
if(session_id() == "") session_start(); # Isto garante que a sessão seja inicializada
if(!isset($_SESSION['user']) ) {
    if(isset($_POST['user']) && isset($_POST['password'])) {
        $row['user'] = $_POST['user'];
        $password = $_POST['password'];
        $crypt_password = crypt($password, $row['user']);
        $read = user_read($row);
        if(($read == 1) && ($row['password'] == $crypt_password)) {
            $_SESSION['user_level'] = $row['user_level'];
            if($row['user_level'] > 0) {
                $_SESSION['user_is_logged_in'] = true;
                $_SESSION['user'] = $row['user'];
                $_SESSION['full_name'] = $row['full_name'];
                $_SESSION['last_date'] = $row['last_date'];
            }
            $row[last_date] = date("Y/m/d");
            user_write($row);
        }
    }
}

Todo código após a primeira linha pode ser colocado em uma rotina, inclusive em um outro arquivo para ser acessado por todas as páginas do site.

Note que após a identificação do usuário, são salvos vários dados do usuário na variável $_SESSION. Também é importante observar que primeiro é salvo na variável $_SESSION o valor da última visita, depois é atualizado para o dia de hoje, no banco de dados.

Veja também que a função user_read($row) lê os dados do usuário do banco de dados, e a função user_write($row) escreve os dados do usuário no banco de dados.

Após a execução dos códigos acima, podemos executar códigos condicionais dependendo do nível do usuário, da seguinte maneira:
if($_SESSION['user_level'] >= 1) {
   echo("Usuário autenticado!");
}

Nenhum comentário:

Postar um comentário