1 php mauro césar lopes 27-11-2008. 2 php desenvolvido originalmente por rasmus lerdorf em 1994...

129
1 PHP Mauro César Lopes 27-11-2008

Upload: internet

Post on 17-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

1

PHP

Mauro César Lopes

27-11-2008

2

PHP

Desenvolvido originalmente por Rasmus Lerdorf em 1994

site do PHP: http://www.php.net

3

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)

4

Áreas que os scripts PHP são usados

Scripts no lado do servidor (server-side)

Scripts de linha de comando Aplicações Desktop

5

Sistemas operacionais

Linux Unix like: Solaris, OpenBSD, MacOS

X, ... Microsoft Windows

6

Servidores HTTP

Apache IIS (Internet Information Service)

7

Tipo de programação

Procedural Orientada a Objetos

8

Funcionalidades do PHP

Gerar HTML Geração de imagens Arquivos PDF Animações em Flash

9

Suporte a banco de dados

MySQL Oracle Interbase PostgresSQL Outros ...

10

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

11

Variáveis

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

12

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 */

13

Tipos de dadosNã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 ObjetoChecagem dinâmica de tipos

14

Inteiros (integer ou long)

$x = 4567; # inteiro $y = -127; # inteiro negativo $o = 00116; # inteiro em

representação octal (base 8) $hex = 0x0F; # inteiro em

representação hexadecimal (base 16)

15

Ponto Flutuante (double ou float)

$PI=3.14; $MOL=6.02e23; # uso da notação

científica

16

Strings Podem ser delimitadas por aspas simples

(literal) ou aspas duplas (onde há interpretação de varáveis e caracteres especiais).

\n \r \t \\ \$ \' \"

17

Booleano Expressa um valor lógico que pode ser

verdadeiro (TRUE) ou falso (FALSE) Exemplo:<?php $valida=true; if($valida) { $a = 1; }?>

18

Arrays Podem ser definidos como

mapeamentos ou vetores indexadosExemplo:<? $cores[0]="Red"; $cores[1]="Green"; $cores[2]="Blue";?>

19

Arrays - tipos de índices

Ordenado baseado em número (começa no 0)

Associativo formado por caracteres alfanuméricos

20

Arrays$cores = array("Red", "Green", "Blue");

ou

$cores = array(0=>'Red', 1=> "Green", 2=>"Blue");

ou

$cores[]="Red";$cores[]="Green";$cores[]="Blue";

21

Arrays Associativos

São conjunto ordenados de chaves e valores, onde cada valor é acessado através de uma chave associada.

22

Arrays Associativos<?php $cor['red']=0; $cor['green']=255; $cor['blue']=0;?>

ou

<?php $cores=array('red'=>0, 'green'=>1, 'blue'=>2);?>

23

Arrays (3)

Usamos a função unset() para destruir todo o array.

24

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

25

Funções de array array_pop retira e retorna o último elemento do array array_push insere um ou mais elementos no fim de

um array array_shift retira e retorna o primeiro elemento de

um array array_unshift insere um novo elemento no inicio de

um array array_rand retorna um ou mais elementos do array array_reverse retorna um array com ordem inversa array_keys retorna as chaves de um array array_values retorna os valores de um array sizeof retorna o número de elementos do array count retorna a quantidade de elementos de um

array

26

Função each

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";

}

27

Listas

Exemplo:list($a,$b,$c)=array("a","b","c");

28

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

29

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)

30

Casts permitidos

(int), (integer) Integer

(real), (double), (float)

Float

(string) String

(array) Array

(objeto) objeto

31

ConstantesUma 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;

32

Constantes - Exemplo<?php

// Nomes de constantes válidosdefine("FOO",     "alguma coisa");define("FOO2",    "alguma outra coisa");define("FOO_BAR", "alguma coisa mais");

// Nomes de constantes inválidasdefine("2FOO",    "alguma coisa");

// Isto é válido, mas deve ser evitado:// O PHP pode vir a fornecer uma constante mágica// que danificará seu scriptdefine("__FOO__", "alguma coisa");

?>

33

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";

?>

34

Operadores

Aritméticos Atribuição Bit a bit Lógicos Comparação Expressão condicional Incremento e decremento

35

Aritméticos

+ Adição - Subtração * Multiplicação / Divisão % Resto da divisão (módulo)

36

Atribuição

= ($a=5); += ($a = $a + 5; $a+=5;) -= *= /= %= .=

37

Bit a Bit

& (and) | (or) ^ (xor) ~ (not) << - deslocamento de bits a

esquerda >> - deslocamento de bits a direita

38

Lógicos

and (e) or (ou) xor (ou-exclusivo) ! (negação) && (e) || (ou)

39

Comparação

== (igualdade) != (diferença) < (menor que) > (maior que) <= (menor ou igual a) >= (maior ou igual a)

