programação web aula 11 - php - inf.ufpr.br · programação web aula 11 - php bruno müller...

25

Upload: hamien

Post on 11-Nov-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Programação Web

Aula 11 - PHP

Bruno Müller Junior

Departamento de Informática

UFPR

4 de Maio de 2015

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 2: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

1 Origens2 Funcionamento

ExemploExemplo - arquivo PHPExemplo: arquivo cliente

Características SintáticasVariáveis

TiposExpressões

ComandosSaídaOperadoresCondicionaisVariáveis

ArraysCriação e AtribuiçãoFunções para lidar com ArraysAcesso Sequencial a Elem. de ArrayAcesso Sequencial a Elem. de ArrayDiversos em Arrays

FunçõesPassagem de parâmetros

PHP e Form

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 3: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Origens

Rasmus Lerdorf (Apache Group), 1994 (aplicação pessoal).

1995 Primeiro pacote. PHP = Personal Home Page Tools.

Posteriormente, PHP = PHP Hypertext Preprocessor.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 4: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Funcionamento

Quando o navegador carrega uma página .html, e encontrauma referência a um arquivo com extensão .php, .php3 ou.phtml, então:

ele envia uma requisição ao servidor indicando o arquivo;o servidor obtém o arquivo e envia ao interpretador php que:

interpreta os trechos do arquivo que indicam código php ecopia o resultado da execução para a saída (modo

interpretação);copia o resto para a saída (modo cópia);

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 5: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Exemplo

Exemplo

Os próximos slides mostram o funcionamento de um scriptPHP no lado do servidor e no lado do cliente.

Não será possível usá-lo na prática pois o Dinf não instalaservidores php por medida de segurança.

Existem vários tutoriais, mas usaremos o da w3schools:http://www.w3schools.com/php/.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 6: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Exemplo - arquivo PHP

Exemplo - arquivo PHP

No script php abaixo, o trecho em vermelho está em modo

interpretação e o trecho em preto está em modo cópia. .<?xml version = "1.0" encoding = "utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- today.php - A trivial example to illustrate a php document --><html xmlns = "http://www.w3.org/1999/xhtml">

<head> <title> today.php </title></head><body>

<p><?php

print "<b>Welcome to my home page <br /> <br />";print "Today is:</b> ";print date("l, F jS");print "<br />";

?></p>

</body></html>

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 7: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Exemplo: arquivo cliente

Exemplo: arquivo cliente

Ao ser executado, irá gerar o seguinte arquivo enviado aoservidor:

Observe que o resultado gerado pelo interpretador PHPsubstituiu o script. Em princípio, o cliente não vê o script.

<?xml version = "1.0" encoding = "utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- today.php - A trivial example to illustrate a php document --><html xmlns = "http://www.w3.org/1999/xhtml">

<head> <title> today.php </title></head><body>

<p><b>Welcome to my home page <br /> <br />Today is:</b> Wednesday, April 8th<br /> </p>

</body></html>

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 8: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Características Sintáticas

Características Sintáticas

No arquivo html, o script encontra-se entre os tags <?php> e</php>.

A diretiva include("arquivo.inc") faz o interpretadorsubstituir a diretiva pelo o arquivo indicado.

As variáveis são sempre precedidas com o símbolo $.

Regra sintática: $[a-z|A-Z|_][a-z|A-Z|_|0-9]*

Case-sensitive

