PI S2 DSW II DouglasARS: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Douglas
imported>Douglas
 
(28 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 3: Linha 3:
Olá Estudante,
Olá Estudante,


Nessa segunda semana vamos registras os participantes por equipes e o modelo conceitual escolhido. Vamos apresentar o próximo passo que é a criação das telas e conexão com banco de dados. Mas é muito importante lembrar que a modelagem de dados tem que estar feita e código SQL gerado para criação no banco de dados MySQL. As telas serão feitas ou preparadas de acordo com o sistema escolhido. É importante rever a instalação dos aplicativos utilizado no desenvolvimento LAMP ou WAMP (Linux/Windows, Apache, MySQL e PHP).  
Nessa segunda semana vamos registrar as equipes e o modelo conceitual escolhido. O próximo passo é a criação dos formulários (telas) e a conexão com o banco de dados. Lembre-se!  A modelagem de dados já deve ter sido realizada e o código SQL gerado para criação no banco de dados MySQL. Para essa atividade as telas/formulários serão feitas ou preparadas com HTML/PHP, de acordo com o sistema escolhido. Se a sua equipe tem alternativa ao modelo de desenvolvimento escolhido, entre em contato. É importante rever a instalação dos aplicativos utilizados no desenvolvimento de sistemas Web, como o LAMP ou WAMP (Linux/Windows, Apache, MySQL e PHP).  


Nota: Neste momento, não se preocupem com as cores e formatos de formulários, fontes e da própria tela. Utilizem os software que vocês praticaram nas unidades curriculares anteriores, como o próprio Netbeans. Aproveitem o que já tem pronto pois, senão, vão ter que criar tudo do zero.
Não se preocupem com as cores e formatos de formulários, fontes e da própria tela. Utilizem os softwares que vocês praticaram nas unidades curriculares anteriores, como o próprio Netbeans. Aproveitando o que já tem pronto você reduzirá o trabalho e não precisarão criar tudo do zero.


Boa programação!  
Boa programação!  
Linha 18: Linha 18:


*Registrar equipes e sistemas;
*Registrar equipes e sistemas;
*Apresentar a criação básica de telas, e;
*Apresentar a criação formulários;
*Acesso ao banco de dados MySQL.
*Acesso ao banco de dados MySQL.
=Equipes Registradas=
==Joinville==
*Edson, Antonio e Luciane - Tema: Aluguel de carros
*Francisco, José Luis e Kleber - Donativos para uma igreja
*Jorge - Reservas de Hotel.
==Tubarão==
Equipe 1:
Anderson, Bruno, Lucas e Marcos.
Tema: Reserva de hotéis.
Equipe 2:
Clailson, Mariselma, Mislaine e Talita.
Tema: Locadora de carros.
Equipe 3:
Emerson, Filipe e Fillipe.
Tema: Donativos para igreja.
==Laguna==
Grupo 1: Aluguel de Carros
:Marcos Paulo Vicente de Oliveira
:Karoline Dias Carvalho Dimiras
:Luana Gomes da Silva
:Luis Eduardo Ulyssea Rollin
Grupo 2: Doações
:Vander Ribeiro Figueiredo
:Jussara Nilsen Jerônimo
==Canelinha==
*Equipe 1: Ana Paula e Márcia;
*Equipe 2: Diego.


=Telas e banco de dados=
=Telas e banco de dados=


Os sistemas que foram propostos seguem abaixo:
Os sistemas propostos foram:


#Reservas em Hotéis
#Reservas em Hotéis
Linha 31: Linha 75:
É necessário, a partir do modelo conceitual, criar esse banco de dados fisicamente. Para isso você precisa ter redesenhado o modelo conceitual no MySQLWorkbench ou no DBDesigner, respeitando os aspectos da tradução para o português dos nomes de campos e relacionamentos entre as tabelas. O uso dos softwares e criação do banco de dados, você encontra na unidade curricular anterior. Como foi falado na apresentação da unidade, vamos utilizar o conhecimento adquirido nas unidade anteriores para a concepção de um sistema web completo.
É necessário, a partir do modelo conceitual, criar esse banco de dados fisicamente. Para isso você precisa ter redesenhado o modelo conceitual no MySQLWorkbench ou no DBDesigner, respeitando os aspectos da tradução para o português dos nomes de campos e relacionamentos entre as tabelas. O uso dos softwares e criação do banco de dados, você encontra na unidade curricular anterior. Como foi falado na apresentação da unidade, vamos utilizar o conhecimento adquirido nas unidade anteriores para a concepção de um sistema web completo.


O vídeo abaixo mostra como criar as telas incias e um acesso ao banco de dados. Isso você pode encontrar no material da unidade. Atentem que se trata apenas de um exemplo, porém, dá uma ideia de partida para o desenvolvimento do sistema de vocês.
O vídeo abaixo mostra como criar os formulários (telas) inicias e um acesso ao banco de dados. Você também pode encontrar essas orientações no material didático da unidade. Atentem! Esse se trata apenas de um exemplo e dá uma ideia de partida para o desenvolvimento do sistema de vocês.


https://www.youtube.com/watch?v=_TjHKWdOF94
:https://www.youtube.com/watch?v=_TjHKWdOF94


É importante verificar nesse vídeo, que se trata de um exemplo utilizando o Windows, porém facilmente adaptável para o Linux/Ubuntu.
Fique atento! O vídeo trata de um exemplo utilizando o Windows, porém facilmente adaptável para o Linux/Ubuntu.


=Como criar um sistema de login com PHP e MySQL=
=Como criar um sistema de login com PHP e MySQL=
Linha 42: Linha 86:




Antes de mais nada, é preciso que você já tenha um conhecimento prévio de HTML e, se possível, PHP e MySQL para tornar as coisas mais fáceis.
Antes de mais nada, é preciso que você já tenha conhecimento prévio de HTML e, se possível, PHP e MySQL para tornar as coisas mais fáceis.
Nosso sistema será bem simples: um arquivo chamado seguranca.php, que deverá ser incluído no topo do seu site (em todas as páginas) e que faz a conexão com o banco de dados e que possui algumas funções usadas para redirecionar o visitante para o formulário de login (login.php) caso ele não esteja logado.
Nosso sistema será bem simples: um arquivo chamado seguranca.php, que deverá ser incluído no topo do seu site (em todas as páginas), fazendo a conexão com o banco de dados, além de possuir algumas funções usadas para redirecionar o visitante para o formulário de login (login.php) caso ele não esteja logado.
Vamos ao trabalho:
Vamos ao trabalho:
O que iremos definir primeiro é a tabela usada para armazenar os usuários do sistema:
O que iremos definir primeiro é a tabela usada para armazenar os usuários do sistema:
Linha 57: Linha 101:
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
</pre>
</pre>
Execute esse bloco SQL no seu banco de dados para criar a tabela usada pelo sistema.
Depois disso, vamos ao formulário de login que você colocará dentro de um arquivo chamado login.php:
<pre>
<form method="post" action="valida.php">
  <label>Usuário</label>
  <input type="text" name="usuario" maxlength="50" />
 
  <label>Senha</label>
  <input type="password" name="senha" maxlength="50" />
 
  <input type="submit" value="Entrar" />
</form>
</pre>
Esse formulário, com apenas dois campos, manda pra página valida.php, que é um pequeno PHP que receberá os dados enviados pelo formulário, fará a validação deles e mandará o visitante ou pra página interna (index.php) ou de volta pra página de login (login.php).
Esse é o codigo fonte do arquivo valida.php:
<pre>
<?php
// Inclui o arquivo com o sistema de segurança
require_once("seguranca.php");
// Verifica se um formulário foi enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  // Salva duas variáveis com o que foi digitado no formulário
  // Detalhe: faz uma verificação com isset() pra saber se o campo foi preenchido
  $usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
  $senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';
  // Utiliza uma função criada no seguranca.php pra validar os dados digitados
  if (validaUsuario($usuario, $senha) == true) {
    // O usuário e a senha digitados foram validados, manda pra página interna
    header("Location: index.php");
  } else {
    // O usuário e/ou a senha são inválidos, manda de volta pro form de login
    // Para alterar o endereço da página de login, verifique o arquivo seguranca.php
    expulsaVisitante();
  }
}
</pre>
A estrutura do seu site, até esse ponto, deve estar dessa forma:
:../pasta_do_seu_site/index.php » Página intera a ser protegida
:../pasta_do_seu_site/login.php » Página com o formulário de login
:../pasta_do_seu_site/valida.php » Página que faz a validação dos dados do formulário
Agora vamos criar o arquivo seguranca.php na mesma pasta dos demais arquivos:
<pre>
<?php
/**
* Sistema de segurança com acesso restrito
*
* Usado para restringir o acesso de certas páginas do seu site
*
* @author Thiago Belem <contato@thiagobelem.net>
* @link http://thiagobelem.net/
*
* @version 1.0
* @package SistemaSeguranca
*/
//  Configurações do Script
// ==============================
$_SG['conectaServidor'] = true;    // Abre uma conexão com o servidor MySQL?
$_SG['abreSessao'] = true;        // Inicia a sessão com um session_start()?
$_SG['caseSensitive'] = false;    // Usar case-sensitive? Onde 'thiago' é diferente de 'THIAGO'
$_SG['validaSempre'] = true;      // Deseja validar o usuário e a senha a cada carregamento de página?
// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.
$_SG['servidor'] = 'localhost';    // Servidor MySQL
$_SG['usuario'] = 'root';          // Usuário MySQL
$_SG['senha'] = '';                // Senha MySQL
$_SG['banco'] = 'test';            // Banco de dados MySQL
$_SG['paginaLogin'] = 'login.php'; // Página de login
$_SG['tabela'] = 'usuarios';      // Nome da tabela onde os usuários são salvos
// ==============================
// ======================================
//  ~ Não edite a partir deste ponto ~
// ======================================
// Verifica se precisa fazer a conexão com o MySQL
if ($_SG['conectaServidor'] == true) {
  $_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'], $_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
  mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."].");
}
// Verifica se precisa iniciar a sessão
if ($_SG['abreSessao'] == true)
  session_start();
