No PHP, há quatro funções com o objetivo de importar arquivos, e cada uma exerce uma tarefa específica. São elas:
- include ().
- include_once().
- require().
- require_once().
a palavra
“once”
evita a importação de um arquivo que já tenha sido importado anteriormente, em alguma etapa do projeto!
Um dos grandes problemas em importar um arquivo que já está importado, é que as variáveis contidas no escopo desse arquivo serão resetadas, assim, os valores contidos nas variáveis já definidas em outro arquivo que já utilizou a importação, serão perdidos!!!
- objetivo: adicionar um arquivo dentro de outro quando acessado.
- em qualquer problema encontrado na inclusão, será apresentado um aviso (Warning), que indica que não foi possível realizar sua inclusão e exibirá a página normalmente (sem a inclusão do arquivo).
- aceitam parâmetros via GET.
- mesmo objetivo das funções include.
- a diferença está, em situações em que o arquivo que está sendo incluido não exista ou não seja encontrado, um Fatal Error (erro fatal) é gerado, interrompendo a execução de qualquer codificação que venha após a linha da função require!
- funções require não aceitarem parâmetros via GET para o arquivo chamado. Caso utilize este parâmetro, ele será ignorado!!!
Para exemplificar, será utilizado o projeto Lista de Amigos.
- Criando a tabela 'usuario':
CREATE TABLE `pwii`.`usuario`(
`idusuario` INT(11) AUTO_INCREMENT,
`nome` VARCHAR(45) NOT NULL,
`senha` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idusuario`)
);
INSERT INTO `pwii`.`usuario` (`nome`, `senha`) VALUES ('monica', 'monica123');
-
Renomear "index.php" para "principal.php".
-
Criar um novo arquivo index.php:
- neste arquivo vamos criar a página de login, que vai consistir em:
- um formulário, com dois campos (nome e senha)
- e um botão, que terá o propósito de fornecer acesso a página recentemente nomeada como principal.
- Desenvolvendo o arquivo loginAction.php.
- neste arquivo, será realizado:
- conexão com o banco de dados através do MySQLi.
- criação e execução da sentença sql de select, verificando se existe ou não o usuário.
- e por fim verificando se a senha digitada no formulário é a mesma gravada no banco de dados.
- Utilizando conceito de importação de arquivos (include ou require), para criação do arquivo conexaoBD.php:
- em uma possível troca de senha, precisaríamos apenas alterar o arquivo “conexaoBD”, e todo nosso projeto seria “atualizado” e utilizaria a senha correta.
- além disso, diminui a quantidade de códigos digitados, evita esquecimentos e erros.
Portanto, devemos:
- codificar conforme arquivo conexaoBD.php.
- substituir esse código nos arquivos por:
require_once 'conexaoBD.php';
/* ou */
require_once (conexaoBD.php);
- Outra boa utilização para include/require, é criar arquivos de cabeçalho e rodapé, e utilizar a importação de arquivos, assim quando alterar nester arquivos, todo o site será atualizado.
Então, criar dois arquivos:
require_once ('cabecalho.php');
require_once ('rodape.php');
Variáveis de sessões
:
- realizam o armazenamento de informações do usuário para serem utilizadas em várias páginas (como nome de usuário, cor favorita etc.).
- contêm informações sobre um único usuário e estão disponíveis para todas as páginas durante seu acesso.
Para iniciar uma sessão em php, utilizar a
função session_start()
, e as variáveis de sessão serão configuradas com a variável global PHP$_SESSION
.
session_start();
$_SESSION["Nome"] = "Monica";
$_SESSION["Idade"] = 31;
Para obter os valores contido nas variáveis em outras páginas, iniciar novamente a sessão, e utilizá-las como o exemplo:
session_start();
echo "Nome: ".$_SESSION["Nome"]. "e idade: ".$_SESSION["Idade"];
1. Atualizar o projeto e proteger o acesso via url de usuário não identificado, atualizando o arquivo loginAction.php.
2. Criar um arquivo chamado verificarAcesso.php:
- este arquivo sempre vai verificar se há uma sessão aberta e se a variável logado está iniciada.
- caso ela não esteja, utilizando a função nativa header, redirecionaremos o acesso para outro arquivo denominado acessoNegado.
3. Criar o arquivo acessoNegado.php:
- terá apenas uma mensagem de Acesso Negado e um link para a página index, para a realização do login.
require_once ('verificarAcesso.php');
- A linha de código acima fará com que sempre que um usuário tente acessar via url as páginas do nosso projeto, seja verificado o acesso do mesmo. E caso ele não tenha realizado o login, sempre aparecerá a mensagem “Acesso Negado”.
5. Criar o arquivo logoutAction.php, para quando o usuário decidir deixar nossa página:
- este arquivo vai basicamente remover a variável de sessão “logado” e redirecionar (função header) para a página incial “index”, o que tornará o login novamente necessário!
- criar um botão de logout no arquivo principal.php.
- são dados ou grupo de dados que o browser (navegador) e o servidor Apache trocam dados e informações entre si, enquanto o usuário utiliza as páginas do seu site. Estes dados são salvos em arquivo de texto direto no computador do usuário.
- para criar e manipular um cookie, deve-se utilizar a função
setcookie()
, sendo:- primeiro parâmento: um nome para o cookie.
- segundo parâmetro: valor do cookie.
- exemplo:
setcookie('usuario', 'monica');
- há um terceiro parâmetro utilizado para determinar um tempo de “vida” para esse cookie:
// Criando um cookie para durar um dia
setcookie('usuario', 'monica', (time() + (24 * 3600)));
Domínio
:
- é um simplificador.
- são "nomes" que conseguem identificar máquinas por seus IPs!
- é um endereço único para um site, que serve para localizar e identificar conjuntos de computadores na internet.
Hospedagem
:
- oferecem espaços em disco, espaço para contas de e-mail, espaço para armazenamento de banco de dados.
- ou seja, após reservar o domínio, deve-se contratar um plano de hospedagem para seu domínio.
"Utilizando o que foi visto até agora, foi disponibilizado uma página com o nome, disciplina e dados de vários professores. Nossa missão é restringir o acesso a a essa página, através de identificação. Esta identificação deve ser validada através da tabela (professor) criada no banco de dados com os atributos: idprofessor, nome, disciplina e senha.
- Obtenha os dados da tabela, utilizando o driver PDO ou Mysqli
- Crie uma Página para um formulário para login e senha
- Utilize Session para impedir o acesso via URL da página principal
- Crie um botão para realizar logout na página em que os professores estão listados
- Crie arquivos para auxilar no desenvolvimento
Dicas:
- Utilize os conceitos e exemplos de estrutura de repetição da Agenda 5.
- De preferência ao uso da estrutura de repetição Foreach.
- Agenda 6 ou 7 para acesso ao banco de dados.
- Os conceitos de importação podem te ajudar a economizar tempo."
CREATE TABLE `pwii`.`professor` (
`idprofessor` INT NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(45) NOT NULL,
`disciplina` VARCHAR(45) NOT NULL,
`senha` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idprofessor`)
);
INSERT INTO `pwii`.`professor` (`nome`, `disciplina`, `senha`) VALUES ('Paulo', 'Programação WEB II', 'paulo123');
INSERT INTO `pwii`.`professor` (`nome`, `disciplina`, `senha`) VALUES ('Guilherme', 'Programação Mobile', 'guilherme123');
INSERT INTO `pwii`.`professor` (`nome`, `disciplina`, `senha`) VALUES ('Eliana', 'Lógica de Programação', 'eliana123');
- index.php:
- contém o formulário para login e action direcionando para o arquivo “LoginAction”.
- loginAction.php:
- contém a consulta no banco para verificação se há o professor ou não, em caso verdareiro exibirá mensagem de login realizado, com link para página de professores, em caso negativo uma mensagem de falhar com link para a página index.
- professor.php.
- logoutAction.php:
- contém a codificação para o logout do usuário conectado e o redirecionando para a página index.
- conexaoBD.php:
- criado para concentrar os dados e conexão em um único arquivo.
- acessoNegado:
- utilizado para quando o usuário tentar realizar o acesso a página sem login.
"Gabi toda orgulhosa, mostrou para sua professora de Programação WEB II o seu projeto finalizado, a professora Alice, ficou encantada com o resultado e pediu para Gabi, criar uma apresentação de seu projeto. Gabi, ficou um pouco ansiosa, mas topou o desafio. Ela começou a pensar em uma apresentação sobre todo o funcionamento do seu projeto e como seria a melhor maneira para apresentá-lo. Lembrando que essa apresentação seria feita para os professores das outras disciplinas, portanto, ela deve se preocupar também em apresentar informações técnicas do projeto.
Para estudar mais sobre o assunto e deixar seu conhecimento bem afiado, ajude a Gabi a desenvolver essa apresentação. Para isso, será necessário abordar o projeto desenvolvido nos exemplos práticos.
Capriche nessa apresentação, mostrando as habilidades adquiridas. Vamos lá?
Dicas:
- Você pode criar uma apresentação no powerpoint, mostrando o passo a passo
- Para os exemplos práticos você pode criar vídeos explicando todo o funcionamento;
- Use sua imaginação e nos surpreenda!"