Upload
rodrigo-m-correia
View
526
Download
2
Embed Size (px)
Citation preview
Notícias Entretenimento Esportes Vídeos Rede Record E-mail
(0) MEU CONTEÚDO / LOGIN / CADASTRE-SE
Categorias (0) Meu conteúdo Apostilas Colabore Cursos Dicas Empresas Especiais Guia do Windows 8(novo)
Mais
Oficina da Net » Artigos » Desenvolvimento » Programação » PHP
Por: Henrique Martins Leal | Data: 19/07/2011
Olá pessoal, recentemente tive que fazer um sistema de login em codeigniter e resolvi disponiblizar
aqui. É um sistema bem simples que utiliza:
Banco de dados MySQL;
Framework CodeIgniter;
Geralmente utilizo a IDE Netbeans para programar em PHP;
Veja que a tabela de registro de usuários é a mais simples possível
CREATE TABLE IF NOT EXISTS membership (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(32) NOT NULL,
password varchar(32) NOT NULL,
status tinyint(1) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Você pode adicionar mais dados na sua tabela, como nome, telefone, endereço essas coisas, mas
o básico é isso ai
* Não reparem mas gosto de todos os nome em ingles galera =)
Model: membership_model.phpLogo após isso precisamos criar um model com o nome membership_model.php dentro da pasta
application/models com o seguinte conteúdo:
<?php
class Membership_model extends CI_Model {
# VALIDA USUÁRIO
function validate() {
Sistema de Login em PHP com CodeigniterOlá pessoal, recentemente tive que fazer um sistema de login em codeigniter e resolvi disponiblizaraqui. É um sistema bem simples que utiliza: Banco de dados MySQL; Framework CodeIgniter;Geralmente utilizo a IDE Netbeans para programar em PHP;
Siga-nos nas redes sociais »
Novos Posts »
21:00 Cientistas usam DNA para armazenardados
20:30 Nokia deu adeus ao Symbian
15:34 Google Imagens recebe nova interface
14:28 Buscapé anuncia serviços de cálculo defrete e compra rápida em seu ...
10:23 Nexus 7 já é vendido no Brasil... pelotriplo do preço
Melhores em PHP »
17/10/2007
Colocando um formulário decontato em seu site, usando ...
03/09/2007
Montando Álbum de fotos em php
04/12/2007
Formulário de Email em PHP comresposta automática
12/08/2011
Criando um cadastro de clientecom PHP e MySQL
12/07/2008
PHP :: Enviando e-mailautenticado
Siga os tópicos »
Xbox10 seguidores
Mac OSX11 seguidores
Android166seguidores
Foxconn6 seguidores
Kindle4 seguidores
Joomla12 seguidores
Workflows em SharePoint
www.iteris.com.br
A melhor equipe dedesenvolvimento. Conte com a
empresa mais capacitada
Microsoft confirma: MSN vai acabar e usuáriosmigrarão para o Skype em 15 de março
DESTAQUE
As informações foram úteis? Porfavor, nos ajude com um +1 noGoogle, clique no botão abaixo:
+11 Recomende isto no Google
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$this->db->where('status', 1); // Verifica o status do usuário
$query = $this->db->get('membership');
if ($query->num_rows == 1) {
return true; // RETORNA VERDADEIRO
}
}
# VERIFICA SE O USUÁRIO ESTÁ LOGADO
function logged() {
$logged = $this->session->userdata('logged');
if (!isset($logged) || $logged != true) {
echo 'Voce nao tem permissao para entrar nessa pagina. <a href="http://www.oficinadanet.com.br/login">Efetuar Login</a>';
die();
}
}
}
Procurei colocar o mais comentado possível mas em resumo o método validate() valida retorna True
apenas se encontrar uma linha com username, password igual ao digitado no formulário e claro o
status ainda deve ser 1 para o usuário estar ativo.
Controller: login.phpBom agora para colocar a mão na massa devemos configurar algumas coisas no CodeIgniter. As
configurações do CodeIgniter ficam dentro da pasta application/config
- No arquivo autoload.php devemos chamar as libraries: 'database' e 'session'
Uma novidade do CodeIgniter 2.0 é que agora as sessões são criptografadas e precisamos de uma
chave de criptografica para colocar no arquivo config.php eu sempre uso uma string randomica
gerada pelo site: http://www.random.org/strings/
Exemplo:
// Seu arquivo config.php deve ficar mais ou menos assim
$config['encryption_key'] = 'ZgHFyY7pCu8LPWpFEeRs';
Então iremos criar uma pasta chamada admin dentro de application/controllers/login. No arquivo
routes.php dentro da pasta application/config/routes.php, vamos adicionar um controlador default
para para a pasta login:
// Adicionar a seguinte rota para url login
$route['login'] = 'login/login';
* Note que ja efetuo as validações para o campo username e password não sejam mandados em
branco.
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Login extends CI_Controller {
function __construct() {
parent::__construct();
}
Lulz Security8 seguidores
Wii3 seguidores
Mais comentados »
Você gostaria de trabalhar numlugar assim, tipo o Google? 5
A volta do Megaupload 5
Oracle cria correção para errograve do Java 4
Cursos Online Oficina da Net
MATRICULE-SE
por: R$ 80,00
Curso de PHPintermediário
3x de R$ 26,67
MATRICULE-SE
por: R$ 0,00
Curso de Vídeo Lightbox
3x de R$ 0,00
MATRICULE-SE
por: R$ 90,00
Curso de PHP
3x de R$ 30,00
function index() {
// VALIDATION RULES
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_error_delimiters('<p class="error">', '</p>');
// MODELO MEMBERSHIP
$this->load->model('membership_model', 'membership');
$query = $this->membership->validate();
if ($this->form_validation->run() == FALSE) {
$this->load->view('login/login_view');
} else {
if ($query) { // VERIFICA LOGIN E SENHA
$data = array(
'username' => $this->input->post('username'),
'logged' => true
);
$this->session->set_userdata($data);
redirect('login/area_restrita');
} else {
redirect($this->index());
}
}
}
}
Views: login_view.php e area_restrita_view.phpDentro da pasta de views do Codeigniter iremos criar uma pasta como o nome de login também
para separar os arquivos do site dos arquivos da área de administração. Dentro dessa pasta
teremos um arquivo como o nome login_view.php que será o formulário de login e também é o
default da classe login então é o primeiro arquivo a ser chamado.
<!DOCTYPE html>
<html>
<head>
<title>Área Restrita</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
body {background: #FFF; font-family: Verdana; font-size: 9pt; }
#form_login { width: 500px; margin: 0 auto; padding: 20px; background: #F2F2F2; border: 1px solid #B7B7B7; }
label { display: block; margin-bottom: 0.3em; }
input[type=text], input[type=password] { border: 1px solid #666; display: block; margin-bottom: 1em; padding: 2px; width: 100%; }
input[type=text], input[type=password] { display: block; }
h1 { margin: 0 0 1em 0; text-align: center; }
.error { background: none repeat scroll 0 0 #FBE6F2; border: 1px solid #D893A1; padding: 5px; }
</style>
</head>
<body>
<h1>Tela de Login</h1>
<div id="form_login">
<?php echo validation_errors(); ?>
<?php
echo form_open();
echo form_label('Username', 'username');
echo form_input('username', '');
echo form_label('Password', 'password');
echo form_password('password', '');
echo form_submit('submit', 'Entrar no sistema');
?>
<?php form_close(); ?>
</div>
</body>
Henrique Martins Leal / Apaixonado por web, linux, software livre e metodologias ágeis, PHP/CodeIgniter ePython/Django. Acadêmico de sist. de informação e webdeveloper /
</html>
Notem que esse é um formulário de login bem simples coloquei um pouquinho de CSS pra não ficar
tão feio assim. Bom esse se você configurou tudo certinho agora quando você efetuar um login no
site ele irá redirecionar você para o controlador area_restrita.php que chama a view
area_restrita_view.php. No controlador devemos colocar uma proteção para caso alguém saiba a url
em questão não possa visualizar o conteúdo e seja redirecionada para outro lugar.
Controlador: area_restrita.php
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Area_restrita extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('membership_model', 'membership');
$this->membership->logged();
}
public function index() {
$this->load->view('login/area_restrita_view');
}
}
Bom aqui é simples no construtor da classe chamamos o model membership e usamos o método
logged() que verifica a sessão e permite ou não o a execução desse controlador. Só falta agora a
area_restrita_view().
View: area_restrita_view
<!DOCTYPE html>
<html>
<head>
<title>Área Restrita</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Área Restrita</h1>
</body>
</html>
Nesse ponto se tudo deu certo você pode criar a área de administração para o seu site =). Esse é
mais um tutorial pra quem já sabe programar e tem um médio conhecimento de #Codeigniter, não
foi explicado conceitos sobre como funciona #MVC nem sobre a estrutura do #Codeigniter, mas dá
pra se virar bem ;)
Abraços
Mais sobre: php, programação, codeigniter
Tópicos em destaque
Apostilas grátis, Baixar músicas da internet, Concurso Correios 2013, Fluxograma, MSN para Skype
Copyright 2012 Oficina da Net. Todos os direitos reservados. Anuncie Contato Equipe Sobre Envie sua pauta
FOLLOW:
Guia doPHPSEGUIR
63 seguidores
COMPARTILHE:
SeguirSeguir
Curtir 9
11
VOCÊ PODE GOSTAR DESTES POSTS RELACIONADOS:
Colocando umformulário de contatoem seu site, usando o...
Montando Álbum defotos em php
Formulário de Email emPHP com respostaautomática
Criando um cadastro decliente com PHP eMySQL
0 COMENTÁRIO (COMENTE VOCÊ TAMBÉM)
É necessário login para comentar. Faça login com: OFICINA DA NET ou
Postar no Facebook
ShareShare
Atari pede falência nos EUAAtari pede falência nos EUA Intel anuncia abandono daIntel anuncia abandono da
fabricação de placas-mãefabricação de placas-mãePerigo na rede: aprenda aPerigo na rede: aprenda a
identificar ameaças virtuaisidentificar ameaças virtuais
e proteger-see proteger-se
Migrar para o Windows 8Migrar para o Windows 8
ficará mais caro emficará mais caro em
fevereirofevereiro
Cientistas usam DNA paraCientistas usam DNA para
armazenar dadosarmazenar dados