/**
* Função que valida um usuário e senha
*
* @param string $usuario - O usuário a ser validado
* @param string $senha - A senha a ser validada
*
* @return bool - Se o usuário foi validado ou não (true/false)
*/
function validaUsuario($usuario, $senha) {
  global $_SG;
  $cS = ($_SG['caseSensitive']) ? 'BINARY' : '';
  // Usa a função addslashes para escapar as aspas
  $nusuario = addslashes($usuario);
  $nsenha = addslashes($senha);
  // Monta uma consulta SQL (query) para procurar um usuário
  $sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1";
  $query = mysql_query($sql);
  $resultado = mysql_fetch_assoc($query);
  // Verifica se encontrou algum registro
  if (empty($resultado)) {
    // Nenhum registro foi encontrado => o usuário é inválido
    return false;
  } else {
    // Definimos dois valores na sessão com os dados do usuário
    $_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL
    $_SESSION['usuarioNome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL
    // Verifica a opção se sempre validar o login
    if ($_SG['validaSempre'] == true) {
      // Definimos dois valores na sessão com os dados do login
      $_SESSION['usuarioLogin'] = $usuario;
      $_SESSION['usuarioSenha'] = $senha;
    }
    return true;
  }
}
/**
* Função que protege uma página
*/
function protegePagina() {
  global $_SG;
  if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
    // Não há usuário logado, manda pra página de login
    expulsaVisitante();
  } else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
    // Há usuário logado, verifica se precisa validar o login novamente
    if ($_SG['validaSempre'] == true) {
      // Verifica se os dados salvos na sessão batem com os dados do banco de dados
      if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
        // Os dados não batem, manda pra tela de login
        expulsaVisitante();
      }
    }
  }
}
/**
* Função para expulsar um visitante
*/
function expulsaVisitante() {
  global $_SG;
  // Remove as variáveis da sessão (caso elas existam)
  unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);
  // Manda pra tela de login
  header("Location: ".$_SG['paginaLogin']);
}
</pre>
Não vai dar de explicar todas as funções do arquivo, mas todas elas estão devidamente comentadas e documentadas.
Com esse arquivo nos conectamos automaticamente ao servidor MySQL, então se você usar outra forma pra fazer a conexão, vá na parte de configurações do seguranca.php e defina a variável $_SG['conectaServidor'] pra falso (false). O mesmo acontece pra sessão com a variável $_SG['abreSessao'].
Agora é só incluir essas linhas no topo de cada arquivo que deverá ter o acesso restrito:
;Atenção!!!
<pre>
<?php
include("seguranca.php"); // Inclui o arquivo com o sistema de segurança
protegePagina(); // Chama a função que protege a página
</pre>
Quando vocês quiserem exibir o nome do usuário logado, é só fazer isso:
<pre>
<?php
echo "Olá, " . $_SESSION['usuarioNome'];
</pre>
<blockquote style="background: #FFEEFF; border: 1px solid red; margin-left: 0px; margin-right: 0px; padding: 1em;">
Nota: Esse exemplo é apenas explicativo, você pode mudar o nome da tabela de usuários se preferir e depois é só alterar a variável no bloco de configurações dentro do seguranca.php.
</blockquote>
Veja mais sobre escrever e pegar valores da sessão (coisa que acontece muito nesse sistema de login) no tópico Aprendendo a usar sessões no PHP.
Viram como é fácil?
Para quem quiser um tutorial mais detalhado, recomendo: Como criar um Sistema de Login com Níveis de Permissão (passo-a-passo). '''[3]'''


