Advertisement
barricas

AI2 - LoginCI

May 20th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. config/autoload.php
  2.  
  3. $autoload['libraries'] = array('database', 'session'); // acrescentar session
  4.  
  5. $autoload['helper'] = array('url', 'sessao'); // acrescentar url, sessao
  6.  
  7. helpers/sessao_helper.php
  8.  
  9. <?php
  10.  
  11. /**
  12. * Colocar aqui funções para ajudar com coisas de sessão
  13. * do género logged in, ver se é admin, redirecionar para página login
  14. * caso não esteja logado, etc
  15. */
  16.  
  17. if(!function_exists('logged_in')) {
  18.  
  19. function logged_in()
  20. {
  21. $ci = get_instance();
  22.  
  23. return $ci->session->logged_in === true;
  24. }
  25. }
  26.  
  27. if(!function_exists('forcar_log_in')) {
  28.  
  29. function forcar_log_in()
  30. {
  31. if(!logged_in())
  32. {
  33. $ci = get_instance();
  34.  
  35. $ci->session->pagina = current_url();
  36. redirect(base_url('auth/login'));
  37. }
  38. }
  39. }
  40.  
  41. controller/Auth.php
  42.  
  43. <?php
  44.  
  45. class Auth extends CI_Controller
  46. {
  47. /**
  48. * Mostra página login
  49. */
  50. public function login()
  51. {
  52. $this->load->library('form_validation');
  53. $this->load->view('login');
  54. }
  55.  
  56. /**
  57. * Faz login através do post da form login
  58. */
  59. public function do_login()
  60. {
  61. $this->load->library('form_validation');
  62. $this->load->model('utilizadores_bd');
  63.  
  64. $this->form_validation->set_rules([
  65. ['field' => 'username', 'label' => 'Username', 'rules' => 'required'],
  66. ['field' => 'password', 'label' => 'Password', 'rules' => 'required'],
  67. ]);
  68.  
  69. if(!$this->form_validation->run()) {
  70. // Erros na validação
  71. return $this->load->view('login');
  72. }
  73.  
  74. $user = $this->utilizadores_bd->get_user_login($_POST['username'], $_POST['password']);
  75.  
  76. if(!$user) {
  77. // login errado! sair com view e mostrar erros na view
  78. return $this->load->view('login', [
  79. 'erro_login' => true,
  80. ]);
  81. }
  82.  
  83. $this->session->logged_in = true;
  84. $this->session->user = $user;
  85.  
  86. $pagina = $this->session->pagina;
  87.  
  88. // redirect para a página anterior ou inicial (ou outra predefinida -> eg base_url('conta')
  89. redirect($pagina ?: base_url());
  90. }
  91.  
  92. /**
  93. * Faz logout
  94. */
  95. public function do_logout()
  96. {
  97. $this->session->logged_in = false;
  98. $this->session->unset_userdata('user');
  99.  
  100. // redirecionar para endereço "/" (inicial)
  101. redirect(base_url());
  102. }
  103. }
  104.  
  105. models/Utilizadores_bd.php
  106.  
  107. <?php
  108.  
  109. class Utilizadores_bd extends CI_Model
  110. {
  111. /**
  112. * Devolve utilizador caso existe
  113. *
  114. * @param $username
  115. * @param $password
  116. * @return stdClass
  117. */
  118. public function get_user_login($username, $password)
  119. {
  120. $sql = 'select * from utilizadores where username = ? and password = ?';
  121.  
  122. return $this->db->query($sql, [$username, $password])->row();
  123. }
  124. }
  125.  
  126. views/login.php
  127.  
  128. <?php if(strlen(validation_errors()) > 0): ?>
  129. <div style="border: 1px solid red; margin: 10px">
  130. <?= validation_errors(); ?>
  131. </div>
  132. <?php endif; ?>
  133.  
  134. <?php if(isset($erro_login)): ?>
  135. <div style="border: 1px solid red; margin: 10px">
  136. O username ou password estão errados!
  137. </div>
  138. <?php endif; ?>
  139.  
  140. <form action="<?= base_url('/auth/do_login'); ?>" method="post">
  141. <label for="username">Username: </label>
  142. <input type="text" name="username" value="<?= set_value('username'); ?>" required />
  143.  
  144. <label for="password">Password: </label>
  145. <input type="password" name="password" required />
  146.  
  147. <input type="submit" value="Efetuar Login" />
  148. </form>
  149.  
  150. ///////////////////////
  151. (exemplo utilização)
  152.  
  153. controller/Test.php
  154.  
  155. class Test extends CI_Controller
  156. {
  157. // BÓNUS: forçar login a todas as páginas deste controller
  158. /*
  159. public function __construct()
  160. {
  161. parent::__construct();
  162.  
  163. forcar_log_in();
  164. }
  165. */
  166.  
  167. public function index()
  168. {
  169. forcar_log_in();
  170.  
  171. echo 'Só aparece se estiver logado';
  172. }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement