Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia...

50
1 Prof. Erwin Alexander Uhlmann www.institutosiegen.com.br Tecnologia WEB II Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander. Introdução ao PHP. Instituto Siegen. Guarulhos, 2012.

Transcript of Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia...

Page 1: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

1

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Tecnologia WEB II Prof. Erwin Alexander Uhlmann

Introdução ao PHP

UHLMANN, Erwin Alexander. Introdução ao PHP.

Instituto Siegen. Guarulhos, 2012.

Page 2: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

2

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Agradecimentos

Agradeço à minha esposa Kátia por entender

minha ausência, meus pais Mirtes e Günter por

terem criado meu caminho, aos meus alunos que

viabilizaram este trabalho e a todos os autores

de livros e bibliotecas que consultei para que

pudesse devidamente embasar este.

Page 3: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

3

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Sumário Agradecimentos ...............................................................................................................2

Introdução ....................................................................................................................... 5

Aula 1 ................................................................................................................................ 6

Pré-requisitos ............................................................................................................... 6

Fontes de referência................................................................................................ 6

Software ................................................................................................................... 6

PHP .............................................................................................................................. 10

O que é um aplicativo para web? ............................................................................ 11

Como funciona um aplicativo para a web .............................................................. 11

Aula 2 ............................................................................................................................... 19

Condicionais ............................................................................................................ 22

Comandos de repetição ........................................................................................ 24

Aula 3 .............................................................................................................................. 28

Envio de e-mails ......................................................................................................... 28

to............................................................................................................................. 28

subject .................................................................................................................... 28

message ................................................................................................................. 28

additional_headers (opcional) .............................................................................. 29

Email simples.......................................................................................................... 30

Aula 4 .............................................................................................................................. 34

Cookies ....................................................................................................................... 34

Aula 5 .............................................................................................................................. 39

Criação e leitura de arquivos ..................................................................................... 39

Criar arquivos ......................................................................................................... 39

Ler arquivos ............................................................................................................... 42

Page 4: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

4

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 6 .............................................................................................................................. 43

Upload de arquivos ................................................................................................... 43

Aula 7 .............................................................................................................................. 45

Sessão......................................................................................................................... 45

Aula 8 .............................................................................................................................. 47

Bibliografia ..................................................................................................................... 50

Page 5: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

5

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Introdução O objetivo deste trabalho é introduzir as técnicas básicas de programação em PHP

para a construção de um site gerenciável pelo cliente sem a necessidade de

conhecimento de HTML e PHP.

Page 6: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

6

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 1

Pré-requisitos

Fontes de referência

http://php.net/manual/pt_BR/index.php

Livros

Software

PHPEditor

Este é um dos principais editores de PHP. Simples, rápido, prático e com um amplo

suporte à linguagem.

$ : Grátis.

Avaliação: -----

http://filestore.softwaredownloadwebsite.com/h92/743753-

phpeditor_setup_en.exe

Page 7: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

7

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 1 - PHPEditor

Dreamweaver

Este é o melhor! O problema é que é pago, e bem pago. Este editor da Adobe tem

longa história de desenvolvimento. Atende diversas ferramentas que permitem até

um usuário com pouco conhecimento criar uma página, além de suporte a diversas

linguagens de programação e Banco de Dados.

http://www.adobe.com/cfusion/tdrc/index.cfm?product=dreamweaver&loc=pt_br

$: US$ 229,00 (13/12/2011)

Avaliação: -----

Page 8: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

8

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 2 - Dreamweaver

Expression Web

A Microsoft definitivamente entrou para a briga dos editores web. Para encarar o

Dreamweaver ela lançou o Expression Web 4, que pode ser avaliado como uma

versão antiga, de uma ou duas gerações passadas, do software da Adobe. Pago mas

com diversos recursos, segue a linha do principal concorrente.

http://www.microsoft.com/expression/products/web_overview.aspx

$: US$149,00

Avaliação: -----

Page 9: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

9

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 3 - Expression Web

Existem diversos editores PHP, ao longo deste trabalho, iremos utilizar o PHPEditor,

pois além de gratuito é a referência.

O PHP necessita do compilador PHP. http://windows.php.net/download/

Como em breve iremos trabalhar em conjunto com MySQL, aproveite para baixa-lo.

http://dev.mysql.com/downloads/

Além deles é fundamental um servidor, neste caso o Apache.

http://httpd.apache.org/download.cgi

Mas, você pode optar por baixar um suíte que já reúne todos os softwares. Existem

vários, ao longo do curso iremos utilizar o Vertrigo.

http://vertrigo.sourceforge.net/?lang=br

No caso da opção pelo Vertrigo, observe a instalação:

Para instalar é fácil e basta seguir os passos recomendados pelo programa.

Inicie sempre o Vertrigo, antes de começar a trabalhar com o PHP. Caso ele não

consiga iniciar e informe problemas com a porta 80, no Painel de Controle do

Page 10: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

10

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Windows, em Ferramentas Administrativas, e em seguida em Serviços, interrompa

os programas que utilizem esta porta.

Na maioria dos casos são os softwares de comunicação como o Messenger, Skype,

entre outros e também o servidor ISS, caso o tenha.Este modelo de relatório está

completo com estilos para um sumário e um índice.

Também é importante lembrar que nos sistemas operacionais Windows Vista e

Windows 7 (Seven), ao instalar é necessário aplicar as permissões de segurança à

pasta, em Propriedades, na guia Segurança.

Figura 4 - Propriedades do Windows para o Vertrigo

PHP O PHP é uma linguagem de programação simples e prática. Vamos trabalhar com ele

em conjunto com o HTML. Caso você não esteja muito familiarizado com esta

Page 11: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

11

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

linguagem de marcação, aproveite para baixar a apostila de HTML.

http://www.institutosiegen.com.br/is_professor_materia03.php?user_mat03=UnG%

20-%20Ci%EAncia%20da%20Computa%E7%E3o%20-%20Tecnologia%20Web%20I

O que é um aplicativo para web?

Um aplicativo para a web é um site que contém páginas armazenadas em um

servidor com conteúdo parcialmente ou totalmente indeterminado. O conteúdo

final de uma página será determinado somente quando o usuário solicitar uma

página do servidor web. Uma vez que o conteúdo final da página varia de acordo

com cada pedido de ação do usuário, este tipo de página é chamado página

dinâmica.