=Organização da Semana 3=
=Organização da Semana 3=


Nesta primeira semana formamos as equipes e distribuímos os sistemas através de 3 modelos conceituais. Agora, é trabalhar na criação do banco de dados, com especial cuidado na tradução dos nomes de campos e criação do banco de dados a partir do qual o sistema será desenvolvido. No próximo encontro, registraremos as equipes e seus sistemas e falaremos sobre a criação de telas e o acesso ao banco de dados. É importante entender bem os requisitos do sistema e associar com o modelo proposto.
Já registramos as equipes e o sistema escolhido por cada uma delas, falamos da criação de telas e o acesso ao banco de dados. Na terceira semana vamos apresentar a primeira atividade obrigatória.  


Até lá!
Até lá!


Bons estudos!


Prof. Douglas A.
Prof. Douglas A.

Edição atual tal como às 09h04min de 11 de abril de 2016

Apresentação

Olá Estudante,

Nessa segunda semana vamos registrar as equipes e o modelo conceitual escolhido. O próximo passo é a criação dos formulários (telas) e a conexão com o banco de dados. Lembre-se! A modelagem de dados já deve ter sido realizada e o código SQL gerado para criação no banco de dados MySQL. Para essa atividade as telas/formulários serão feitas ou preparadas com HTML/PHP, de acordo com o sistema escolhido. Se a sua equipe tem alternativa ao modelo de desenvolvimento escolhido, entre em contato. É importante rever a instalação dos aplicativos utilizados no desenvolvimento de sistemas Web, como o LAMP ou WAMP (Linux/Windows, Apache, MySQL e PHP).

