Buscar

PHP Aula

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 160 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 160 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 160 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Clique para editar o estilo do título mestre
Clique para editar o estilo do subtítulo mestre
*
*
*
PHP
Mauro César Lopes
27-09-2009
*
*
*
Alterações
*
*
*
PHP
Desenvolvido originalmente por Rasmus Lerdorf em 1994
site do PHP: http://www.php.net
PHP 2.0 1995
PHP 3.0 Junho/1998
PHP 4.0 Maio/2000
PHP 5.0 Julho/2004
*
*
*
Características do PHP
Código aberto
Embutido no HTML
Baseado no servidor
Suporte a diversos Banco de Dados
Portabilidade
*
*
*
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)
*
*
*
Áreas que os scripts PHP são usados
Scripts no lado do servidor (server-side)
Scripts de linha de comando
Aplicações Desktop
*
*
*
Sistemas operacionais
Linux
Unix like: Solaris, OpenBSD, MacOS X, ...
Microsoft Windows
*
*
*
Servidores HTTP
Apache
IIS (Internet Information Service)
*
*
*
Tipo de programação
Procedural
Orientada a Objetos
*
*
*
Funcionalidades do PHP
Gerar HTML
Geração de imagens
Arquivos PDF
Animações em Flash
*
*
*
Suporte a banco de dados
MySQL
Oracle
Interbase
PostgresSQL
Outros
...
*
*
*
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 !";
?>
*
*
*
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
*
*
*
Comentários
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 */
*
*
*
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
*
*
*
Inteiros (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)
*
*
*
Ponto Flutuante (double ou float)
$PI=3.14;
$MOL=6.02e23; # uso da notação científica
*
*
*
Strings
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 '.'
Exemplos:
$paragrafo_html = "<p>" . $texto . "</p>";
*
*
*
Strings
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 simple)
\" (aspa dupla)
*
*
*
Booleano
Expressa um valor lógico que pode ser verdadeiro (TRUE) ou falso (FALSE)
Exemplo:
<?php
 $valida=true;
 if($valida) {
 print "Validado\n";
 }
?>
*
*
*
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
Podem ser definidos como mapeamentos ou vetores indexados
Exemplo:
<?php 
 $cores[0]="Red";
 $cores[1]="Green";
 $cores[2]="Blue";
?>
*
*
*
Arrays - tipos de índices
Ordenado  baseado em número (começa no 0) (indexada numericamente)
Associativo  formado por caracteres alfanuméricos (indexada por nome)
*
*
*
Arrays
// 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");
ou
// cria e inicializa um array usando índices (numéricos)
$cores[]="Red";
$cores[]="Green";
$cores[]="Blue";
*
*
*
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
<?php 
 $cor['red']=0;
 $cor['green']=255;
 $cor['blue']=0;
?>
ou
<?php
 $cores=array('red'=>0, 'green'=>1, 'blue'=>2);
?>
*
*
*
Arrays (3)
Usamos a função unset() para destruir todo o array.
*
*
*
Funções de array
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
*
*
*
Pseudo-Types
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 
*
*
*
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";
}
*
*
*
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
*
*
*
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
*
*
*
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)
*
*
*
Casts permitidos
*
*
*
Constantes
Uma constante é um identificador (nome) para um único valor que não se altera durante a execução de um script)
Pré-definidas
Definidas pelo usuário
Exemplo:
define("MOL", 6.14e22);
define("PI", 3.1415);
echo MOL;
echo PI;
*
*
*
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");
?> 
*
*
*
Constantes "Mágicas"
<?php
 print __FILE__ ; # nome do arquivo
 echo "\n"; 
 echo __LINE__; # nº da linha
 echo "\n";
 echo __FUNCTION__; # nome da função
 echo "\n";