Os aplicativos para a web são criados para solucionar diversos desafios e

problemas. Esta seção descreve usos comuns de aplicativos para a web e fornece

um exemplo simples.

Como funciona um aplicativo para a web

Um aplicativo para a Web é um conjunto de páginas normais e dinâmicas. Uma

página normal é um página que não é modificada quando solicitada pelo usuário: o

servidor web envia a página ao navegador que a solicitou sem modificá-la. Em

contraste, uma página da web dinâmica é modificada pelo servidor antes de ser

enviada ao navegador. Chama-se página dinâmica devido à sua natureza variável.

Por exemplo: é possível criar uma página para exibir resultados do programa de boa

forma e deixar certas informações (nome do funcionário e resultados) a serem

determinadas quando a página for solicitada por um funcionário.

Processamento de páginas estáticas.

Page 12: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

12

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 5 - Solicitação de HTML

Figura 6 - Processamento de um aplicativo

Então vamos para de papo e começar a programar.

O PHP pode atuar sozinho e gerar páginas HTML sem formatação. Aqui começa.

<?php

//isto é um comentário de uma linha

/*e este suporta várias linhas.

Observe que estes comentários só podem estar dentro do PHP

<?php isto abre o PHP e ?> isto fecha

*/

echo “Olá Mundo!”;//o comando echo (pronucia-se écoh)imprime

Page 13: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

13

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

?>

Ok, agora é com você. Imprima a seguinte frase: Professor, você é o cara!

Mas se é para imprimir não tem graça, vamos trabalhar com variáveis:

$variavel = “uma string (valor textual)”;

Então vai ficar assim:

<?php

$variavel = “Bem legal, eu já sei o que é variável!”; //toda instrução do PHP termina com ;

?>

Ok, ok, ainda continua chato, eu quero interação, eu quero um aplicativo WEB!!!

Vamos criar a seguinte página:

aula1.php

<HTML>

<HEAD>

<TITLE>Aula 1 de PHP</TITLE>

</HEAD>

<BODY>

<h1>Tecnologia Web II</h1>

<h2>Formulário de interação</h2>

<form method="POST">

Nome:<input type="text" name="nome">

<input type="submit" value="Gravar">

</form>

</BODY>

</HTML>

Script 1 - aula 1 – formulário

Figura 7 - Aplicativo renderizado

Muito bem, você notou que a metodologia de envio do formulário é POST, então

para receber os dados do formulário, precisaremos utilizar esta mesma

metodologia.

Para receber os dados o script vai ficar assim:

<HTML>

Page 14: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

14

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<HEAD>

<TITLE>Aula 1 de PHP</TITLE>

</HEAD>

<BODY>

<h1>Tecnologia Web II</h1>

<h2>Formulário de interação</h2>

<form method="POST">

Nome:<input type="text" name="nome">

<input type="submit" value="Gravar">

</form>

<?php

$nome = $_POST['nome'];

echo $nome;

?>

</BODY>

</HTML>

Script 2 - recebimento dos dados e impressão

Mas ocorreu um erro!!!

Figura 8 - Erro de declaração de variável vazia

Veja que interessante, vamos aprender algo com isto. Notice (Aviso!) Indice

indefinido na linha 13.

Page 15: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

15

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 9 - Análise do script

O erro está na linha 13, $nome = $_POST['nome'];

Este erro acontece por que foi declarado algo que ainda não foi preenchido, está

vazio. Para corrigir vamos criar uma condição (if/else).

Page 16: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

16

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 10 - Condicional (if/else)

Figura 11 - Resolvido!

Então o script final ficou:

<HTML>

<HEAD>

<TITLE>Aula 1 de PHP</TITLE>

</HEAD>

<BODY>

<h1>Tecnologia Web II</h1>

<h2>Formulário de interação</h2>

<form method="POST">

Page 17: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

17

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Nome:<input type="text" name="nome">

<input type="submit" value="Gravar">

</form>

<?php

if(isset($_POST['Gravar'])){

$nome = $_POST['nome'];

echo $nome;

}

?>

</BODY>

</HTML>

Script 3 – Script com condicional

É importante sempre lembrar: nunca declare algo que ainda estará vazio!

Mas vamos explicar: dentro do PHP o if (se) é seguido de uma condição entre

parênteses if(condição) e uma ação entre chaves if(...){ ação}, o isset (leia is set, se

clicado) analisa se o botão Gravar foi pressionado e o PHP recebe esta informação

pelo comando $_POST (lembra da metodologia de envio do formulário?)Script 1 -

aula 1 – formulário. Veja que deve ser escrito da mesma forma com letra maiúscula.

Para você observar o formulário interagindo, vamos separar o arquivo em 2.

aula1.php e aula1.1.php.

aula1.php

<BODY>

<h1>Tecnologia Web II</h1>

<h2>Formulário de interação</h2>

<form method="POST" action="aula1.1.php">

Nome:<input type="text" name="nome">

<input type="submit" value="Gravar">

</form>

<?php

if(isset($_POST['Gravar'])){

$nome = $_POST['nome'];

echo "<p>$nome</p>";

}

?>

</BODY>

</HTML>

Script 4 - Envio de informações por formulário

aula1.1.php

<HTML>

<HEAD>

<TITLE>Aula 1 de PHP</TITLE>

</HEAD>

<BODY>

<h1>Tecnologia Web II</h1>

<h2>Formulário de interação</h2>

Page 18: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

18

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<?php

$nome = $_POST['nome'];

echo "<p>$nome</p>";

?>

<a href="aula1.php">Voltar!</a>

</BODY>

</HTML>

Script 5 - Recepção de informações de um formulário

Vamos explicar...

A página aula1.php enviou os dados para página aula1.1.php pela metodologia post

do formulário e a página aula1.1.php recebeu estes dados pelo comando $_POST, o

parâmetro esperado é o nome do campo do formulário da página aual1.php

(Nome:<input type="text" name="nome">) e a página aula1.1.php recebe ($nome =

$_POST['nome'];). Além do post podemos enviar via URL com o método GET,

altere o formulário da página aula1.php para GET e a página aula1.1.php para

$_GET[‘nome’];. Observe a url e manipule diretamente os dados por lá, troque o

nome e pressione F5 (recarregue a página).

Ok. Vamos exercitar!

Crie um formulário de cadastro de currículos. O que deve ter um currículo? Crie um

formulário com todos estes campos (figura 12) e vamos enviá-lo para outra página.

Figura 12 - cadastro de currículo

Page 19: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

19

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 2 Além de imprimir e receber dados de formulários uma linguagem de programação

tem por característica a automação, realização de ações automáticas e para realizar

estas ações vamos precisar aprender, entre outras coisas, a trabalhar com o tempo

e a aritmética.

Naquela mesma estrutura de HTML, que a partir de agora será oculta nos scripts,

apenas quando necessário iremos demonstrar, vamos adicionar alguns dos

seguintes scripts.

<?php

$data = date('d-m-Y');

echo "<br>Hoje é: $data<br>";

$hora = date('H:i:s');

//Concatenando variáveis

echo $hora . " " . $data; echo "<br>Hoje, $data, às $hora, eu escrevi

um script PHP!!!<br>";

$time = time();

echo "o tempo no PHP é contado assim: $time";

?>

Script 6 - Trabalhando com data e hora

O “.” (ponto) concatena as informações.

Rode o script 6. Veja como ficou. Bem, se entendemos o tempo vamos misturar

com aritmética. (Veja mais sobre o tempo na tabela 1)

Bem, a aritmética é simples, soma (+), subtração (-), divisão (/) e multiplicação (*). O

PHP pode trabalhar com números ou com variáveis.

<?php

$a = 2;

$b = 4;

$soma = $a + $b;

$subtracao = $a - $b;

$divisao = $a / $b;

$multiplicacao = $a * $b;

echo "A = $a <br> B = $b <br> Soma: $soma <br> Subtração: $subtracao

<br> Divisão: $divisao <br> Multiplicação: $multiplicacao";

?>

Agora estude as tabelas 1, 2, 3 e 4. Vamos fazer um exercício!

Tabela 1 - Parâmetros de tempo, www.php.net, 2012

format character

Descrição Exemplo de valores retornados

Page 20: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

20

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

format character

Descrição Exemplo de valores retornados

a Lowercase Ante meridiem and Post meridiem am or pm

A Uppercase Ante meridiem and Post meridiem AM ou PM

B Swatch Internet time 000 até 999

d Dia do mês, 2 digitos com leading zeros 01 to 31

D Uma representação textual de um dia, três letras Mon through Sun

F Uma representação textual de um mês, tal como janeiro ou Março

Janeiro a Dezembro

g 12-hour formato de hora sem leading zeros 1 a 12

G 24-hour formato de hora sem leading zeros 0 a 23

h 12-hour formato de hora com leading zeros 01 a 12

H 24-hour formato de hora com leading zeros 00 a 23

i Minutos com leading zeros 00 para 59

I (i maiúsculo)

Se a data está ou não em horário de verão 1 Horário de Verão, 0 sem Horário de Verão.

j Dia do mês sem leading zeros 1 to 31

l ('L' minúsculo)

Uma representação completa textual de um dia da semana

Domingo a Sábado

L Se é ano bissexto 1 ano bissexto, 0 ano não bissexto.

m Representação numérica de um mês, com leading zeros

01 a 12

M Uma representação textual curta de um mês, três letras

Jan a Dec

n Representação numérica de um mês, sem leading zeros

1 a 12

O Diferença ao horário de Greenwich (GMT) em horas Exemplo: +0200

r » RFC 2822 formatted date Exemplo: Thu, 21 Dec 2000 16:01:07 +0200

s Segundos, com leading zeros 00 a 59

S Sufixo ordinal inglês para o dia do mês, 2 caracteres st, nd, rd ou th. Funciona bem com j

t Número de dias do dado mês 28 a 31

T Timezone setting of this machine Examples: EST, MDT ...

U Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

See also time()

w Representação numérica do dia da semana 0 (para Domingo) a 6 (para Sábado)

W Número da semana do ano ISO-8601, semanas Exemplo: 42 (a 42nd

Page 21: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

21

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

format character

Descrição Exemplo de valores retornados

começadas na segunda-feira (adicionado no PHP 4.1.0)

(quadragésima segunda) semana do ano)

Y Uma representação completa do ano, 4 dígitos Examples: 1999 ou 2003

y Representação do ano em dois dígitos Examples: 99 ou 03

z O dia do ano (começando de 0) 0 a 365

Z Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.

-43200 até 43200

Tabela 2 - Operadores Aritméticos

Operador Descrição Exemplo Resultado

+ Adição x=2 x+2

4

- Subtração x=2 x-5

3

* Multiplicação x=4 x*5

20

/ Divisão 15/5 3

% Módulo (restante da divisão) 5%2 10%8 10%2

1 2 0

++ Incrementos x=5 x++

x=6

-- Decrementos x=5 x--

x--

Tabela 3 - Operadores comparativos

Operador Descrição Exemplo Resultado

== é igual a 5==8 falso

!= não é igual 5!=8 verdadeiro

> é maior que 5>8 falso

< é menor que 5<8 verdadeiro

>= é maior que ou igual a 5>=8 falso

< é menor que ou igual a 5<=8 verdadeiro

Tabela 4 - Operadores lógicos

Operador Descrição Exemplo Resultado

&& e x=6 y=3 (x < 10 && y > 1)

verdadeiro

|| ou x=6 y=3 (x==5 || y==5)

falso

! não x=6 verdadeiro

Page 22: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

22

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Operador Descrição Exemplo Resultado

y=3 !(x==y)

Vamos praticar um pouco. Crie uma calculadora online!

Vamos à receita. Crie uma calculadora com botões e seus nºs correspondentes, os

sinais aritméticos e que ao clicar no botão ele se valha da URL como memória.

Receba os valores, imprima-os e realize as operações. Veja em:

http://www.institutosiegen.com.br/ung/twii/calculadora/

Agora que já sabemos aritmética vamos estudar as condicionais.

Condicionais

if, elseif e else

A tradução livre seria: se, senão, então.

A sintaxe é:

if (condições)

{O que se deve fazer}

elseif (condições)

{O que se deve fazer}

else ( Não há condições)

{O que se deve fazer}

Exemplo:

<?php

$a = 1;

$b = 2;

if($a > $b){

echo 'A é '. ($a - $b) .' maior que B';

}elseif($a == $b){

echo "A é igual à B";

}else{

echo "A é ". ($b - $a) ." menor que B";

}

?>

Teste!

Agora que você entendeu – entendeu, não? Se não, leia de novo!!! – Vamos partir

para algo, digamos, mais emocionante.

Um aluno está ávido por saber como vai ficar sua situação

Page 23: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

23

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Início

B1

B2

Média menor que 4?

Média menor que 7?

Média maior que 9?

Colou de quem?

Fim

Por que não tirou 10,0???

Exame!

Existia uma chance, mas com essa

nota...

Figura 13 - Fluxograma para calculo de médias

<?PHP

echo "Sua nota de B1 é: $prova1.<br>Sua nota de B2 é:$prova2.<br>Sua

nota de B3 é:$prova3.<br>Sua nota de B4 é:$prova4.<br><h3>Sua média é

<strong>$nota</strong>.</h3><hr />";

if ($nota<3)

$desempenho = "típico...";

elseif ($nota<5)

$desempenho = "esperado...";

elseif ($nota<7)

$desempenho = "surpreendente! Colou de quem???";

Page 24: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

24

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

elseif ($nota<9)

$desempenho = "no mínimo incondizente, acho que errei...";

else

$desempenho = "absurdo! Tenho certeza que você colou! De quem? Assuma!

Seu moleque, irresponsável, perturbado!";

echo "O seu desempenho foi $desempenho.";

?>

Podemos utilizar condições únicas também, como no caso de apenas uma única

entrada ser aceita. Veja:

<?php

if ($nota == 10)

{

echo "Parabéns! <br>";

echo "Você tirou a nota máxima!";

}

?>

Switch

Switch e IF são comandos bem parecidos e de resultados iguais, a diferença se

resume à que o switch trabalha apenas com igualdades, enquanto o if aceita

qualquer operador e ainda, o switch torna o código mais organizado, pois apresenta

somente o comando case. Veja:

<?php

switch ($numero)

{

case 0:

echo "número vale 0";

break;

case 1:

echo "número vale 1";

break;

case 2:

echo "número vale 2";

break;

}

?>

Comandos de repetição

While

Fazer enquanto...

O comando while pode ser muito útil quando se deseja que algo aconteça até que

se atinja um valor, e este valor, é claro pode ser uma variável.

Veja:

Page 25: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

25

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<?php

$valor = 1;

while ($valor<100)

{

echo "O valor atual do contador é $valor <br>";

$valor++;

}

?>

O será executado? O valor atual é 1 e ele irá executar um acréscimo de 1 em 1 até

que atinja 99, pois a instrução diz para “fazer enquanto” a variável for menor que 1.

Novamente no caso da página das notas, vamos construir um gráfico que poderá

ilustrar o desempenho do aluno, veja:

//while

$imagem = "<img src='images/bot_verde.png'/>";

$repetidor = 0;

while ($repetidor <= $nota) {

echo $imagem;

$repetidor++;

}

O valor estabelecido não foi um número ou texto, mas sim uma tag HTML com o

endereço de uma imagem, que neste caso é um pequeno quadrado. O comando irá

repetir esta imagem até que o valor atinja o número da nota do aluno.

do...while

Fazer enquanto. A diferença entre o while e o do...while é que o while executa a

função a partir do início da programação e o do...while executa enquanto a função

for verdadeira, ou seja, executa pelo final, isto significa que o do...while pode ser

executado diversas vezes, enquanto o while é executado apenas uma vez.

Veja:

<?php

$numero = 1;

do

{

echo "O valor atual de número é $numero <br>";

$numero++;

} while ($numero<4);

?>

O valor impresso será:

O valor atual de número é 1

O valor atual de número é 2

Page 26: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

26

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

O valor atual de número é 3

O valor atual de número é 4

for

O comando for, funciona de forma semelhante ao do...while, no entanto ele muito

útil quando se deseja imprimir diversos valores como de um array ou de um Banco

de Dados. Veja:

<?php

$vetor[0][0]= "elemento00";

$vetor[0][1]= "elemento01";

$vetor[1][0]= "elemento10";

$vetor[1][1]= "elemento11";

for($i=0 ; $i<2 ; $i++)

{

for($k=0 ; $k<2 ; $k++)

{

echo "O elemento da posição $i,$k é ";

echo $vetor [$i][$k] . "<br>";

}

}

?>

O resultado impresso na tela será:

O elemento da posição 0,0 é elemento00

O elemento da posição 0,1 é elemento01

O elemento da posição 1,0 é elemento10

O elemento da posição 1,1 é elemento11

<?php

$diasemana[0] = "Domingo";

$diasemana[1] = "Segunda-feira";

$diasemana[2] = "Terça-feira";

$diasemana[3] = "Quarta-feira";

$diasemana[4] = "Quinta-feira";

$diasemana[5] = "Sexta-feira";

$diasemana[6] = "Sábado";

$mesnome[1] = "Janeiro";

$mesnome[2] = "Fevereiro";

$mesnome[3] = "Março";

$mesnome[4] = "Abril";

$mesnome[5] = "Maio";

$mesnome[6] = "Junho";

$mesnome[7] = "Julho";

$mesnome[8] = "Agosto";

$mesnome[9] = "Setembro";

Page 27: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

27

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

$mesnome[10] = "Outubro";

$mesnome[11] = "Novembro";

$mesnome[12] = "Dezembro";

$ano = date('Y');

$mes = date('n');

$dia = date('d');

$diasem = date('w');

$hora=getdate();

if ($hora['minutes']<10)

{

$hora['minutes']="0".$hora['minutes'] ;

}

$horacerta=($hora['hours'].':'.$hora['minutes']);

$data = 'Hoje é '.$diasemana[$diasem].', dia '.$dia.' de

'.$mesnome[$mes].'

de '.$ano.' <br> Hora: '.$horacerta;

echo "<html><head><title> UnG - Data completa.</title></head><body>";

echo $data;

echo "</body></html>";

?>

Page 28: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

28

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 3

Envio de e-mails Para o envio de e-mails pelo PHP é necessário seguir a seguinte sintaxe:

bool mail ( string $to , string $subject , string $message

[, string $additional_headers [, string $additional_parameters

]] )

Onde:

to

Receptor, ou receptores do email.

Alguns exemplos:

* [email protected]

* [email protected], [email protected]

* User <[email protected]>

* User <[email protected]>, Another User <[email protected]>

subject

Assunto do email a ser enviado.

Cuidado!

Não deve conter caractere de nova linha, ou o email pode não ser enviado

corretamente.

message

Mensagem a ser enviada.

Cada linha deve ser separada com um LF (\n). Linhas não deve ser maiores que 70

caracteres.

Page 29: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

29

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

additional_headers (opcional)

String a ser inserida no final do cabeçalho do email.

Esta é normalmente usada para adicionar cabeçalhos extras (From, Cc, e Bcc).

Múltiplos cabeçalhos extra devem ser separados com um CRLF (\r\n).

Mãos à obra

Os formulários de contato são presença quase unânime nos sites.

Além de permitir que qualquer usuário entre em contato sem nenhum programa de

envio de e-mails, o usuário poderá fazer isto de qualquer lugar.

Abra uma nova página e crie um formulário de contato.

Para fazer um formulário comece a criar o código PHP antes do html.

<?php

if(isset($_POST['submit'])) {

$nome = $_POST['nome'];

$email = $_POST['email'];

$assunto = $_POST['assunto'];

$mensagem = $_POST['mensagem'];

$header = "FROM: $nome <$email>";

mail('[email protected]', $assunto,

$mensagem, $header);

}

?>

Crie um formulário com os mesmos nomes acima descritos, ou seja, o nome

utilizado no formulário deverá ser utilizado no código PHP.

NOTA: O nome da variável não precisa ser igual ao nome do campo do formulário,

neste caso são iguais apenas por questões de organização.

Você poderá fazer outras programações adicionais para que o usuário tenha sinal

que o formulário funcionou. Se você simplesmente criar o formulário e programar o

PHP para enviar, mas o usuário não perceber nenhuma reação na página poderá

entender como se a página não estivesse funcionando.

Solução 1:

No código do form.

Page 30: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

30

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<form id="form1" name="form1" method="post"

action="index.php">

Isto não é php. Na TAG form, a opção action, por padrão não é preenchida. Coloque

o endereço de uma página, por exemplo, index.php ou confirmacao.htm. O usuário

agradecerá!

Solução 2:

Antes da tag form, escreva:

<?php

if(isset($_POST['submit'])) {

echo "<hr />Obrigado <strong>$nome</strong>.Sua mensagem foi

enviado com sucesso!<hr />";

} else {

?>

Depois da TAG form.

<?php } ?>

Isto encerrará a programação.

Tudo que estiver entre as chaves ({ e }), será submetida à programação elaborada,

neste caso SE (if) o formulário for SUBMETIDO (submit), ou seja, enviado, EXIBA

(echo) a frase acima, SENÃO (else) – note neste ponto que não há nada

programado para fazer e o que há entre as chaves é o formulário – não faça nada, a

não ser exibir o formulário.

NOTA: Será necessário escolher entre as soluções 1 ou 2.

Tipos de e-mails:

Email simples

<?php

$mensagem = "Linha 1\n Linha 2\n Linha 3…";

/* Caso as linhas tenham mais de 70 caracteres utilize a

função wordwrap() */

$mensagem = wordwrap($mensagem, 70);

/*Como funciona o wordwrap?

string wordwrap ( string $str [, int $width [, string

$break [, boolean $cut ]]] )

<?php

$texto = "Um texto relativamente longo que precisa ter suas

linhas quebradas.";

$novotexto = wordwrap($texto, 20, "<br />");

Page 31: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

31

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

echo "$novotexto\n";

?> */

// Envio

mail('[email protected]', 'Assunto',

$mensagem);

?>

Com cabeçalho extra

<?php

$para = '[email protected]';

$assunto = 'Assunto do e-mail';

$mensagem = 'Mensagem';

$headers = 'From: [email protected]' . "\r\n" .

'Reply-To: [email protected]' . "\r\n" .

'X-Mailer: PHP/' . phpversion();

mail($para, $assunto, $mensagem, $headers);

?>

Em formato html

<?php

// para vários e-mails

$para = '[email protected]'. ', ';

// observe a vírgula

$para. = '[email protected]';

// assunto

$assunto = Texto do assunto do e-mail';

// message

$mensagem = '

<html>

<head>

<title>Email de teste!</title>

<style type='text/css'>

<!--

body,td,th {

color: #000066;

}

body {

background-color: #009999;

margin-left: 0px;

margin-top: 0px;

margin-right: 0px;

margin-bottom: 0px;

}

-->

</style>

</head>

<body>

<h1 align='center'>Email de teste!</h1>

<p>Veja como fica o html. </p>

</body>

</html>';

/* Para enviar um email em formato HTML, o cabeçalho Content-

type precisa ser configurado */

$headers = 'MIME-Version: 1.0' . "\r\n";

Page 32: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

32

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

$headers .= 'Content-type: text/html; charset=iso-8859-1' .

"\r\n";

// Cabeçalho adicional

$headers .= 'To: Alguém <[email protected]>, Ninguém

<[email protected]>' . "\r\n";

$headers .= 'From: Email de Teste! <[email protected]>' .

"\r\n";

$headers .= 'Cc: [email protected]' . "\r\n";

$headers .= 'Bcc: [email protected]' . "\r\n";

mail($para, $assunto, $mensagem, $headers);

?> Note que na função mail, existe apenas uma variável $headers, pois os headers

adicionais foram concatenados com a função “.”.

A página ficará da seguinte forma:

<?php

if(isset($_POST['submit'])) {

//Recebendo os dados do Form

$nome = strip_tags(trim($_POST['nome']));

$email = strip_tags(trim($_POST['email']));

$assunto = strip_tags(trim($_POST['assunto']));

$mensagem = strip_tags(trim($_POST['mensagem']));

$destinatario = '[email protected]';

$header = "FROM: $nome <$email>";

mail ($destinatario, $assunto, $mensagem, $header);

}

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html;

charset=iso-8859-1" />

<title>Untitled Document</title>

</head>

<body>

<form id="form1" name="form1" method="post" action="">

<label>

<input name="nome" type="text" id="nome" />

</label>

<p>

<label>

<input name="email" type="text" id="email" />

</label>

</p>

<p>

<label>

<input name="assunto" type="text" id="assunto" />

</label>

</p>

<p>

Page 33: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

33

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<label>

<textarea name="mensagem" id="mensagem"></textarea>

</label>

</p>

<p>

<label>

<input type="submit" name="Submit" value="Submit" />

</label>

</p>

</form>

</body>

</html>

Page 34: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

34

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 4

Cookies Os cookies são arquivos txt armazenados para utilização posterior dos dados do

usuário.

bool setcookie ( string $nome [, string $valor [, int $expira

[, string $caminho [, string $domínio [, bool $seguro [, bool

$somente http ]]]]]] )

Onde:

$nome: O nome do cookie.

$valor: O valor do cookie. Esse valor é guardado no computador do cliente; não

guarde informação sensível. Supondo que o nome é 'nomedocookie', o valor pode

ser lido través de $_COOKIE['nomedocookie'].

$expira: O tempo para o cookie expirar. Esse valor é uma timestamp Unix,

portanto é o número de segundos desde a época (epoch). Em outras palavras, você

provavelmente irá utilizar isso com a função time() mais o número de segundos

que você quer que ele expire. Ou você pode utilizar a função mktime().

time()+60*60*24*30 irá configurar o cookie para expirar daqui a 30 dias. Se

configurado para 0, ou omitido, o cookie irá expirar ao fim da sessão (quando o

navegador fechar).

$caminho: O caminho no servidor onde o cookie estará disponível. Se

configurado para '/', o cookie estará disponível para todo o domínio. Se

configurado para o diretório '/foo/', o cookie estará disponível apenas dentro do

diretório /foo/ e todos os subdiretórios como /foo/bar do domínio. O valor padrão

é o diretório atual onde o cookie está sendo configurado.

$domínio: O domínio para qual o domínio estará disponível. Para fazer com que

ele esteja disponível para todos os subdomínios de example.com então você deve

configurar ele para '.example.com'. O não é obrigatório, mas faz com que seja

compatível com mais navegadores. Configurando ele para www.example.com ele

Page 35: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

35

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

fará com que o cookie esteja disponível somente para o subdomínio www. Veja a

especificação de 'tail matching' em » spec para maiores detalhes.

$seguro: Indica que o cookie só poderá ser transmitido sob uma conexão

segura HTTPS do cliente. Quando configurado para TRUE. o cookie será enviado

somente se uma conexão segura existir. O padrão é FALSE. No lado do servidor, fica

por conta do programador enviar esse tipo de cookie somente sob uma conexão

segura (ex respeitando $_SERVER["HTTPS"]).

$somente http: Quando for TRUE o cookie será acessível somente sob o

protocolo HTTP. Isso significa que o cookie não será acessível por linguagens de

script, como JavaScript. Essa configuração pode efetivamente ajudar a reduzir ou

identificar roubos através de ataques do tipo XSS (entretanto ela não é suportada

por todos os browsers). Foi adicionada no PHP 5.2.0. TRUE ou FALSE.

Crie uma página com um formulário da seguinte forma:

Figura 14 - Menu com uso de cookies

<form id="form1" name="form1" method="post"

action="aula_5_cookie.php">

<label>

Qual tecnologia voc&ecirc; prefere?<br />

<select id="interesse" name="interesse">

<option>Selecione</option>

Page 36: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

36

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<option

value="Acessibilidade">Acessibilidade</option>

<option

value="Usabilidade">Usabilidade</option>

<option value="XML">XML</option>

<option value="XHTML">XHTML</option>

</select>

</label>

<p>

<label>

<input type="submit" name="Submit" value="N&atilde;o

clique nesse bot&atilde;o!" />

</label>

</p>

</form>

Agora crie uma página para receber o Cookie com o seguinte nome:

aula_5_cookie.php – veja a action do formulário.

Escreva o seguinte código na linha 1:

<?php

$assunto = $_POST["interesse"];

setcookie('interesse', $assunto, time()+3600*24);

?>

No body.

<?php

if(isset($_COOKIE['interesse'])) {

echo"O cookie 'INTERESSE' foi criado com sucesso!";

}else{

echo"O cookie 'INTERESSE' não foi criado, vc aprontou alguma

cagada!";

}

?>

</p>

<p><?php echo $_COOKIE['interesse']; ?></p>

<?php

switch($_COOKIE['interesse']){

case'Acessibilidade':

echo'

<html>

<head>

<title>Acessibilidade</title>

</head>

<body>

<h1>Acessibilidade</h1>

<h2>Como garantir que os usu&aacute;rios de um site

poder&atilde;o ter acesso &agrave; todas as op&ccedil;&otilde;es

da p&aacute;gina?</h2>

<ul>

<li>Voc&ecirc; construiu um site pensando que nem todos os

usu&aacute;rios possuem mouse?</li>

Page 37: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

37

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<li>A resolu&ccedil;&atilde;o da tela &eacute; a mesma para

todos?</li>

<li>A tecnologia definida &eacute; acess&iacute;vel

&agrave; todos?</li>

<li>As empresas permitem os usu&aacute;rios acessar seus

arquivos?</li>

</ul>

<p>&nbsp;</p>

</body>

</html>';

break;

case'Usabilidade':

echo'

<html>

<head>

<title>Usabilidade</title>

</head>

<body>

<h1>Usabilidade</h1>

<h2>Voc&ecirc; planejou, construiu e verificou todos os

links, mas as pessoas usam? </h2>

<ul>

<li>Todas as p&aacute;ginas possuem um tema definido? </li>

<li>Seus links est&atilde;o acessiveis, com f&aacute;cil

leitura e bem definidos? </li>

<li>Os usu&aacute;rios t&ecirc;m visitado? Por que? </li>

<li>Os usu&aacute;rios n&atilde;o visitam? Por que??? </li>

</ul>

<p>&nbsp;</p>

</body>

</html>';

break;

case'XML':

echo'

<html>

<head>

<title>XML</title>

</head>

<body>

<h1>XML</h1>

<h2>A Microsoft vai conseguir impor seu padr&atilde;o? </h2>

<ul>

<li>Extended Markup Language </li>

<li>Por qu&ecirc; tantas empresas t&ecirc;m disputado a

ado&ccedil;&atilde;o deste padr&atilde;o? </li>

<li>Como funciona? </li>

<li>Para qu&ecirc; serve? </li>

</ul>

<p>&nbsp;</p>

</body>

</html>';

break;

case'XHTML':

echo'

<html>

<head>

Page 38: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

38

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<title>XHTML</title>

</head>

<body>

<h1>XHTML</h1>

<h2>Por qu&ecirc; fundir as linguagens? </h2>

<ul>

<li>Extensible HyperText Markup Language</li>

<li>O XHTML &eacute; mais limpo? </li>

<li>Como funciona? </li>

<li>Para qu&ecirc; serve? </li>

</ul>

<p>&nbsp;</p>

</body>

</html>';

break;

default:

echo'Nenhum assunto foi escolhido, clique <a

href="aula_5.php">aqui</a> para escolher';

break; } ?>