Não se preocupem com as cores e formatos de formulários, fontes e da própria tela. Utilizem os softwares que vocês praticaram nas unidades curriculares anteriores, como o próprio Netbeans. Aproveitando o que já tem pronto você reduzirá o trabalho e não precisarão criar tudo do zero.

Boa programação!

Fiquem atentos as postagens no Fórum e participem dos nossos encontros virtuais.

Estamos a disposição!

Prof. Douglas A.

Objetivos

  • Registrar equipes e sistemas;
  • Apresentar a criação formulários;
  • Acesso ao banco de dados MySQL.

Equipes Registradas

Joinville

  • Edson, Antonio e Luciane - Tema: Aluguel de carros
  • Francisco, José Luis e Kleber - Donativos para uma igreja
  • Jorge - Reservas de Hotel.

Tubarão

Equipe 1: Anderson, Bruno, Lucas e Marcos. Tema: Reserva de hotéis.

Equipe 2: Clailson, Mariselma, Mislaine e Talita. Tema: Locadora de carros.

Equipe 3: Emerson, Filipe e Fillipe. Tema: Donativos para igreja.

Laguna

Grupo 1: Aluguel de Carros

Marcos Paulo Vicente de Oliveira
Karoline Dias Carvalho Dimiras
Luana Gomes da Silva
Luis Eduardo Ulyssea Rollin

Grupo 2: Doações

Vander Ribeiro Figueiredo
Jussara Nilsen Jerônimo


Canelinha

  • Equipe 1: Ana Paula e Márcia;
  • Equipe 2: Diego.

Telas e banco de dados

Os sistemas propostos foram:

  1. Reservas em Hotéis
  2. Aluguel de Carros
  3. Donativos para uma Igreja

É necessário, a partir do modelo conceitual, criar esse banco de dados fisicamente. Para isso você precisa ter redesenhado o modelo conceitual no MySQLWorkbench ou no DBDesigner, respeitando os aspectos da tradução para o português dos nomes de campos e relacionamentos entre as tabelas. O uso dos softwares e criação do banco de dados, você encontra na unidade curricular anterior. Como foi falado na apresentação da unidade, vamos utilizar o conhecimento adquirido nas unidade anteriores para a concepção de um sistema web completo.

O vídeo abaixo mostra como criar os formulários (telas) inicias e um acesso ao banco de dados. Você também pode encontrar essas orientações no material didático da unidade. Atentem! Esse se trata apenas de um exemplo e dá uma ideia de partida para o desenvolvimento do sistema de vocês.

https://www.youtube.com/watch?v=_TjHKWdOF94

Fique atento! O vídeo trata de um exemplo utilizando o Windows, porém facilmente adaptável para o Linux/Ubuntu.

Como criar um sistema de login com PHP e MySQL

(por Tiagoo Belem (2009))


Antes de mais nada, é preciso que você já tenha conhecimento prévio de HTML e, se possível, PHP e MySQL para tornar as coisas mais fáceis. Nosso sistema será bem simples: um arquivo chamado seguranca.php, que deverá ser incluído no topo do seu site (em todas as páginas), fazendo a conexão com o banco de dados, além de possuir algumas funções usadas para redirecionar o visitante para o formulário de login (login.php) caso ele não esteja logado. Vamos ao trabalho: O que iremos definir primeiro é a tabela usada para armazenar os usuários do sistema:

CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `nome` varchar(100) NOT NULL,
  `usuario` varchar(50) NOT NULL,
  `senha` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `usuario` (`usuario`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Execute esse bloco SQL no seu banco de dados para criar a tabela usada pelo sistema. Depois disso, vamos ao formulário de login que você colocará dentro de um arquivo chamado login.php:


<form method="post" action="valida.php">
  <label>Usuário</label>
  <input type="text" name="usuario" maxlength="50" />
  
  <label>Senha</label>
  <input type="password" name="senha" maxlength="50" />
  
  <input type="submit" value="Entrar" />
</form>


Esse formulário, com apenas dois campos, manda pra página valida.php, que é um pequeno PHP que receberá os dados enviados pelo formulário, fará a validação deles e mandará o visitante ou pra página interna (index.php) ou de volta pra página de login (login.php).

Esse é o codigo fonte do arquivo valida.php:

<?php
// Inclui o arquivo com o sistema de segurança
require_once("seguranca.php");
// Verifica se um formulário foi enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  // Salva duas variáveis com o que foi digitado no formulário
  // Detalhe: faz uma verificação com isset() pra saber se o campo foi preenchido
  $usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
  $senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';
  // Utiliza uma função criada no seguranca.php pra validar os dados digitados
  if (validaUsuario($usuario, $senha) == true) {
    // O usuário e a senha digitados foram validados, manda pra página interna
    header("Location: index.php");
  } else {
    // O usuário e/ou a senha são inválidos, manda de volta pro form de login
    // Para alterar o endereço da página de login, verifique o arquivo seguranca.php
    expulsaVisitante();
  }
}

A estrutura do seu site, até esse ponto, deve estar dessa forma:

../pasta_do_seu_site/index.php » Página intera a ser protegida
../pasta_do_seu_site/login.php » Página com o formulário de login
../pasta_do_seu_site/valida.php » Página que faz a validação dos dados do formulário


Agora vamos criar o arquivo seguranca.php na mesma pasta dos demais arquivos:

<?php
/**
* Sistema de segurança com acesso restrito
*
* Usado para restringir o acesso de certas páginas do seu site
*
* @author Thiago Belem <contato@thiagobelem.net>
* @link http://thiagobelem.net/
*
* @version 1.0
* @package SistemaSeguranca
*/
//  Configurações do Script
// ==============================
$_SG['conectaServidor'] = true;    // Abre uma conexão com o servidor MySQL?
$_SG['abreSessao'] = true;         // Inicia a sessão com um session_start()?
$_SG['caseSensitive'] = false;     // Usar case-sensitive? Onde 'thiago' é diferente de 'THIAGO'
$_SG['validaSempre'] = true;       // Deseja validar o usuário e a senha a cada carregamento de página?
// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.
$_SG['servidor'] = 'localhost';    // Servidor MySQL
$_SG['usuario'] = 'root';          // Usuário MySQL
$_SG['senha'] = '';                // Senha MySQL
$_SG['banco'] = 'test';            // Banco de dados MySQL
$_SG['paginaLogin'] = 'login.php'; // Página de login
$_SG['tabela'] = 'usuarios';       // Nome da tabela onde os usuários são salvos
// ==============================
// ======================================
//   ~ Não edite a partir deste ponto ~
// ======================================
// Verifica se precisa fazer a conexão com o MySQL
if ($_SG['conectaServidor'] == true) {
  $_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'], $_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
  mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."].");
}
// Verifica se precisa iniciar a sessão
if ($_SG['abreSessao'] == true)
  session_start();
/**
* Função que valida um usuário e senha
*
* @param string $usuario - O usuário a ser validado
* @param string $senha - A senha a ser validada
*
* @return bool - Se o usuário foi validado ou não (true/false)
*/
function validaUsuario($usuario, $senha) {
  global $_SG;
  $cS = ($_SG['caseSensitive']) ? 'BINARY' : '';
  // Usa a função addslashes para escapar as aspas
  $nusuario = addslashes($usuario);
  $nsenha = addslashes($senha);
  // Monta uma consulta SQL (query) para procurar um usuário
  $sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1";
  $query = mysql_query($sql);
  $resultado = mysql_fetch_assoc($query);
  // Verifica se encontrou algum registro
  if (empty($resultado)) {
    // Nenhum registro foi encontrado => o usuário é inválido
    return false;
  } else {
    // Definimos dois valores na sessão com os dados do usuário
    $_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL
    $_SESSION['usuarioNome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL
    // Verifica a opção se sempre validar o login
    if ($_SG['validaSempre'] == true) {
      // Definimos dois valores na sessão com os dados do login
      $_SESSION['usuarioLogin'] = $usuario;
      $_SESSION['usuarioSenha'] = $senha;
    }
    return true;
  }
}
/**
* Função que protege uma página
*/
function protegePagina() {
  global $_SG;
  if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
    // Não há usuário logado, manda pra página de login
    expulsaVisitante();
  } else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
    // Há usuário logado, verifica se precisa validar o login novamente
    if ($_SG['validaSempre'] == true) {
      // Verifica se os dados salvos na sessão batem com os dados do banco de dados
      if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
        // Os dados não batem, manda pra tela de login
        expulsaVisitante();
      }
    }
  }
}
/**
* Função para expulsar um visitante
*/
function expulsaVisitante() {
  global $_SG;
  // Remove as variáveis da sessão (caso elas existam)
  unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);
  // Manda pra tela de login
  header("Location: ".$_SG['paginaLogin']);
}

Não vai dar de explicar todas as funções do arquivo, mas todas elas estão devidamente comentadas e documentadas. Com esse arquivo nos conectamos automaticamente ao servidor MySQL, então se você usar outra forma pra fazer a conexão, vá na parte de configurações do seguranca.php e defina a variável $_SG['conectaServidor'] pra falso (false). O mesmo acontece pra sessão com a variável $_SG['abreSessao'].

Agora é só incluir essas linhas no topo de cada arquivo que deverá ter o acesso restrito:

Atenção!!!
<?php
include("seguranca.php"); // Inclui o arquivo com o sistema de segurança
protegePagina(); // Chama a função que protege a página

Quando vocês quiserem exibir o nome do usuário logado, é só fazer isso:

<?php
echo "Olá, " . $_SESSION['usuarioNome'];


Nota: Esse exemplo é apenas explicativo, você pode mudar o nome da tabela de usuários se preferir e depois é só alterar a variável no bloco de configurações dentro do seguranca.php.

Veja mais sobre escrever e pegar valores da sessão (coisa que acontece muito nesse sistema de login) no tópico Aprendendo a usar sessões no PHP. Viram como é fácil? Para quem quiser um tutorial mais detalhado, recomendo: Como criar um Sistema de Login com Níveis de Permissão (passo-a-passo). [3]

Organização da Semana 3

Já registramos as equipes e o sistema escolhido por cada uma delas, falamos da criação de telas e o acesso ao banco de dados. Na terceira semana vamos apresentar a primeira atividade obrigatória.

Até lá!


Prof. Douglas A.

Referências

[1] https://jonashenriquelima.wordpress.com/2012/11/04/pagina-em-php-criacao-da-tela-de-login/

[2] http://www.devmedia.com.br/phreeze-php-criando-uma-aplicacao-crud-em-10-minutos/30978

[3] http://blog.thiagobelem.net/criando-um-sistema-de-login-com-php-e-mysql



<< <> >>