?>
*
*
*
Operadores
Aritméticos
Atribuição
Bit a bit
Lógicos
Comparação
Expressão condicional
Incremento e decremento
*
*
*
Operadores Aritméticos+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto da divisão (módulo)
*
*
*
Operadores de Atribuição
= ($a=5);
+= ($a = $a + 5; $a+=5;)
-=
*=
/=
%=
.=
*
*
*
Operadores de Atribuição (2)
<<=
>>
&=
|=
^=
*
*
*
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
*
*
*
Operadores Lógicos
and (e)
or (ou)
xor (ou-exclusivo)
! (negação)
&& (e)
|| (ou)
*
*
*
Operadores de Comparação (ou Condicionais)
== (igualdade)
!= (diferença)
< (menor que)
> (maior que)
<= (menor ou igual a)
>= (maior ou igual a)
*
*
*
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";
*
*
*
Operadores Unários
-oper : 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
*
*
*
Precedência de Operadores
! ~ ++ --
* / %
+ - .
<< >>
> < >= <=
== != <>
&
^
|
&&
||
?:
= += -= *= /= %= &= ~= <<= >>= ^=
AND
XOR
OR
*
*
*
Estruturas de Controle
Blocos
Comandos condicionais
Comando de repetição
*
*
*
Blocos
São sequência de comandos delimitados por abre e fecha chaves ({ e })
*
*
*
Comando Condicional
if (expressão) comando;
if(expressão) { comando1; ... comandoN; }
*
*
*
Comando Condicional (2)
If (expressão) comando1; else comando2;
If(expressão): comando1; ... comandoN; else comando1; ... comandoN; endif
*
*
*
Comando Condicional (3)
if(expressão1) { comando1;
}
elseif(expressão2) { comando2;
}
...
else{ comandoN;
}
*
*
*
Exemplo
<?php
 $salario = 1000;
 $desconto = 0.10; // 10%
 $total = $salario - $salario*$desconto;
 if($total>900) {
 echo "";
 }
?>
*
*
*
switch
switch (expressão) {
 case valor1:
 comando1;
 break;
 case valor2:
 comando2;
 break;
}
*
*
*
Exemplo - switch
<?php
 $i = 1;
 switch($i) {
 case 0: 
 print "i é igual a 0"; 
 break;
 case 1: 
 print "i é igual a 1"; 
 break;
 case 2: 
 print "i é igual a 2"; 
 break;
 default: 
 print "i não é igual a 0, 1 ou 2";
 break;
}
?>
*
*
*
Comandos de repetição (laços)
while
do .. while
for
foreach
*
*
*
while
while (expressão) { comando; }
while (expressão) : comando1; ... comandoN; endwhile;
*
*
*
Exemplo – comando while
<?php
 $a = 1;
 while ($a < 5) {
 print $a;
 $a++;
 }
?>
*
*
*
do..while
$a=0;
do 
{
 echo "a=$a\n";
 $a++;
}
while ($a<=10);
*
*
*
Exemplo – do .. while
<?php 
 $acabou = false;
 do 
 {
 print "loop ...";
 $acabou=true;
 } 
 while (!$acabou);
?>
*
*
*
for
for (expr1; expr2; expr3 ) {
 comando1
 ..
 comandoN
}
*
*
*
foreach
Apresenta duas sintaxes:
foreach ($nome_array as $elemento) 
{
 comandos
}
ou
foreach ($nome_array as $chave => $valor)
{
 comandos
}
*
*
*
foreach (exemplo)
<?php
 // define um array com cinco elementos
 $a = array(1,2,3,4,5);
 foreach ($a as $valor) {
 echo "valor=$valor<br>";
 }
?>
*
*
*
foreach (exemplo)
<?php
 $a = array (
 "cod1" => 10, 
 "cod2" => 20, 
 "cod3" => 30, 
 "cod4" => 40);
 foreach ($a as $chave => $valor) {
 echo "<p>chave=$chave, valor=$valor";
 }
?>
*
*
*
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
*
*
*
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
*
*
*
Exemplo - break
<?php
# break.php
for($i=0; $i < 100; $i++) {
 if($i == 10) {
 break;
 }
 echo " $i ";
}
?>
*
*
*
Exemplo - continue
<?php
 // exibe os números pares
 for($i=0; $i < 100; $i++) {
 if($i % 2) {
 continue;
 }
 echo " $i " . '<br>';
 }
?>
*
*
*
Funções
Definição
Argumentos
Passagem de parâmetros (valor ou referência)
Argumentos com valores pré-definidos
*
*
*
Funções - Sintaxe
function nome_da_função(
 [arg1, [arg2, ...,[argN]]]
) 
{
 comando1;
 ...
 comandoN;
 [ return valor_de_retorno ];
}
*
*
*
Funções definidas pelo usuário
Uma função deve ser definida com a usando a sintaxe indicada abaixo:
<?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) {    echo "Função Exemplo.\n";    return $retval; }
?>
*
*
*
Valores Retorno
A declaração return é opcional
Qualquer tipo poderá ser retornado incluindo listas e objetos. 
*
*
*
Exemplo do uso do return
<?php 
 function quadrado($num)
 { return $num * $num;
 } 
 echo quadrado(4);   // saída '16'.
?>
 
*
*
*
Exemplo: Retornando um array com múltiplos elementos
<?php 
 function numeros_pequenos() {    return array (0, 1, 2); }
 list($zero,$um,$dois)=numeros_pequenos();