Nossa. Que divertido... E o que, de fato bom, posso fazer com cookies?

Vamos criar um sistema de login e senha com cookies!

Login e

Senha

Valida

Cookie

Dados

certos

?

Page 39: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

39

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 5

Criação e leitura de arquivos

Criar arquivos

Entre as inúmeras vantagens do PHP, a capacidade de se criar um arquivo, ler ou até

mesmo manipular arquivos no computador do cliente, é evidente e perigosa.

Além dos Cookies, o php pode criar arquivos de diversas formas e extensões.

Para criar um arquivo precisamos primeiro conhecer as funções.

Veja a tabela 1:

mode Descrição

'r' Abre somente para leitura; coloca o ponteiro do arquivo no começo do arquivo.

'r+' Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo.

'w' Abre somente para escrita; coloca o ponteiro do arquivo no começo do arquivo e

reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.

'w+' Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz

o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.

'a' Abre somente para escrita; coloca o ponteiro do arquivo no final do arquivo. Se o

arquivo não existir, tenta criá-lo.

'a+' Abre para leitura e escrita; coloca o ponteiro do arquivo no final do arquivo. Se o

arquivo não existir, tenta criá-lo.

'x'

Cria e abre o arquivo somente para escrita; coloca o ponteiro no começo do arquivo.

Se o arquivo já existir, a chamada a fopen() falhará, retornando FALSE e gerando um

erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a

Page 40: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

40

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

mode Descrição

especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).

'x+'

Cria e abre o arquivo para leitura e escrita; coloca o ponteiro no começo do arquivo. Se

o arquivo já existir, a chamada a fopen() falhará, retornando FALSE e gerando um

erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a

especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).

Tabela 5 - Parâmetros de criação e leitura

Para cria r um arquivo proceda assim:

Crie um formulário, com o método POST, que envie os dados para a página

leitor.php.

Page 41: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

41

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

O código para se criar um arquivo é simples.

Figura 15 - Formulário de criação de arquivos

Page 42: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

42

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<?php

//crie um avariável para receber os dados do formulário.

$texto = $_POST['texto'];

//crie uma variável para armazenar os dados da função fopen.

/*a Função Open, fopen pede o nome do arquivo, “texto.htm” e depois o método 'w', de write, que serve para escrever no

arquivo, veja a tabela.*/

$novoarquivo = fopen("texto.htm", "w");

/*Função Write com a variável que criamos na linha acima e o conteúdo do arquivo com a variável que contém o que foi escrito

no formulário.*/

fwrite($novoarquivo,"$texto");

//Função Close para encerrar o comando de escrita. fclose($novoarquivo);

?>

Ler arquivos Dentro do <body>.

<?php

//caminho do arquivo, pode conter diret´rios no computador ou

no servidor. Onde for gravado.

$local = "teste.html";

//abre o arquivo para leitura ("r") - read

$leitura = fopen($local,"r");

//coloca o conteúdo em uma única variável

$arquivo = fread($leitura, filesize($local));

//fecha o arquivo

fclose($leitura);

//imprime o arquivo na tela

echo "$arquivo";

?>

Page 43: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

43

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 6

Upload de arquivos Crie um formulário para inclusão da imagem.

<form id="form1" name="form1" method="post" action=""

enctype="multipart/form-data">

<label>

Logo do site

<input name="logosite" type="file" id="logosite" />

</label>

<label>

<input type="submit" name="submit" id="submit" value="Gravar"

/>

</label>

</form>

Explicando...

Ao criar o formulário, adicione o parâmetro enctype="multipart/form-data", que

será o responsável pelo envio de arquivo e não somente o texto.

Mude o tipo do do campo de text para file. Procure a linha <input

name="logosite" type="text" id="logosite" />. Mude para <input

name="logosite" type="file" id="logosite" />.

Figura 16 - Formulário de upload de arquivos

Na própria página do formulário, escreva o script php abaixo, que será o

responsável pelo upload do arquivo.

$dir = "img";

$arq = $_FILES['logosite']['name'];

$arq_temp = $_FILES['logosite']['tmp_name'];

move_uploaded_file($arq_temp,"$dir/$arq");

Explicação:

Page 44: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

44

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

A variável $dir armazena o nome do diretório que será armazenado o arquivo.

A variável $arq recolherá o nome do campo do formulário, no entanto a função

$_FILES recolhe os dados do campo logosite que conterá todo o endereço do

computador e o segundo parâmetro ['name'] armazenará somente o nome do

arquivo e não seu endereço.

A variável $arq_temp armazenará o arquivo e criará uma cópia temporária que será

enviada e a função move_uploaded_file fará a movimentação para o host, bem

como a substituição do nome temporário pelo original.

Mas nem tudo são flores! E se um usuário fizer o upload de um arquivo de nome já

existente? Você fará a verificação se o nome existe? Nada disso! Crie nomes!

Resolva esta!

Page 45: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

45

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 7

Sessão Vamos criar uma sessão, isto é, vamos armazenar os dados no servidor, diferente do

cookie que é armazenado no cliente (e manipulável), a sessão é armazenada no

servidor enquanto o navegador estiver aberto.

Crie uma página chamada sessao.php com um formulário para se inserir um texto.

<form name="form1" method="post" action="">

<label for="textfield"></label>

<input type="text" name="usuario" />

<input type="submit" name="submit" value="Enviar" />

</form>

Nesta mesma página, vamos criar a sessão.

<?php

if(isset($_POST['submit'])){

$usuario = $_POST['usuario'];

if($usuario!=""){

session_start();

$_SESSION['usuario'] = $_POST['usuario'];

}

}

?>

Script 7 - Criar sessão

Vamos explicar.

