Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller...
Transcript of Programação Web Aula 11 - PHP - inf.ufpr.br · Programação Web Aula 11 - PHP Bruno Müller...
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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