?>
*
*
*
Passagem de parâmetros
Existem dois tipos de passagem de parâmetros:
por valor (by value)
por referência (by reference)
O padrão é a passagem por valor.
*
*
*
Exemplo de passagem de parâmetros
<?php 
 function incByValue($var, $valor) {
 $var += $valor;
 }
 function incByRef(&$var, $valor) {
 $var += $valor;
 }
 $a = 1;
 echo incByValue($a,2); // retorna a=1
 echo "a=$a\n";
 $a = 1;
 echo incByRef($a,2); // retorna a=3
 echo "a=$a\n";
?>
*
*
*
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>";
?>
*
*
*
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
*
*
*
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
?>
*
*
*
Variáveis de Ambiente
<?php
 phpinfo();
?>
*
*
*
Inclusão de arquivos
include  caso o arquivo não seja encontrado, é retornado um 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
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 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)
*
*
*
Exemplo
biblioteca.php
<?php
 /*
 * função quadrado
 * retorna o quadrado de um número
 *
 */ 
 function quadrado($num)
 { return $num * $num;
 } 
?>
*
*
*
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);
?>
*
*
*
Tipo de variável
string gettype(mixed var);
Possíveis valores de retorno:
IntegerDouble
String
Array
Object
Unknown type
*
*
*
Formulários HTML
<form 
 method="[GET|POST]" 
 action="" 
 name =""
>
...
</form>
*
*
*
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
*
*
*
Método GET
$nome = $_GET['nome']
$email = $_GET['email']
echo "$_GET['nome']";
echo "$_GET['email']";
*
*
*
Método POST
$_POST['nome']
$_POST['email']
echo "$_POST['nome']";
echo "$_POST['email']";
*
*
*
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>
*
*
*
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>
*
*
*
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 
*
*
*
Variáveis Superglobals
$GLOBALS 
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. 
*
*
*
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.
 
*
*
*
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)
*
*
*
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"
*
*
*
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
*
*
*
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
*
*
*
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)
*
*
*
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))
*
*
*
Exemplo
setcookie("username","joao@net");
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>)
*
*
*
Recuperação de Cookies
Uso do array superglobal $_COOKIE
Exemplo:
setcookie("username","joao@net");
E em uma outra página:
$_COOKIE["username"]; // lê o valor do cookie
*
*
*
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)
*
*
*
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"
*
*
*
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.
*
*
*
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
*
*
*
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
*
*
*
Propagação do SessionID
Poderá ser feito por:
cookies
propagação de variáveis na URL (endereço destino)
*
*
*
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
*
*
*
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";
?>
*
*
*
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)
*
*
*
Cookies x Sessões
*
*
*
Parâmetros de Configuração - Session
*
*
*
Parâmetros de Configuração - Session
*
*
*
Parâmetros de Configuração - Session
*
*
*
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
*
*
*
Manipulação de Arquivos
fopen
feof
fgets
fwrite
fclose
file_put_contents
file_get_contents*
*
*
Manipulação de Arquivos
file
copy
rename
unlink
file_exists
is_file
*
*
*
Manipulação de Diretórios
mkdir
getcwd
chdir
rmdir
opendir
closedir
readdir
*
*
*
Manipulação de Arquivos e Diretórios
int fopen(string arquivo, string modo [, int usar_path ´, resource contexto]])
onde:
arquivo:
modo:
usar_path:
contexto:
*
*
*
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
*
*
*
Classes e Objetos
Classes
Métodos
*
*
*
Classe - Exemplo
class Complexo {
 private $real;
 private $imag;
 public function real() {
 return $this->real;
 }
 public function imag() {
 return $this->imag;
 }
}
*
*
*
Criação de Objetos
$z = new Complexo;
$parte_real = $z->real();
$parte_imag = $z->imag();
*
*
*
Bibliografia
Dall'Oglio, P. PHP Programando com Orientação a Objetos. Novatec. 2007.
NIEDERAUER, J. Web Interativa com Ajax e PHP. Novatec, 2007.
NIEDERAUER, J. Desenvolvendo Web Sites com PHP. Novatec, 2007.
Manual do PHP. http://br.php.net/manual
*
*
*
Backup Slides
*
*
*
PHP e MySQL
*
*
*
Conectando do BD MySQL
<?php
 $conexao = mysql_connect(
 "localhost",
 "usuario",
 "password");