Palavras reservadas não são Case-sensitive (ou seja, While,WHILE, WhIlE são a mesma coisa.

Exemplos de palavras reservadas and, break, case, etc.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 9: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Variáveis

Variáveis

Tipos Escalares: boolean, integer, double, string

Tipos Compostos: array, object

Tipos Especiais: resource, NULL

Declaração implícita de tipos.

O tipo é de�nido em atribuição à var.Var. sem atribuição: unbound variable (valor NULL).IsSet é uma função booleana que indica se a var. é ou nãounbound.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 10: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Variáveis

Tipos

Integer corresponde ao long em C.

Double corresponde ao double em C.

String 'String $var' (literal) ou "String $var"(substituição).

Codi�cação String Projetado para inglês. Cuidadocom UTF-8, Unicode, etc.

Boolean [TRUE | FALSE] Case-sensitive.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 11: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Variáveis

Expressões

Aritméticas

Semelhantes a C: +,-,*,/,%,++,�Funções pré-de�nidas: floor(double), ceil(double),round(integer), etc.

String

funções pré-de�nidas: strlen, strcmp, chop, substretc.$str = "Apples are good";$sub = substr($str, 7, 1); # = "a"

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 12: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Comandos

Comandos

Vamos examinar os comandos PHP para:

Saída;Expressões de Comparação;Comandos de Comparação;Comandos Repetitivos;Arrays

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 13: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Saída

Saída

print para saída não formatada

printf para saída formatada

Exemplos:

print("O resultado é $res <br />");print("O resultado é %d <br />", $res);

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 14: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Saída

Relacionais:

Semelhantes a C: >, <, >=, <=. ==, !=

=== é TRUE se os dois operandos são do mesmo tipo e contémo mesmo valor.!== que é not ===

executa coerção entre String e Números. Por exemplo, aocomparar String com Integer ou Double, converte para oString para o outro operador e compara.

a comparação de dois String contendo números é interessante:("12.0"== "12") ⇒ TRUE

Booleanos: and, or, xor, !, &&, ||. A precedência de&& e || é menor que and e or.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 15: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Saída

if ($dia == "Sabado" || $dia == "Domingo")$hoje = "Feriado";

else {$hoje = "Trabalho";$acordar = TRUE;

}

switch ($dia) {case "Feriado" : print "<br> FESTA </br>";

break;case "Trabalho": print "<br> Levantar </br>";

break;default : print "<br> Me perdi </br>";

}

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 16: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Saída

Semelhantes a C: while, for, do-while

Para Arrays: foreach

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 17: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Arrays

Características:

Combinação de Array convencional com Hash;Cada Array tem duas partes: chave e valor;Em Array convencional, a chave é um inteiro não negativo;

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 18: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Criação e Atribuição

Criação:$list[0] = 17;$list[1] = "Um string";$list[] = 42; # Posição [2] (primeira disponível)$list = array();$list = array(14, 24, 47, 89);$list = array(1=>14, 2=>24, 3=>47, 4=>89);$list = array("Pedro"=>14, "Joao"=> 24, "Carlos"=>47, 6=>"Junior");

Atribuição:$list['Carlos']=48;# atribuição múltipla$trees = array ("oak", "pine", "binary");list ($a1, $a2, $a3) = $trees# equivalente a $a1="oak", $a2="pine",$a3="binary

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 19: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Funções para lidar com Arrays

unset: elimina elementos indicados do array ou o array todo.$list = array[2, 4, 6, 8]unset ($list[2]) # $list passa a ter três elementos:[2,4,8]unset ($list) # $list é eliminado

array_keys: cria um novo Array somente com as chaves doparâmetro.array_values: cria um novo Array somente com os valoresdo parâmetro.$heights = array ("Mon" => 74, "Tue" => 70, "Wed" => 67);$days = array_keys ($heights)# $days = [0 => "Mon", 1 => "Tue", 2 => "Wed"]$temps = array_keys ($heights)# $temps = [0 => 74, 1 => 70, 2 => 67]

array_key_exists(chave, Array)

is_array(var)

sizeof(Array)

explode(delim, String) converte String em Array usandodelim como separador;implode(delim, Array)

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 20: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Acesso Sequencial a Elem. de Array

Além do acesso via chaves, PHP também permite acessosequencial a elementos de um array.

Para isto, cada array contém uma referência ao elemento atualatravés da função current(Array).

Para seguir para o próximo elemento, usa-se a funçãonext(Array).

Assim como uma lista, o último elemento aponta para FALSE.$city = current (cities);print ("$city <br />");while ($city = next(cities))

print ("$city <br />");

Quando alguns elementos tiverem o conteúdo FALSE, utiliza-seeach ao invés de next, pois ele retorna o par (chave, valor) aoinvés de só o valor.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 21: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Acesso Sequencial a Elem. de Array

Além do acesso via chaves, PHP também permite acessosequencial a elementos de um array.

Para isto, cada array contém uma referência ao elemento atualatravés da função current(Array).

Para seguir para o próximo elemento, usa-se a funçãonext(Array).

Assim como uma lista, o último elemento aponta para FALSE.$city = current (cities);print ("$city <br />");while ($city = next(cities))

print ("$city <br />");

Quando alguns elementos tiverem o conteúdo FALSE, utiliza-seeach ao invés de next, pois ele retorna o par (chave, valor) aoinvés de só o valor.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 22: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Diversos em Arrays

Exemplo com each:$salaries = array ("Mike" => 3000, "Jerry" => 1000, "Fred" => 500);while ($employee = each ($salaries)) {$name = $employee ["key"];$salary = $employee ["value];print ("The salary of $name is $salary <br />");

}

As funções array_push e array_pop são úteis paraimplementar pilha em arrays.O comando foreach é um comando repetitivo para acessartodos os elementos de um array.foreach ($list as $temp); #list é o array, temp é a var.

print ("$temp <br \>);

A função sort ordena o array de acordo com o value esubstitui key por {0, 1, e ... }.

A função asort ordena array de acordo com o value

mantendo as key originais.

A função ksort ordena array de acordo com key.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 23: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Funções

Estrutura geral:function nome ([parametros]) { ... }

o nome da função não é case sensitive (sum == SUM);

comando return indica o valor a ser retornado pela função.Se não existe, não retorna nada.

Para usar funções de arquivos externos, usar comandoinclude.

o número de parâmetros formais pode ser diferente dosparâmetros reais. Excessos de parâmetros reais são ignorados.Falta de parâmetros reais fazem os parâmetros formais serãounbound.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 24: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

Passagem de parâmetros

Padrão: passagem por valor

Passagem por referência: Método 1 (usando & no parâmetroformal):function set_max (&$max, $first, $second) {if ($first >= $second)

$max = $firstelse

$max = $second;}

Passagem por referência: Método 2 é usar & no parâmetro real

Escopo de variáveis:http://www.w3schools.com/php/php_variables.asp

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP

Page 25: Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller Junior Departamento de Informática UFPR 4 de Maio de 2015 Bruno Müller JuniorDepartamento

Origens Funcionamento

PHP e Form

http://www.w3schools.com/php/php_forms.asp

Estudo adicional: http://www.w3schools.com/php/

Problemas:

por ser simples, PHP é a "porta de entrada"de programadoresno mundo da web.houveram vários casos de quebra de segurança (principalmentesql injection). Muitos eram problemas dos interpretadores,outros de programadores.existem muitos frameworks, talvez demais:http://www.phpframeworks.com/,Referência a problemas de segurança:http://blog.templatemonster.com/2014/05/08/

php-security-issues/. Procure por outros.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 11 - PHP