Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- config/autoload.php
- $autoload['libraries'] = array('database', 'session'); // acrescentar session
- $autoload['helper'] = array('url', 'sessao'); // acrescentar url, sessao
- helpers/sessao_helper.php
- <?php
- /**
- * Colocar aqui funções para ajudar com coisas de sessão
- * do género logged in, ver se é admin, redirecionar para página login
- * caso não esteja logado, etc
- */
- if(!function_exists('logged_in')) {
- function logged_in()
- {
- $ci = get_instance();
- return $ci->session->logged_in === true;
- }
- }
- if(!function_exists('forcar_log_in')) {
- function forcar_log_in()
- {
- if(!logged_in())
- {
- $ci = get_instance();
- $ci->session->pagina = current_url();
- redirect(base_url('auth/login'));
- }
- }
- }
- controller/Auth.php
- <?php
- class Auth extends CI_Controller
- {
- /**
- * Mostra página login
- */
- public function login()
- {
- $this->load->library('form_validation');
- $this->load->view('login');
- }
- /**
- * Faz login através do post da form login
- */
- public function do_login()
- {
- $this->load->library('form_validation');
- $this->load->model('utilizadores_bd');
- $this->form_validation->set_rules([
- ['field' => 'username', 'label' => 'Username', 'rules' => 'required'],
- ['field' => 'password', 'label' => 'Password', 'rules' => 'required'],
- ]);
- if(!$this->form_validation->run()) {
- // Erros na validação
- return $this->load->view('login');
- }
- $user = $this->utilizadores_bd->get_user_login($_POST['username'], $_POST['password']);
- if(!$user) {
- // login errado! sair com view e mostrar erros na view
- return $this->load->view('login', [
- 'erro_login' => true,
- ]);
- }
- $this->session->logged_in = true;
- $this->session->user = $user;
- $pagina = $this->session->pagina;
- // redirect para a página anterior ou inicial (ou outra predefinida -> eg base_url('conta')
- redirect($pagina ?: base_url());
- }
- /**
- * Faz logout
- */
- public function do_logout()
- {
- $this->session->logged_in = false;
- $this->session->unset_userdata('user');
- // redirecionar para endereço "/" (inicial)
- redirect(base_url());
- }
- }
- models/Utilizadores_bd.php
- <?php
- class Utilizadores_bd extends CI_Model
- {
- /**
- * Devolve utilizador caso existe
- *
- * @param $username
- * @param $password
- * @return stdClass
- */
- public function get_user_login($username, $password)
- {
- $sql = 'select * from utilizadores where username = ? and password = ?';
- return $this->db->query($sql, [$username, $password])->row();
- }
- }
- views/login.php
- <?php if(strlen(validation_errors()) > 0): ?>
- <div style="border: 1px solid red; margin: 10px">
- <?= validation_errors(); ?>
- </div>
- <?php endif; ?>
- <?php if(isset($erro_login)): ?>
- <div style="border: 1px solid red; margin: 10px">
- O username ou password estão errados!
- </div>
- <?php endif; ?>
- <form action="<?= base_url('/auth/do_login'); ?>" method="post">
- <label for="username">Username: </label>
- <input type="text" name="username" value="<?= set_value('username'); ?>" required />
- <label for="password">Password: </label>
- <input type="password" name="password" required />
- <input type="submit" value="Efetuar Login" />
- </form>
- ///////////////////////
- (exemplo utilização)
- controller/Test.php
- class Test extends CI_Controller
- {
- // BÓNUS: forçar login a todas as páginas deste controller
- /*
- public function __construct()
- {
- parent::__construct();
- forcar_log_in();
- }
- */
- public function index()
- {
- forcar_log_in();
- echo 'Só aparece se estiver logado';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement