Eu gostaria de restringir o acesso à algumas páginas para administradores. Porem não estou sabendo criar as sessões.
Login.php
<?php class Login { private $db_connection = null; public $errors = array(); public $messages = array(); public function __construct() { session_start(); if (isset($_GET["logout"])) { $this->doLogout(); } elseif (isset($_POST["login"])) { $this->dologinWithPostData(); } } private function dologinWithPostData() { if (empty($_POST['Username'])) { $this->errors[] = "Usuário estava vazio."; } elseif (empty($_POST['Password'])) { $this->errors[] = "Senha estava vazio."; } elseif (!empty($_POST['Username']) && !empty($_POST['Password'])) { $this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); $Password = $_POST['Password']; if (!$this->db_connection->set_charset("utf8")) { $this->errors[] = $this->db_connection->error; } if (!$this->db_connection->connect_errno) { $Username = $this->db_connection->real_escape_string($_POST['Username']); $sql = "SELECT Username, email, Password FROM accounts WHERE Username = '" . $Username . "' OR email = '" . $Username . "';"; $result_of_login_check = $this->db_connection->query($sql); if ($result_of_login_check->num_rows == 1) { $result_row = $result_of_login_check->fetch_object(); if ( hash( 'whirlpool', $Password ) == $result_row->Password ){ $_SESSION['Username'] = $result_row->Username; $_SESSION['email'] = $result_row->email; $_SESSION['user_login_status'] = 1; } else { $this->errors[] = "Senha incorreta. Tente novamente."; } } else { $this->errors[] = "Este usuário não existe."; } } else { $this->errors[] = "Problema de conexão de banco de dados."; } } } public function doLogout() { $_SESSION = array(); session_destroy(); $this->messages[] = "Você foi desconectado."; } public function isUserLoggedIn() { if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1) { return true; } return false; } }
Eu tentei fazer desta forma, porem não obtive resultado.
<?php if ($result_of_login_check->num_rows == 1) { $result_row = $result_of_login_check->fetch_object(); if ( hash( 'whirlpool', $Password ) == $result_row->Password ){ $_SESSION['Username'] = $result_row->Username; $_SESSION['email'] = $result_row->email; $_SESSION['PAdministrador'] = $result_row->PAdministrador; //Adicionei está sessão. $_SESSION['user_login_status'] = 1; } else { $this->errors[] = "Senha incorreta. Tente novamente."; } } ?>
No topo das páginas que quero restringir o acesso eu adiciono este código.
if($_SESSION['PAdministrador'] <= 0){ header('location:./'); }
Porem se for maior que zero ele não permite o acesso, ele só fica redirecionando para o index, Deixando aquela página sem acesso algum.
Alguém pode me ajudar com isso por favor.