PHP Mauro César Lopes ppt carregar
PHP Mauro César Lopes 27-09-2009.
PublicouNatan Avila Alterado mais de 4 anos atrás
Apresentação em tema: "PHP Mauro César Lopes 27-09-2009."— Transcrição da apresentação:
1 PHP Mauro César Lopes
2 Alterações Data Alteração 30/10/2009 23/04/2010
Reescrita de slides buscando maior deixando o texto mais legível
3 Desenvolvido originalmente por Rasmus Lerdorf em 1994
PHP - Histórico Desenvolvido originalmente por Rasmus Lerdorf em 1994 Site oficial do PHP: PHP PHP 3.0 Junho/1998 PHP 4.0 Maio/2000 PHP 5.0 Julho/2004 Para versão PHP 4.0, Zeev Suraki e Andi Gutmans reescreveram a maior parte do engine PHP, criando-se a ZEND Engine
4 PHP/FI (Forms Interpreter) (1995) PHP/FI 2.0 (1997)
Histórico PHP/FI (Forms Interpreter) (1995) PHP/FI 2.0 (1997) PHP 3.0 (Junho de 1998) PHP 4.0 (maio de 2000) PHP 5.0 (Julho de 2007) Hoje PHP é um acrônimo recursivo: Hypertext Preprocessor
5 Características do PHP
Código aberto Embutido no HTML Baseado no servidor Suporte a diversos Banco de Dados Portabilidade
6 Áreas que os scripts PHP são usados
Scripts no lado do servidor (server-side) Scripts de linha de comando (CLI) Aplicações Desktop (exemplo: PHP-GTK)
Linux Unix like: Solaris, OpenBSD, MacOS X, ... Microsoft Windows
8 Servidores HTTP Apache IIS (Internet Information Service)
9 Tipo de programação Procedural Orientada a Objetos
10 Funcionalidades do PHP
Gerar HTML Geração de imagens Arquivos PDF Animações em Flash
11 Suporte a banco de dados
MySQL Oracle Interbase PostgresSQL Outros ...
12 Criação de scripts PHP Todo trecho de programa PHP deve estar entre as tags <?php e ?>para que o servidor Web saiba que esse trecho trata-se de um código em PHP e que deve ser processado Exemplo: <?php echo "Hello, world !"; ?> Tags de abertura e fechamento: <?php e ?>
13 Variáveis Variáveis proveem uma maneira de atribuir um nome a uma área de memória que conterá um dado Inicia por $ seguido de uma letra ou _ - é case sensitive, isto é, sensível ao caso (distinção entre letras maiúsculas e minúsculas) Por exemplo, a variável $Cor é completamente diferente da variável $cor Toda variável é identificada pelo sinal '$' antes do nome O tipo da variável não precisa ser explicitamente definido
14 Comentários De uma linha: De mais de uma linha:
// este é o comentário de uma linha # este é o comentário de uma linha De mais de uma linha: delimitado por /* e */
15 Tipos de dados Não é necessário declarar uma variável antes de usá-la. Basta atribuir um valor inicial. A checagem de tipos é feita dinamicamente. Exemplo: $x=5; $x="policamp"; $x=3.14; Inteiro Ponto flutuante String Array Objeto Checagem dinâmica de tipos O tipo da variável não precisa ser explicitamente definido
16 Tipo Inteiro (integer ou long)
$x = 4567; # inteiro $y = -127; # inteiro negativo $o = 0116; # inteiro em representação octal (base 8) $hex = 0x0F; # inteiro em representação hexadecimal (base 16)
17 Tipo de Ponto Flutuante (double ou float)
$PI=3.14; $MOL=6.02e23; # uso da notação científica
18 Tipo String Uma string é uma cadeia (sequência) de caracteres delimitadas pelos caracteres " ou ' Exemplos: "1", "Policamp", 'Campinas', 'Minas Gerais' Strings podem ser concatenadas usando o operador '.' $paragrafo_html = "<p>" . $texto . "</p>";
19 Tipo String Podem ser delimitadas por aspas simples (literal) ou aspas duplas (onde há interpretação de varáveis e caracteres especiais). Caracteres especiais: \n (new line) \r (carriage return) \t (tab) \\ (barra invertida) \$ (cifrão) \' (aspa simples) \" (aspa dupla) O uso de aspas duplas permite a interpolação de variáveis, que consiste em incluir o valor de uma variável dentro de outra.
20 Tipo Booleano Expressa um valor lógico que pode ser verdadeiro (TRUE) ou falso (FALSE) Exemplo: <?php $valida=true; if($valida) { print "Validado\n"; } ?>
21 Arrays São estruturas de dados que podem armazenar múltiplos valores
Exemplo: $cores= array('vermelho', 'verde', 'azul'); $cor = $cores[1]; // retorna "verde" (2º elemento do array) $cores[1]='amarelo'; // atribui novo valor (ao 2º elemento do array) Arrays são mapas ordenados. Um mapa é um tipo que relaciona valores a chaves. Este tipo é otimizado de várias maneiras, então você pode usá-lo como um array real, ou uma lista (vetor), hashtable (que é uma implementação de mapa), dicionário, coleção, pilha, fila e provavelmente mais. Como você pode ter outro array PHP como um valor, você pode facilmente simular árvores.
22 Podem ser definidos como mapeamentos ou vetores indexados Exemplo:
Arrays Podem ser definidos como mapeamentos ou vetores indexados Exemplo: <?php $cores[0]="Red"; $cores[1]="Green"; $cores[2]="Blue"; ?> As matrizes poderão ser indexadas: numericamente pelo nome
23 Arrays - tipos de índices
Ordenado  baseado em número (começa no 0) (indexada numericamente) Associativo  formado por caracteres alfanuméricos (indexada por nome)
24 Arrays – Criação e Inicialização
// cria e inicializa um array (indexada numericamente) $cores = array("Red", "Green", "Blue"); ou // cria e inicializa um array usando índices (explicitamente) $cores = array(0=>'Red', 1=> "Green", 2=>"Blue"); // cria e inicializa um array usando índices (numéricos) $cores[]="Red"; $cores[]="Green"; $cores[]="Blue";
25 Arrays Associativos São conjunto ordenados de chaves e valores, onde cada valor é acessado através de uma chave associada. Exemplo: $estados_e_capital = array ( 'SP' => 'São Paulo', 'MG' => 'Belo Horizonte', 'RJ' => 'Rio de Janeiro', 'ES' => 'Vitória' ); Arrays Associativos são também conhecidos como Dictionaries ou Hashes
26 Arrays Associativos – Criação e Inicialização
<?php $cor['red']=0; $cor['green']=255; $cor['blue']=0; ?> ou $cores = array('red'=>0, 'green'=>1, 'blue'=>2); Exemplo: <?php $cores=array('red'=>0, 'green'=>1, 'blue'=>2); foreach( $cores as $key => $value) { echo "$key => $value\n"; } ?>
27 Arrays - Funções Usamos a função unset() para destruir todo o array.
28 Arrays - Funções array_pop($array)  retira e retorna o último elemento do array array_push ($array, $var)  insere um ou mais elementos no fim de um array array_shift ($array)  retira e retorna o primeiro elemento de um array array_unshift ($a, $val)  insere um novo elemento no inicio de um array array_rand ($array)  retorna um ou mais elementos do array array_reverse ($array)  retorna um array com ordem inversa array_keys ($array)  retorna as chaves de um array array_values ($array)  retorna os valores de um array sizeof ()  retorna o número de elementos do array count ()  retorna a quantidade de elementos de um array Array_pop  retira e retorna o último elemento do array Array_push  insere um ou mais elementos no fim de um array Array_rand  retorna um ou mais elementos do array Array_reverse  retorna um array com ordem inversa Array_shift  retira e retorna o primeiro elemento de um array
29 Pseudo-Types (Pseudo-Tipos)
São tipos "falso" que ajudam da legibilidade: mixed: indica que o parâmetro pode aceitar múltiplos tipos mas não necessariamente todos os tipos. number: indica que o parâmetro pode ser tanto integer ou float callback Mixed: indica que o parâmetro pode aceitar múltiplos tipos mas não necessariamente todos os tipos. Number: indica que o parâmetro pode ser tanto integer ou float mixed mixed indica que um parâmetro pode aceitar vários (mas não necessariamente todos) os tipos gettype(), por exemplo, aceita todos os tipos do PHP, enquanto str_replace() somente aceita strings e arrays. number number indica que um parâmetro pode ser tanto um integer ou float. callback Algumas funções como call_user_func() ou usort() aceitam callback de funções definidas por usuário como parâmetro. Funções de callback não podem ser somente simples funções, mas também métodos de objetos incluindo métodos estáticos de classes. Uma função PHP é simplesmente passado pelo seu nome como uma string. Você pode passar qualquer função nativa ou definida por usuário. Note que construtores da linguagem como array(), echo(), empty(), eval(), exit(), isset(), list(), print() ou unset() não podem ser chamados usando um callback. A method of an instantiated object is passed as an array containing an object as the element with index 0 and a method name as the element with index 1. Static class methods can also be passed without instantiating an object of that class by passing the class name instead of an object as the element with index 0. Apart from common user-defined function, create_function() can be used to create an anonymous callback function.
30 Percorre os elemento de uma lista
Função each Função each  Retorna o par chave/valor corrente de um array e avança o seu cursor Percorre os elemento de uma lista $chamada = array ( "aluno1" => "francisco", "alunos2" => "jose" ); while(list($chave,$valor)=each($chamada) { echo "<p>Chave=[$chave], Valor=[$valor]\n"; }
31 Listas Cria variáveis como se fossem arrays
Assim como array(), não é exatamente uma função, e sim uma construção da própria linguagem. list() é usada para criar uma lista de variáveis em apenas uma operação. Exemplo: list($a,$b,$c)=array("a","b","c"); É uma forma de atribuição de vários valores ao mesmo tempo a diferentes variáveis
32 Transformação de Tipos por coerção
Coerção  é a conversão de um tipo em outro tipo diferente mediante operação realizada com tipos diferentes. Por exemplo: $a = 1; $a = $a + "5"; Nesse exemplo a variável $a é numérica (integer) na primeira atribuição e string na segunda atribuição Coerção  é a conversão de um tipo em outro tipo diferente mediante operação realizada com tipos diferentes. Por exemplo: $a=1; $a = $a + "5"; Nesse exemplo a variável $a é numérica (integer) na primeira atribuição e string na segunda atribuição
33 Transformação explicita de tipos
Feita via typecast (como em linguagem C) Exemplo: $a = 6; # a é um integer (6) $a = (float) 6; # é um float (6.0) typecast = "Conversão de Tipos"
34 Casts permitidos (int), (integer) Integer (real), (double), (float)
(string) String (array) Array (objeto) objeto Casts são conhecidos por "Moldagem" em português
35 Constantes Uma constante é um identificador (nome) para um único valor que não se altera durante a execução de um script) As constantes podem ser: Pré-definidas (pela própria biblioteca da linguagem) Definidas pelo usuário Exemplos: define("MOL", 6.14e22); # define a constante de nome MOL define("PI", ); # define a constante PI echo MOL; echo PI; É aconselhável o uso de letras maiúsculas para dar nomes a constantes Somente dados escalares ( boolean , integer , float e string ) pode ser colocados em constantes A constant is an identifier (name) for a simple value. As the name suggests, that value cannot change during the execution of the script (except for magic constants, which aren't actually constants). A constant is case-sensitive by default. By convention, constant identifiers are always uppercase.
36 Constantes - Exemplo <?php // Nomes de constantes válidos define("FOO", "alguma coisa"); define("FOO2", "alguma outra coisa"); define("FOO_BAR", "alguma coisa mais"); // Nomes de constantes inválidas define("2FOO", "alguma coisa"); // Isto é válido, mas deve ser evitado: // O PHP pode vir a fornecer uma constante mágica // que danificará seu script define("__FOO__", "alguma coisa"); ?>
37 Constantes "Mágicas" <?php print __FILE__ ; # nome do arquivo
echo "\n"; echo __LINE__; # nº da linha echo __FUNCTION__; # nome da função ?> São constantes definidas pela própria linguagem: Nome Descrição __LINE__A linha atual do script. __FILE__O caminho completo e nome do arquivo. Se utilizado dentro de um include, o nome do arquivo incluído será retornado. Desde o PHP 4.0.2, __FILE__ sempre contém um caminho absoluto com links simbólicos resolvidos enquanto em versões antigas ela continha um caminho relativo sob certas circunstâncias. __DIR__O diretório do arquivo. Se usado dentro de um include, o diretório do arquivo incluído é retornado. Isto é equivalente a dirname(__FILE__). Este nome do diretório não possui barra no final, a não ser que seja o diretório raiz. (Adicionado no PHP ) __FUNCTION__O nome da função (Acrescentado no PHP 4.3.0). A partir do PHP 5 esta constante retorna o nome da função como ela foi declarada (sensível a maiúsculas e minúsculas). No PHP 4 sempre retorna o nome em minúsculas. __CLASS__O nome da classe (Acrescentado no PHP 4.3.0). A partir do PHP 5 esta constante retorna o nome da função como ela foi declarada (sensível a maiúsculas e minúsculas). No PHP 4 sempre retorna o nome em minúsculas. __METHOD__O nome do método de classe. (Acrescentado no PHP 5.0.0). O nome do método é retornado como foi declarado (sensível a maiúsculas e minúsculas). __NAMESPACE__O nome do atual namespace (sensível a maiúsculas e minúsculas). Esta constante é definida em tempo de compilação (Adicionada no PHP 5.3.0).
38 Operadores Aritméticos Atribuição Bit a bit Lógicos Comparação Expressão condicional Incremento e decremento
+ Adição - Subtração * Multiplicação / Divisão % Resto da divisão (módulo)
40 Operadores de Atribuição
+= ($a = $a + 5; $a+=5;) -= *= /= %= .=
41 Operadores de Atribuição (2)
<<= >> &= |= ^=
42 Operadores Bit a Bit & (and) – operação E | (or) – operação OU ^ (xor) – operação OU-exclusivo ~ (not) – operação NÃO << - deslocamento de bits a esquerda  multiplicação por 2 >> - deslocamento de bits a direita  divisão por 2
43 Operadores Lógicos and (e) or (ou) xor (ou-exclusivo) ! (negação)
"||" tem precedência maior que "or" "&&" tem precedência maior que "and"
44 Operadores de Comparação (ou Condicionais)
== (igualdade) != (diferença) < (menor que) > (maior que) <= (menor ou igual a) >= (maior ou igual a)
45 Operador Ternário (ou Condicional)
(expressão) ? (expressão2) : (expressão3); Exemplo: $a=5; $a > 5 ? $b="1" : $b="0"; é equivalente a: if($a>5) $b="1"; else $b="0";
46 -operando : troca o sinal do operando ++ --
Operadores Unários -operando : troca o sinal do operando ++ -- ++$a : pré-incremento (incrementa $a em um e depois retorna $a) $a++ : pós-incremento --$a : pré-decremento $a-- : pós-decremento
! ~ ++ -- * / % + - . << >> > < >= <= == != <> & ^ | && || ?: = += -= *= /= %= &= ~= <<= >>= ^= AND XOR OR Operadores de mesma prioridade são avaliados da esquerda  direita. A precedência dos operadores diminui de cima para baixo
48 Estruturas de Controle
Blocos Comandos condicionais Comando de repetição Qualquer script PHP é construído por uma série de instruções. Uma instrução pode ser uma atribuição, uma chamada de função, um 'loop' (laço), uma instrução condicional, ou mesmo uma instrução que não faz nada (um comando vazio). Instruções geralmente terminam com um ponto e vírgula. Além disso, as instruções podem ser agrupados em um grupo de comandos através do encapsulamento de um grupo de comandos com chaves criando-se um bloco Um grupo de comandos (bloco) é uma instrução também.
49 Blocos São sequência de comandos delimitados por abre e fecha chaves ({ e })
50 if (expressão) comando;
Comando Condicional if (expressão) comando; if(expressão) { comando1; comandoN; } If($x == $y) Comando1; Comando2; If($x == $y) { }
51 Comando Condicional (2)
If (expressão) comando1; else comando2; If(expressão) comando1; comandoN; else comando1; comandoN; endif
52 Comando Condicional (3)
if(expressão1) { comando1; } elseif(expressão2) { comando2; elseif(expressão3) { comando3; ... else{ comandoN; Comando condicional de múltiplas condições
53 Exemplo: Comando Condicional
<?php $salario = 1000; $desconto = 0.10; // 10% $total = $salario - $salario * $desconto; if($total>900) { echo "Salário sujeito a recolhimento de imposto"; } ?>
54 switch switch (expressão) { case valor1: comando1; break; case valor2:
default: comandoN; } Avalia o valor de uma expressão para escolher qual bloco de instruções deverá ser executado
55 Exemplo - switch <?php $i = 1; switch($i) { case 0:
print "i é igual a 0"; break; case 1: print "i é igual a 1"; case 2: print "i é igual a 2"; default: print "i não é igual a 0, 1 ou 2"; } ?>
56 Comandos de repetição (laços)
while do .. while for foreach
57 while (expressão) { comando; }
while (expressão) : comando1; comandoN; endwhile; Avalia uma expressão e caso esta seja verdadeira é executado o comando enquanto a condição permanecer verdadeira. O laço executará 0 ou mais vezes dependendo o valor inicial
58 Exemplo – comando while
<?php $a = 1; while ($a < 5) { print $a; $a++; } ?>
59 do..while $a=0; do { echo "a=$a\n"; $a++; } while ($a<=10);
60 Exemplo – do .. while <?php $acabou = false; do { print "loop ..."; $acabou=true; } while (!$acabou); ?>
61 for (expr1; expr2; expr3 ) { comando1 .. comandoN }
62 Apresenta duas sintaxes:
foreach Apresenta duas sintaxes: foreach ($nome_array as $elemento) { comandos } ou foreach ($nome_array as $chave => $valor)
63 foreach (exemplo) <?php // define um array com cinco elementos
$a = array(1,2,3,4,5); foreach ($a as $valor) { echo "valor=$valor<br>"; } ?>
64 foreach (exemplo) <?php $a = array ( "cod1" => 10,
); foreach ($a as $chave => $valor) { echo "<p>chave=$chave, valor=$valor"; } ?> Exemplo de uso de array associativo
65 Comandos break e continue
break: pode ser usado em laços do, for e while. O break "quebra" a execução e continua executando o próximo comando break [n]; // onde n indica o número de estruturas que deverão ser finalizadas break cancela a execução do comando for, foreach, while, do-while ou switch atual. break aceita um argumento numérico opcional que diz a ele quantas estruturas aninhadas englobadas devem ser quebradas. continue é usado dentro de estruturas de loops para saltar o resto da iteração do loop atual e continuar a execução na avaliação e no início da próxima iteração.
66 Comandos break e continue
continue: interrompe a execução e avalia novamente a condição de teste continue [n]; // onde n indica o número de níveis que deverão ser iniciados
67 Exemplo - break <?php # break.php for($i=0; $i < 100; $i++) {
if($i == 10) { break; } echo " $i "; ?>
68 Exemplo - continue <?php // exibe os números pares
for($i=0; $i < 100; $i++) { if($i % 2) { continue; } echo " $i " . '<br>'; ?>
69 Funções Definição Argumentos Passagem de parâmetros (valor ou referência) Argumentos com valores pré-definidos
70 Funções - Sintaxe function nome_da_função( [arg1, [arg2, ...,[argN]]]
) { comando1; ... comandoN; [ return valor_de_retorno ]; } Uma função pode receber informações quando de sua chamada. Essas informações são os argumentos passados para função. Uma função poderá retornar ou não um valor
71 Funções definidas pelo usuário
Uma função deve ser definida usando a sintaxe indicada abaixo: <?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Função Exemplo.\n"; return $retval; } ?>
72 A declaração return é opcional
Valores Retorno A declaração return é opcional Qualquer tipo poderá ser retornado incluindo listas e objetos. Values are returned by using the optional return statement. Any type may be returned, including lists and objects. This causes the function to end its execution immediately and pass control back to the line from which it was called. See return() for more information
73 Exemplo do uso do return
<?php // calcula o quadrado de um número function quadrado($num) { return $num * $num; } echo quadrado(4); // saída '16'. ?>
74 Exemplo: Retornando um array com múltiplos elementos
<?php function numeros_pequenos() { return array (0, 1, 2); } list($zero,$um,$dois)=numeros_pequenos(); ?>
75 Passagem de parâmetros
Há duas formas de passagem de parâmetros: por valor (by value) por referência (by reference) O padrão é a passagem por valor.
76 Exemplo de passagem de parâmetros
<?php function incByValue($var, $valor) { $var += $valor; } function incByRef(&$var, $valor) { $a = 1; echo incByValue($a,2); // retorna a=1 echo "a=$a\n"; echo incByRef($a,2); // retorna a=3 ?>
77 Definição de valores padrões na chamada de funções
<?php function incrementa($x, $valor=1) { $x += $valor; return $x; } $a = 5; echo "1. " . incrementa($a) . "<br>"; echo "2. " . incrementa($a,-4) . "<br>"; echo "3. " . incrementa($a,5) . "<br>"; ?>
78 Modificadores de variáveis
Variáveis estáticas (static) mantém o valor que lhes foi atribuído na última execução. Usa o operador static. Variáveis variáveis ($$) Variáveis de ambiente
79 Exemplo: uso de variável estática
<?php function obtemProximo() { static $contador=0; return ++$contador; } echo obtemProximo(),"\n"; // retorna 1 echo obtemProximo(),"\n"; // retorna 2 echo obtemProximo(),"\n"; // retorna 3 ?>
80 Variáveis de Ambiente <?php phpinfo(); ?>
81 Inclusão de arquivos include  caso o arquivo não seja encontrado, é retornado um aviso ("warning") e o processamento da página continua require  caso o arquivo não seja encontrado, é retornado um erro fatal include_once  se o arquivo já estiver sido incluso ele será ignorado require_once  caso o arquivo não seja encontrado, é retornado um erro fatal Obs: include e include_once retornam uma advertência (warning) no caso de erro. require e require_once retornam um erro fatal em caso de erro. Include e Include_once retornam um warning no caso de erro, isto é, caso a página incluida não possa ser lida, porém a página continua em processamento Require e require_once retornam um erro fatal em caso de erro na inclusão da página
82 Include x Require O comando include é reavaliado a cada chamada A instrução require pode incluir apenas um arquivo (a função require não inclui arquivos dinamicamente)
83 Exemplo biblioteca.php <?php /* * função quadrado
* retorna o quadrado de um número * */ function quadrado($num) { return $num * $num; } ?>
84 Exemplo teste_include.php <?php
// carrega o arquivo com a função necessária include 'biblioteca.php'; // imprime o quadrado de 2 echo quadrado(2); ?>
85 string gettype(mixed var); Possíveis valores de retorno:
Tipo de variável string gettype(mixed var); Possíveis valores de retorno: Integer Double String Array Object Unknown type
86 Formulários HTML <form method="[GET|POST]" action="" name ="" > ... </form>
87 Tratando informações recebidas de Formulários
$_POST: array global que permite a leitura de variáveis passadas através de um formulário HTML usando método POST $_GET : array global que permite a leitura de variáveis passadas na URL através de um formulário HTML usando método GET Quando um formulário é submetido para um script PHP, qualquer variável do formulário será automaticamente disponível para o script
88 Método GET $nome = $_GET['nome'] $ = $_GET[' '] echo "$_GET['nome']"; echo "$_GET[' ']";
89 Método POST $_POST['nome'] $_POST[' '] echo "$_POST['nome']"; echo "$_POST[' ']";
90 Exemplo – Método POST form.html
<form method="POST" action="script.php"> Nome: <input name="nome" type="text"> </form> script.php <?php $nome=$_POST["nome"]; Echo "<p>nome=$nome"; </php>
91 Exemplo – Método GET form.html
<form method="GET" action="script.php"> Nome: <input name="nome" type="text"> </form> script.php <?php $nome=$_GET["nome"]; echo "<p>nome=$nome"; </php>
92 Algumas funções úteis string htmlspecialchars ( string $string [, int $quote_style [, string $charset]] )  Converte caracteres especiais para a realidade HTML string stripslashes ( string $str )  Retorna uma string com as barras invertidas retiradas. (\ se torna ' e assim por diante.) Duas barras invertidas (\\) se tornam uma (\). urlencode(string $str);  Codifica uma URL urldecode(string $str);  Decodifica qualquer %## codificado na string. nl2br() — Insere quebras de linha HTML antes de todas newlines em uma string htmlspecialchars(<string>); Esta função é idêntica a htmlspecialchars() em toda forma, exceto que com htmlentities(), todos caracteres que tem entidade HTML equivalente são convertidos para estas entidades. Se você está querendo decodificar (o inverso), você pode usar html_entity_decode(). stripslashes(<string>); urlencode(); Retorna uma string em que todos os caracteres não-alfanuméricos com exceção de -_. são substituídos com um sinal de porcento (%) seguido por dois dígitos hexadecimais e espaços codificados como um sinal de (+). É codificada do mesmo jeito que dados vindos de um formulário WWW é codificado, isto é, da mesma maneira que application/x-www-form-urlencoded urldecode(); Decodifica qualquer %## codificado na string.
93 Variáveis Superglobals
Contém uma referencia a todas as variáveis disponíveis no escopo global no script. As chaves desse array são os nomes das variáveis globais. $_SERVER Variáveis setadas pelo servidor web ou de outra forma relacionadas diretamente ao ambiente de execução do ambiente corrente. $_GET Variáveis providas pelo script via URL query string. $_POST Variáveis providas pelo script via HTTP POST. $_COOKIE Variáveis providas ao script via HTTP cookies. Várias variáveis pré-definidas no PHP são "superglobais", que significa que elas estão disponível em todos escopos para todo o script. Não há necessidade de fazer global $variable; para acessá-lo dentro de funções ou métodos. Veja mais informações em: $GLOBALS Contains a reference to every variable which is currently available within the global scope of the script. The keys of this array are the names of the global variables. $GLOBALS has existed since PHP 3. $_SERVER Variables set by the web server or otherwise directly related to the execution environment of the current script. Analogous to the old $HTTP_SERVER_VARS array (which is still available, but deprecated). $_GET Variáveis providas pelo script via URL query string. Análogo ao array $HTTP_GET_VARS array (which is still available, but deprecated). $_POST Variáveis providas pelo script via HTTP POST. Análogo array $HTTP_POST_VARS (which is still available, but deprecated). $_COOKIE Variables provided to the script via HTTP cookies. Analogous to the old $HTTP_COOKIE_VARS array (which is still available, but deprecated).
94 Variáveis Superglobals (2)
$_FILES Variáveis providas ao script através do upload de arquivos via POST usando HTTP. $_ENV Variáveis de ambientes providas ao script. $_REQUEST Variáveis providas ao script via mecanismos de entrada como GET, POST e COOKIE. Veja também import_request_variables(). $_SESSION Variáveis que estão registradas a uma sessão de associada a um script. $_FILES Variables provided to the script via HTTP post file uploads. Analogous to the old $HTTP_POST_FILES array (which is still available, but deprecated). See POST method uploads for more information. $_ENV Variables provided to the script via the environment. Analogous to the old $HTTP_ENV_VARS array (which is still available, but deprecated). $_REQUEST Variables provided to the script via the GET, POST, and COOKIE input mechanisms, and which therefore cannot be trusted. The presence and order of variable inclusion in this array is defined according to the PHP variables_order configuration directive. This array has no direct analogue in versions of PHP prior to See also import_request_variables(). Caution: Since PHP 4.3.0, FILE information from $_FILES does not exist in $_REQUEST. Note: When running on the command line , this will not include the argv and argc entries; these are present in the $_SERVER array. Um array associativo que por padrão contém informações de $_GET, $_POST e $_COOKIE. $_SESSION Variables which are currently registered to a script's session. Analogous to the old $HTTP_SESSION_VARS array (which is still available, but deprecated). See the Session handling functions section for more information.
95 Funções úteis na validação de formulários
bool empty ( mixed $var ) – verifica se determinada variável esta vazia (nula) strlen() – retorna o número de caracteres de uma string strstr() – acha a primeira ocorrência de uma string. Se não encontrar retorna falso (FALSE) bool isset ( mixed $var [, mixed $var [, $...]] ) Informa se a variável foi iniciada (Retorna TRUE se var existir; FALSE senão)
96 HTTP é um protocolo "sem estado"
Cookies e Sessions HTTP é um protocolo "sem estado" O que significa o protocolo HTTP ser um protocolo "sem estado" ? Significa que ele não guarda informações entre uma transação e outra (elas são independentes). Portanto é necessário um mecanismo que permita que sejam criadas "relações entre as transações"
97 Cookies e Sessions Cookie e Session são mecanismos que permitem armazenar informações enquanto o usuário navega entre diferentes páginas de um site
98 Exemplos de uso de cookies e sessões
Autenticação de usuários Carrinho de compras Exibição de anúncios ou imagens Personalização de páginas
99 Uso de Cookies É um arquivo texto armazenado no computador do usuário (cliente) para ser posteriormente recuperado pelo servidor Formado por um par nome/valor Tempo de validade: tempo no qual o cookie estará armazenado no micro do usuário O uso de cookie poderá ser habilitado / desabilitado pelo navegador (no cliente)
100 Uso de cookies bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]]), onde: nome: nome do cookie (obrigatório) valor: é o conteúdo do cookie (se não for fornecido o cookie será removido) validade: tempo de validade do Cookie caminho: caminho no servidor onde o cookie estará disponível domínio: domínio para o qual o cookie estará disponível Seguro: 0 ou 1 (se 1 o cookie apenas será transmitido caso segue uma conexão segura (HTTPS))
101 setcookie("username","joao@net");
Exemplo setcookie ("username"); // remove o cookie username Obs: o envio de cookies deverá ser a primeira coisa a ser feita na transmissão de uma página (antes inclusive das tags <html> e <body>)
102 Recuperação de Cookies
Uso do array superglobal $_COOKIE Exemplo: E em uma outra página: $_COOKIE["username"]; // lê o valor do cookie
103 Recuperação de Cookies
IMPORTANTE: os cookies não poderão ser usados dentro da própria página que os criou. Ele poderá apenas ser usado a partir do envio da próxima solicitação vinda do navegador do usuário (do cliente)
104 Exemplo de uso: autenticação de usuários
"Autenticação é uma maneira que você tem de se certificar de que somente os usuários que possuem autorização estão acessando uma área restrita do seu site"
105 Passos para Autenticação
Podemos dividir a autenticação de usuários com o uso de cookies em três passos: Criação de uma página de login Criação de uma rotina de validação para que seja usada nas páginas que fazem uso das áreas restritas Criação de uma página de logout para os usuários autenticados a fim de realizar a exclusão do cookie.
106 Exemplo de login usando cookies
login.html  página inicial de login login.php  processa o pedido de login; valida usuário e senha no banco de dados valida_cookies.inc  valida os cookies pagina_inicial.php  página validada logout.php  limpa os cookies armazenados no cliente; redireciona para página de login
107 Sessão (Session) É um período de tempo durante o qual uma pessoa navega pelas páginas de um site Permitem o compartilhamento de informações entre diferentes páginas Cada sessão possui um session id (SID) que é um identificador único
108 Propagação do SessionID
Poderá ser feito por: cookies propagação de variáveis na URL (endereço destino)
109 Criação de Sessão no PHP
Manual Explícita (session_start) Implícita (ao registrar uma variável com a função session_register) Automática Depende da diretiva session.auto_start estar habilitada no arquivo php.ini
110 Exemplo de Session <?php session_start();
if(!isset($_SESSION['contador'])) { $_SESSION['contador']=1; } else { $_SESSION['contador']++; $contador= $_SESSION['contador']; echo "<p>Contador=$contador"; $sid=session_id(); echo "<p>session_id= $sid"; ?> A função session_start() deve vir antes de qualquer saída HTML.
111 Cookies x Sessões Cookies Tempo de duração
Pode permanecer armazenado por mais tempo (mesmo após o navegador ser eliminado) Local de armazenamento Pequenos arquivos armazenados na máquina do usuário Sessões Tempo de duração Dura enquanto o usuário permanecer dentro do site Local de armazenamento Arquivos localizados no servidor (um arquivo por sessão)
112 Cookies x Sessões Cookies Sessões Tempo de duração
Pode permanecer armazenado por mais tempo (mesmo após o navegador ser eliminado) Dura enquanto o usuário permanecer dentro do site Local de armazenamento Pequenos arquivos armazenados na máquina do usuário Arquivos localizados no servidor (um arquivo por sessão)
113 Parâmetros de Configuração - Session
114 Parâmetros de Configuração - Session
Directive Local Value Master Value session.auto_start Off session.bug_compat_42 On session.bug_compat_warn session.cache_expire 180 session.cache_limiter nocache session.cookie_domain no value session.cookie_httponly session.cookie_lifetime session.cookie_path / session.cookie_secure session.entropy_file session.entropy_length session.gc_divisor 100 session.gc_maxlifetime 1440 session.gc_probability 1 session.hash_bits_per_character 4 session.hash_function
115 Parâmetros de Configuração - Session
session.name PHPSESSID session.referer_check no value session.save_handler files session.save_path C:\xampp\tmp session.serialize_handler php session.use_cookies On session.use_only_cookies Off session.use_trans_sid
116 Comandos básicos de saída
echo  é uma comando que imprime uma ou mais variáveis no console print  é uma função que imprime uma string no console var_dump  imprime o conteúdo de uma variável print_r  imprime o conteúdo de uma variável, mas num formato mais legível para o programador
117 Manipulação de Arquivos
fopen feof fgets fwrite fclose file_put_contents file_get_contents
118 Manipulação de Arquivos
file copy rename unlink file_exists is_file
119 Manipulação de Diretórios
mkdir getcwd chdir rmdir opendir closedir readdir
120 Manipulação de Arquivos e Diretórios
int fopen(string arquivo, string modo [, int usar_path ´, resource contexto]]) onde: arquivo: modo: usar_path: contexto:
121 Manipulação de strings – algumas funções
strtoupper()  retorna a string usando letras maiúsculas strtolower ()  retorna a string usando letras minúsculas substr ()  retorna uma substring strpad ()  strrepeat ()  strlen ()  retorna o tamanho da string str_replace ()  substitui uma string por outra str_pos ()  retorna a posição de início de uma string em outra string
122 Classes e Objetos Classes Métodos
123 Classe - Exemplo class Complexo { private $real; private $imag;
public function real() { return $this->real; } public function imag() { return $this->imag;
124 Criação de Objetos $z = new Complexo; $parte_real = $z->real();
$parte_imag = $z->imag();
125 Bibliografia Dall'Oglio, P. PHP Programando com Orientação a Objetos. Novatec NIEDERAUER, J. Web Interativa com Ajax e PHP. Novatec, 2007. NIEDERAUER, J. Desenvolvendo Web Sites com PHP. Novatec, 2007. Manual do PHP.
126 Backup Slides
127 PHP e MySQL
128 $conexao = mysql_connect( "localhost", "usuario", "password"); ?>
Conectando do BD MySQL <?php $conexao = mysql_connect( "localhost", "usuario", "password"); ?>
129 Selecionando a Base de Dados
$nomebanco = mysql_select_db('teste', $conexao);
130 Exemplo de Consulta em SQL
<?php $resultado = mysql_query( "select * from produto" ); while($linha=mysql_fetch_array($resultado) { foreach($linha as $valor) { echo "$valor<br />"; } mysql_close($conexao); ?>
131 Fechando uma conexão mysql_close($conexao)
132 mysql API mysql_affected_rows() – retorna o número de linhas afetadas por uma operação mysql_fetch_array() – armazena a linha atual em um array associativo mysql_fetch_object() – retorna uma linha como um objeto mysql_fetch_row() – armazena a linha atual em um array mysql_result() – retorna uma coluna do resultado mysql_num_rows() – retorna o numero de linhas de uma consulta mysql_num_fields() – retorna o numero de colunas de uma consulta mysql_field_name() – retorna o nome de uma coluna em uma consulta
133 mysql API int mysql_connect(str host, str username, str password)
int mysql_select_db(str database [, int link_identifier]) int mysql_query(str query [, int link_identifier]) array mysql_fetch_array(int result [, int result_type])
134 mysql API array mysql_fetch_row(int result)
int mysql_insert_id([int link_identifier]) --> retorna o número de linhas após execução de um comando select int mysql_affected_rows([int link_identifier]) --> retorna o nº de linhas que foram afetados em uma tabela por comandos update, insert e delete
135 mysql API mysql_error()
136 Aplicação de Cadastro de Alunos Apresentação de Notícias
Exemplo Aplicação de Cadastro de Alunos Apresentação de Notícias
137 Exemplos de Funções
138 Formata a data e a hora local int time ( void )
Funções date e time string date ( string $format [, int $timestamp ] ) Formata a data e a hora local int time ( void ) Retorna o timestamp Unix atual Veja mais funções em:
139 Exemplos <?php echo date("Y-m-d",0),"\n";
echo date("Y-m-d",time()),"\n"; echo date("d/m/Y",time()),"\n"; echo date("d/m/y",time()),"\n"; echo date("d/m/y H:i:s",time()),"\n"; ?> 27/11/2008 27/11/08 27/11/08 09:20:11
140 Função mktime int mktime ([ int $hora [, int $minuto [, int $second
[, int $mes [, int $dia [, int $ano [, int $is_dst ]]]]]]] ) Obtém um timestamp Unix para uma data
141 Exemplo <?php echo date("d/m/Y H:i:s",
mktime(2, 12, 4, 10, 3, 01)); ?>
142 Função strtotime $data_formatada = date("d/m/Y",strtotime($data)); echo "<td>$data_formatada</td>";
143 date_format(data, formato) Exemplo:
Datas - MySQL date_format(data, formato) Exemplo: SELECT *, date_format(data,'%d/%m/%Y') dt FROM teste.gasto g where date_format(data,'%d/%m/%Y')='26/11/2008'
144 Exemplo Seleciona os gastos entre duas datas:
SELECT *, date_format(data,'%d/%m/%Y') dt FROM teste.gasto g where date_format(data,'%Y%m%d') between ' ' and ' '
145 Qual é a diferença entre os comandos echo e print ?
Questões Qual é a diferença entre os comandos echo e print ? echo "1","2"; // ok print "1","2"; // erro: o comando print não suporta ',' separando os operadores Qual é a diferença entre os comandos require e include ?
146 Cabeçalho de um script PHP
--- ?>
147 Definição de variáveis
Em PHP não é necessário fazer a declaração de variáveis
148 Delimitadores de string
''  aspas simples (a string exibe seu valor literal) s='um $nome\n'; ""  aspas duplas (as variáveis e caracteres de escape são avaliados e seus valores são substituídos) s="um $nome\n"; `` aspas invertidas (apóstrofo) (executam a string como um comando do sistema operacional) heredoc $str = <<<EOD Aqui podemos definir uma string EOD;
149 Definição de Constantes
bool define (string nome, misto valor [, bool case_insensitive]) Exemplo: define (OK, true); define(NOK, false); echo OK; echo NOK;
150 Tipos de Variáveis Numéricas Alfanuméricas (Strings) Arrays Objetos
151 Classes Classes: são agrupamentos de variáveis e funções Objeto: é uma instância de uma classe
152 Diferenças entre echo e print
TRUE 1 – qualquer valor não vazio é tratado como verdadeiro FALSE 0 echo "1","2"; // ok print "1","2"; // erro: o comando print não suporta ',' separando os operadores
153 PHP 5.3 Migração Manual do PHP Referência de Funções
154 Links Revista PHP Magazine
155 Funções MySQL mysql_affected_rows — Obtém o número de linhas atingidas na operação anterior do MySQL mysql_change_user — Muda o usuário da conexão ativa mysql_client_encoding — Retorna o nome do conjunto de caracteres mysql_close — Fecha a conexão MySQL mysql_connect — Abre uma conexão com um servidor MySQL mysql_create_db — Cria um banco de dados MySQL mysql_data_seek — Move o ponteiro interno do resultado mysql_db_name — Obtém dados do resultado(nome de banco de dados) mysql_db_query — Envia uma consulta MySQL mysql_drop_db — Exclui um banco de dados MySQL
156 Funções MySQL mysql_errno — Retorna o valor numérico da mensagem de erro da operação MySQL anterior mysql_error — Retorna o texto da mensagem de erro da operação MySQL anterior mysql_escape_string — Escapa uma string para usar em uma consulta MySQL mysql_fetch_array — Obtém uma linha como uma matriz associativa, uma matriz numérica, ou ambas mysql_fetch_assoc — Obtém um linha do resultado como uma matriz associativa mysql_fetch_field — Obtém informações sobre uma coluna de um resultado e retorna como um objeto mysql_fetch_lengths — Obtém o tamanho de cada saída no resultado mysql_fetch_object — Obtém o resultado de uma linha como um objeto mysql_fetch_row — Obtém uma linha como uma array numérica mysql_field_flags — Obtém as flags associadas ao campo especificado em um resultado
157 Funções MySQL mysql_field_len — Retorna o tamanho do campo especificado mysql_field_name — Obtém o nome do campo especificado em um resultado mysql_field_seek — Define o ponteiro do resultado para o índice de campo especificado mysql_field_table — Obtém o nome da tabela na qual o campo especificado esta mysql_field_type — Obtém o tipo do campo especificado em um resultado mysql_free_result — Libera um resultado da memória mysql_get_client_info — Obtém informações do cliente MySQL mysql_get_host_info — Obtém informações do servidor MySQL mysql_get_proto_info — Obtém informações do protocolo MySQL mysql_get_server_info — Obtém informações do servidor MySQL
158 Funções MySQL mysql_info — Obtém informação sobre a consulta mais recente mysql_insert_id — Obtém o ID gerado pela operação INSERT anterior mysql_list_dbs — Lista os bancos de dados disponíveis em um servidor MySQL mysql_list_fields — Lista os campos de uma tabela MySQL mysql_list_processes — Lista os processos MySQL mysql_list_tables — Lista as tabelas em um banco de dados MySQL mysql_num_fields — Obtém o numero de campos em um resultado mysql_num_rows — Obtém o número de linhas em um resultado mysql_pconnect — Abre uma conexão persistente com um servidor MySQL mysql_ping — pinga uma conexão com o servidor ou reconecta se não houver conexão
159 Funções MySQL mysql_query — Envia uma consulta MySQL
mysql_real_escape_string — Escapa os caracteres especiais numa string para usar em um comando SQL, levando em conta o conjunto atual de caracteres. mysql_result — Retorna dados do resultado mysql_select_db — Seleciona um banco de dados MySQL mysql_set_charset — Sets the client character set mysql_stat — Retorna o status atual do sistema mysql_tablename — Retorna o nome da tabela do campo mysql_thread_id — Returna o ID da thread atual mysql_unbuffered_query — Envia uma query para o MySQL, sem retornar e colocar em buffer as linhas do resultado