40

Condicional

(expressão) ? (expressão2) : (expressão3);

Exemplo:

$a=5;$a > 5 ? $b="1" : $b="0";

41

Incremento e Decremento

++$contador=1; -- ++$a : pré-incremento (incrementa $a em um e depois retorna $a)

$a++ : pós-incremento --$a : pré-decremento $a-- : pós-decremento

42

Precedência de Operadores

$contador=1;

43

Estruturas de Controle

Blocos Comandos condicionais Comando de repetição

44

Blocos

São delimitados por { e }

45

Comando Condicional

if (expressão) comando;

if(expressão) { comando1; ... comandoN;}

46

Comando Condicional (2) If (expressão) comando1;else comando2;

If(expressão): comando1; ... comandoN;else comando1; ... comandoN;endif

47

Comando Condicional (3)

if(expressão1) { comando1;

}elseif(expressão2) { comando2;

}...else{ comandoN;

}

48

Exemplo<?php

$salario = 1000; $desconto = 0.10; // 10%

$total = $salario - $salario*$desconto;

if($total>900) { echo ""; }

?>

49

switch

switch (expressão) { case valor1: comando1; break; case valor2: comando2; break;}

50

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";}?>

51

Comandos de repetição

while do .. while for foreach

52

while

while (expressão) { comando;}

while (expressão) : comando1; ... comandoN;endwhile;

53

Exemplo

<?php

$a = 1;

while ($a < 5) {

print $a;

$a++;

}

?>

54

do..while

$a=0;

do {

echo "a=$a\n";

$a++;

} while ($a<=10);

55

Exemplo

<?php

$acabou = false;

do {

print "loop ...";

$acabou=true;

} while (!$acabou);

?>

56

for

for (expr1; expr2; expr3 ) {

comando1

..

comandoN

}

57

foreach

Apresenta duas sintaxes:

foreach (expressão as $valor) instruções

ouforeach (expressão as $chave => $valor) instruções

58

foreach (exemplo)

<?php

$a = array(1,2,3,4,5);

foreach ($a as $valor) { echo "valor=$valor<br>"; }

?>

59

foreach (exemplo)<?php

$a = array ( "cod1" => 10, "cod2" => 20, "cod3" => 30, "cod4" => 40);

foreach ($a as $chave => $valor) { echo "<p>chave=$chave, valor=$valor"; }

?>

60

Comandos break e continue

break continue

61

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

continue: interrompe a execução e avalia novamente a condição de teste

62

Exemplo - break<?php# break.php

for($i=0; $i < 100; $i++) {

if($i == 10) { break; }

echo " $i ";

}

?>

63

Exemplo - continue<?php

for($i=0; $i < 100; $i++) {

if($i % 2) { continue; }

echo " $i ";

}

?>

64

Funções

Definição Argumentos Passagem de parâmetros (valor ou

referência) Argumentos com valores pré-

definidos

65

Funções - Sintaxe

function nome_da_função(

[arg1, [arg2, ...,[argN]]]

)

{

comando1;

...

comandoN;

[ return valor_de_retorno ];

}

66

Funções definidas pelo usuário

Uma função deve ser definida com a usando a sintaxe indicada abaixo:

<?phpfunction foo($arg_1, $arg_2, /* ..., */ $arg_n){   echo "Função Exemplo.\n";   return $retval;}

?>

67

Valores Retorno

A declaração return é opcionalQualquer tipo poderá ser retornado

incluindo listas e objetos.

68

Exemplo do uso do return<?php

function quadrado($num) { return $num * $num;

}

echo quadrado(4);   // saída '16'.

?>

69

Exemplo: Retornando um array com múltiplos elementos

<?php

function numeros_pequenos(){   return array (0, 1, 2);}

list($zero,$um,$dois)=numeros_pequenos();

?>

70

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

71

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

?>

72

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.

73

Exemplo<?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";

?>

74

Variáveis de Ambiente

<?php

phpinfo();

?>

75

Inclusão de arquivos include require include_once 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.

76

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)

77

Exemplobiblioteca.php

<?php /* * função quadrado * retorna o quadrado de um número * */

function quadrado($num) {

return $num * $num; }

?>

78

Exemplo

teste_include.php

<?php // carrega o arquivo com a função necessaria

include 'biblioteca.php';

// imprime o quadrado de 2

echo quadrado(2);

?>

79

Tipo de variável

string gettype(mixed var); Possíveis valores de retorno:

Integer Double String Array Object Unknown type

80

Formulários HTML

<form

method="[GET|POST]"

action=""

name =""

>

...

</form>

81

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

82

Método GET

$_GET['nome'] $_GET['email']

83

Método POST

$_POST['nome'] $_POST['email']

84

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>