Se (if) clicar (isset) no botão submit ($_POST['submit'), receba os dados do

campo usuário. Se ele não for vazio (!=””), crie a sessão (session_start()). Nesta

sessão chamada usuário ($_SESSION[‘usuario’]) receba os dados do campo

usuário ($_POST[‘usuario’]).

Agora vamos verificar se s sessão realmente foi criada. Crie a página

sessao_criada.php.

<body>

<?php

session_start();

$usuario = $_SESSION['usuario'];

echo "Bem vindo $usuario";

?>

</body>

</html>

Script 8 - Receber dados da sessão

Page 46: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

46

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Perfeito! Funciona!!!

Page 47: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

47

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 8 Orientação a Objetos

<?php

class Leitura{

function inicio(){

$arqCont1 = 'dados/d1.txt';

$abreCont1 = fopen($arqCont1,"r");

$lerCont1 = fread($abreCont1, filesize($arqCont1));

fclose($abreCont1);

echo '<td><h1>'.$lerCont1.'</h1></td>';

$arqCont2 = 'dados/d2.txt';

$abreCont2 = fopen($arqCont2,"r");

$lerCont2 = fread($abreCont2, filesize($arqCont2));

fclose($abreCont2);

echo '<td><a href=\'index.php\'><img width=\'150\'

src=\'img/'.$lerCont2.'\' alt=\''.$lerCont1.'\'

title=\''.$lerCont1.'\' /></a></td>';

}

function lerTitulo(){

$arqNome = 'dados/d1.txt';

$abreNome = fopen($arqNome,"r");

$lerNome = fread($abreNome, filesize($arqNome));

fclose($abreNome);

if(isset($_GET['i'])){

$i = $_GET['i'];

$arqLink[$i] = 'links/l'.$i.'.txt';

$abreLink[$i] = fopen($arqLink[$i],"r");

$lerLink[$i] = fread($abreLink[$i],

filesize($arqLink[$i]));

fclose($abreLink[$i]);

echo "$lerNome - $lerLink[$i]";

}else{

echo $lerNome;

}

}

function lerEmpresa(){

for($i=3;$i<=3;$i++){

$arqCont[$i] = 'dados/d'.$i.'.txt';

$abreCont[$i] = fopen($arqCont[$i],"r");

$lerCont[$i] = fread($abreCont[$i],

filesize($arqCont[$i]));

fclose($abreCont[$i]);

echo '<p>'.$lerCont[$i].'</p>';

}

}

function lerLinks(){

//$home = $_GET['h'];

//$links = $_GET['l'];

$num_links = count(scandir("links"));

$num_docs = count(scandir("docs"));

for($i=1;$i<$num_links-1;$i++){

$arqCont[$i] = 'links/l'.$i.'.txt';

$abreCont[$i] = fopen($arqCont[$i],"r");

$lerCont[$i] = fread($abreCont[$i],

filesize($arqCont[$i]));

fclose($abreCont[$i]);

$navega = $i + 1;

Page 48: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

48

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

echo '<a

href=\'index.php?i='.$i.'&f='.$navega.'&l='.$i.'\'>'.$lerCont[$i].'</a

> | ';

//echo $lerCont[$i];

}

}

function lerLinksSelect(){

$num_links = count(scandir("links"));

$num_docs = count(scandir("docs"));

for($i=1;$i<$num_links-1;$i++){

$arqCont[$i] = 'links/l'.$i.'.txt';

$abreCont[$i] = fopen($arqCont[$i],"r");

$lerCont[$i] = fread($abreCont[$i],

filesize($arqCont[$i]));

fclose($abreCont[$i]);

echo "<option value='l$i.txt'>$lerCont[$i]</option>";

}

}

function lerConteudo(){

if(isset($_GET['i'])){

$inicio = $_GET['i'];

$fim = $_GET['f'];

for($i=$inicio;$i<=$fim;$i++){

$arqCont[$i] = 'docs/c'.$i.'.txt';

$abreCont[$i] = fopen($arqCont[$i],"r");

$lerCont[$i] = fread($abreCont[$i],

filesize($arqCont[$i]));

fclose($abreCont[$i]);

echo '<td>'.nl2br($lerCont[$i]).'</td>';}

}else{

for($i=1;$i<=2;$i++){

$arqCont[$i] = 'docs/c'.$i.'.txt';

$abreCont[$i] = fopen($arqCont[$i],"r");

$lerCont[$i] = fread($abreCont[$i],

filesize($arqCont[$i]));

fclose($abreCont[$i]);

echo '<td>'.nl2br($lerCont[$i]).'</td>';}

}

}

}

//$conteudo = new Leitura;

//$conteudo->lerConteudo();

//$conteudo->lerEmpresa();

//$conteudo->lerLinks();

?>

Continua...

Index.php

<?php include("motor.php");?>

<?php include("log.php");?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<title><?php $texto = new Leitura; $texto-

>lerTitulo();?></title>

<link rel="stylesheet" href="estilo.css" type="text/css" />

</head>

Page 49: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

49

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<body>

<div class="topo">

<table><tr>

<?php

$texto = new Leitura;

$texto->inicio();

?>

</tr></table>

</div>

<div class="menu">

<?php

$texto = new Leitura;

$texto->lerLinks();

?>

</div>

<div class="conteudo">

<table>

<tr>

<?php

$texto = new Leitura;

$texto->lerConteudo();

?>

</tr>

</table>

</div>

<div class="rodape">

<?php

$texto = new Leitura;

$texto->lerEmpresa();

?>

<p><a href="login.php">Login</a></p>

</div>

</body>

</html>

Page 50: Tecnologia WEB I I - institutosiegen.com.br€¦ · 1 Prof. Erwin Alexander Uhlmann – Tecnologia WEB I I Prof. Erwin Alexander Uhlmann Introdução ao PHP UHLMANN, Erwin Alexander.

50

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Bibliografia HOGAN, Brian P. Web Design para Desenvolvedores. Rio de Janeiro. Editora Ciência

Moderna, 2011.Pressman, Roger S. Engenharia Web. Rio de Janeiro. LTC, 2009.

PRESSMAN, Roger S. Engenharia Web. Rio de Janeiro. LTC, 2009.

CYBIS, Walter. Ergonomia e Usabilidade: conhecimentos, métodos e aplicações. São

Paulo. Novatec, 2007.

SILVA, Maurício Samy. Construindo sites com CSS e (X)HTML: sites controlados por

folhas de estilo em cascata. São Paulo. Novatec, 2008.

POWERS, Shelley. Aprendendo Javascript. São Paulo. Novatec, 2010.

SILVA, Maurício Samy. Criando sites com HTML: sites de alta qualidade com HMTL e

CSS. São Paulo. Novatec, 2008.