?>
*
*
*
Selecionando a Base de Dados
$nomebanco = mysql_select_db('teste', $conexao);
*
*
*
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);
?>
*
*
*
Fechando uma conexão
mysql_close($conexao)
*
*
*
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
*
*
*
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])
*
*
*
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
*
*
*
mysql API
mysql_error()
*
*
*
Exemplo
Aplicação de Cadastro de Alunos
http://127.0.0.1/aluno/tela1.html
Apresentação de Notícias
http://127.0.0.1/noticias2
*
*
*
Exemplos de Funções
*
*
*
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
*
*
*
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";
?>
1969-12-31
2008-11-27
27/11/2008
27/11/08
27/11/08 09:20:11
*
*
*
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 
*
*
*
Exemplo
<?php
echo date("d/m/Y H:i:s", 
 mktime(2, 12, 4, 10, 3, 01));
?>
*
*
*
Função strtotime
$data_formatada = date("d/m/Y",strtotime($data));
echo "<td>$data_formatada</td>";
*
*
*
Datas - MySQL
date_format(date, format)
Exemplo:
SELECT *, date_format(data,'%d/%m/%Y') dt
FROM teste.gasto g
where date_format(data,'%d/%m/%Y')='26/11/2008'
*
*
*
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
 '20081124' and 
 '20081125'
*
*
*
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 ?
*
*
*
Cabeçalho de um script PHP
<?php
---
---
---
?>
*
*
*
Definição de variáveis
Em PHP não é necessário fazer a declaração de variáveis
*
*
*
Delimitadores de string
''  aspas simples
s='um $nome\n';
""  aspas duplas
s="um $nome\n";
`` aspas invertidas (apóstrofo)
heredoc
$str = <<<EOD
 Aqui podemos definir
 uma string
EOD;
*
*
*
Definição de Constantes
bool define (string nome, misto valor [, bool case_insensitive])
Exemplo:
define (OK,true);
define(NOK,false);
echo OK;
*
*
*
Tipos de Variáveis
Numéricas
Alfanuméricas (Strings)
Arrays
Objetos
*
*
*
Classes
Classes: são agrupamentos de variáveis e funções
Objeto: é uma instância de uma classe
*
*
*
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
*
*
*
PHP 5.3
Migração
http://docs.php.net/migration53
Manual do PHP
http://docs.php.net/manual/pt_BR/index.php
Referência de Funções
http://docs.php.net/manual/pt_BR/funcref.php
*
*
*
Links
Revista PHP Magazine
http://www.phpmagazine.org.br
*
*
*
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
*
*
*
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
*
*
*
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
*
*
*
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
*
*
*
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
*
*
*
MySQLi
http://docs.php.net/manual/pt_BR/mysqli.summary.php
Para versão PHP 4.0, Zeev Suraki e Andi Gutmans reescreveram a maior parte do engine PHP, criando-se a ZEND Engine
Hoje PHP é um acrônimo recursivo: Hypertext Preprocessor
Tags de abertura e fechamento: <?php e ?>
Toda variável é identificada pelo sinal '$' antes do nome
O tipo da variável não precisa ser explicitamente definido
O tipo da variável não precisa ser explicitamente definido
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.
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. 
As matrizes poderão ser indexadas:
numericamente
pelo nome
Arrays Associativos são também conhecidos como Dictionaries ou Hashes
Exemplo:
<?php
 $cores=array('red'=>0, 'green'=>1, 'blue'=>2);
 foreach( $cores as $key => $value) {
 echo "$key => $value\n";
 }
?>
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
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. 
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
typecast = "Conversão de Tipos"
Casts são conhecidos por "Moldagem" em português
É 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. 
NomeDescriçã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 5.3.0.) 
__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). 
"||" tem precedência maior que "or"
"&&" tem precedência maior que "and"
Operadores de mesma prioridade são avaliados da esquerda para direita.
A precedência dos operadores diminui de cima para baixo
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.
If($x == $y)
Comando1;
Comando2;
If($x == $y) {
 Comando1;
 Comando2;
}
Avalia o valor de uma expressão para escolher qual bloco de instruções deverá ser executado
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
Condição avaliada no final do bloco. Bloco é executado pelo menos uma vez e termina quando a expressão for avaliada falsa.
Condição inicial (valor inicial da variável contadora)
Condição de parada (condição de execução. Enquanto for TRUE, o bloco de comandos será executado)
atualização (valor a ser incrementado apóscada execução)
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. 
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 um valor
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
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
Quando um formulário é submetido para um script PHP, qualquer variável do formulário será automaticamente disponível para o script 
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. 
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: http://www.php.net/manual/pt_BR/language.variables.superglobals.php
$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). 
$_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 4.1.0. 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. 
A função session_start() deve vir antes de qualquer saída HTML.
http://docs.php.net/manual/pt_BR/book.mysql.php
Veja mais funções em: http://www.php.net/manual/pt_BR/ref.datetime.php

Outros materiais