85

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>

86

Algumas funções úteis

htmlspecialchars(<string>); stripslashes(<string>); urlencode(); urldecode();

87

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.

88

Variáveis Superglobals (2)$_FILES

Variáveis providads 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.

89

Funções úteis na validação de formulários

empty – verifica se determinada string 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)

90

Cookies e Sessions

HTTP é um protocolo "sem estado" Cookie e Session são mecanismos

que permitem armazenar informações enquanto o usuário navega entre diferentes páginas.

91

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

92

Uso de Cookies É um arquivo texto armazenado no

computador do usuário 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

93

Uso de cookies bool setcookie (string nome [, string valor [, int

validade [, string caminho [, string dominio [, int seguro]]]]]), onde:

nome: nome do cookievalor: é o conteúdo do cookie (se não for fornecido o cookie

será removido)validade: tempo de validade do Cookiecaminho: caminho no servidor onde o cookie estará

disponíveldomínio: domínio para o qual o cookie estará disponívelSeguro: 0 ou 1 (se 1 o cookie apenas será transmitido caso

segue uma conexão segura (HTTPS))

94

Exemplo

setcookie("username","joao@net");

setcookie ("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>)

95

Recuperação de Cookies

Uso do array superglobal $_COOKIE

Exemplo:

setcookie("username","joao@net");

E em uma outra página:$_COOKIE["username"];

96

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"

97

Passos para Autenticação

Podemos dividir a autenticação de usuários com o uso de cookies em três passos:

1) Criação de uma página de login2) Criação de uma rotina de validação

para que seja usada nas páginas que fazem uso das áreas restritas

3) Criação de uma página de logout para os usuários autenticados a fim de realizar a exclusão do cookie.

98

Exemplo de login usando cookies

login.html login.php valida_cookies.inc logout.php pagina_inicial.php

99

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

100

Propagação do SessionID

Poderá ser feito por: cookies propagação de variáveis na URL

(endereço destino)

101

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

102

Exemplo de Session<?phpsession_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";

?>

103

Cookies x SessõesCookies

Tempo de duraçãoPode 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çãoDura enquanto o

usuário permanecer dentro do site

Local de armazenamento

Arquivos localizados no servidor (um arquivo por sessão)

104

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)

105

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

106

Manipulação de Arquivos fopen feof fgets fwrite fclose file_put_contents file_get_contents file copy rename unlink file_exists is_file

107

Manipulação de Diretórios

mkdir getcwd chdir rmdir opendir closedir readdir

108

Manipulação de Arquivos e Diretórios fopen int fopen(string arquivo, string

modo [, int usar_path ´, resource contexto]])

onde: arquivo: modo: usar_path: contexto:

109

Manipulação de strings – algumas funções strtoupper strtolower substr strpad strrepeat strlen str_replace str_pos

110

Classes e Objetos

Classes Métodos

111

Classeclass Complexo { private $real; private $imag; public function real() { return $this->real; } public function imag() { return $this->imag; }}

112

Criação de Objetos

$z = new Complexo;

$parte_real = $z->real();

$parte_imag = $z->imag();

113

Bibliografia

Dall'Oglio, P. PHP Programando com Orientação a Objetos. Novatec. 2007.

NIEDERAUER, J. Web Interativa com Ajax e PHP. Novatec, 2007.

Manual do PHP. http://br.php.net/manual

114

Backup Slides

115

Links

Revista PHP Magazinehttp://www.phpmagazine.org.br

116

PHP e MySQL

117

Conectando do BD MySQL

<?php

$conexao = mysql_connect("localhost","usuario","password";

?>

118

Exemplo de Consulta em SQL

<?php

$resultado = mysql_query("select * from produto");

mysql_close($conexao);

?>

119

mysql APImysql_affected_rows – retorna o número de linhas

afetadas por uma operaçãomysql_fetch_array – armazena a linha atual em um array

associativomysql_fetch_object – retorna uma linha como um objetomysql_fetch_row – armazena a linha atual em um arraymysql_result – retorna uma coluna do resultadomysql_num_rows – retorna o numero de linhas de uma

consultamysql_num_fields – retorna o numero de colunas de uma

consultamysql_field_name – retorna o nome de uma coluna em uma

consulta

120

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])

121

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

122

mysql API

mysql_error()

123

Exemplos de Funções

124

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

125

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-312008-11-2727/11/200827/11/0827/11/08 09:20:11

126

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

127

Exemplo

<?php

echo date("d/m/Y H:i:s",

mktime(2, 12, 4, 10, 3, 01));

?>

128

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'

129

ExemploSeleciona os gastos entre duas datas:

SELECT *, date_format(data,'%d/%m/%Y') dtFROM teste.gasto gwhere date_format(data,'%Y%m%d') between '20081124' and '20081125'