236
Desenvolvimento Desenvolvimento WEB WEB Primeiro Semestre – Primeiro Semestre – 2008 - PHP 2008 - PHP

Desenvolvimento WEB

  • Upload
    aisha

  • View
    74

  • Download
    0

Embed Size (px)

DESCRIPTION

Desenvolvimento WEB. Primeiro Semestre – 2008 - PHP. Conceitos : Páginas dinâmicas em HTML – Aula 2. Diferença entre páginas Estáticas e Dinâmicas : - PowerPoint PPT Presentation

Citation preview

Page 1: Desenvolvimento WEB

Desenvolvimento WEBDesenvolvimento WEB

Primeiro Semestre – 2008 - PHPPrimeiro Semestre – 2008 - PHP

Page 2: Desenvolvimento WEB

Conceitos : Páginas Conceitos : Páginas dinâmicas em HTML – Aula 2dinâmicas em HTML – Aula 2 Diferença entre páginas Estáticas e Dinâmicas :Diferença entre páginas Estáticas e Dinâmicas :

As estáticas, normalmente desenvolvidas somente As estáticas, normalmente desenvolvidas somente em HTML não exigem nenhum processamento por em HTML não exigem nenhum processamento por parte do Servidor. O Cliente WEB faz uma requisição, parte do Servidor. O Cliente WEB faz uma requisição, utilizando o protocolo HTTP , a um WebSite utilizando o protocolo HTTP , a um WebSite localizado em um Servidor Web. localizado em um Servidor Web.

Ao receber a requisição o Servidor Web verifica a Ao receber a requisição o Servidor Web verifica a extensão da página a ser enviada como resposta, extensão da página a ser enviada como resposta, identificando a mesma como HTML não realiza identificando a mesma como HTML não realiza nenhum processamento.nenhum processamento.

Apenas a envia para o Cliente WEB. Todo o Apenas a envia para o Cliente WEB. Todo o processamento está localizado no Cliente WEB. processamento está localizado no Cliente WEB. Estão inclusas nesta forma de publicação tecnologias Estão inclusas nesta forma de publicação tecnologias como JavaScript e Flash.como JavaScript e Flash.

Page 3: Desenvolvimento WEB

As páginas dinâmicas são desenvolvidas com As páginas dinâmicas são desenvolvidas com

linguagens que são executadas pelo servidor cuja linguagens que são executadas pelo servidor cuja característica é a geração dinâmica de HTML e característica é a geração dinâmica de HTML e acesso a Banco de Dados (entre outras tarefas)acesso a Banco de Dados (entre outras tarefas)

O Cliente WEB faz uma requisição, utilizando o O Cliente WEB faz uma requisição, utilizando o protocolo HTTP , a um WebSite localizado em um protocolo HTTP , a um WebSite localizado em um Servidor Web. Servidor Web.

Ao receber a requisição o Servidor Web verifica a Ao receber a requisição o Servidor Web verifica a extensão da página a ser enviada como resposta, extensão da página a ser enviada como resposta, identificando a mesma como PHP (outra linguagem identificando a mesma como PHP (outra linguagem como ASP ou JSP poderia ser utilizada), como ASP ou JSP poderia ser utilizada),

A página é então enviada ao módulo responsável A página é então enviada ao módulo responsável pelo processamento que realiza (realizando todas as pelo processamento que realiza (realizando todas as operações necessárias com Banco de Dados, operações necessárias com Banco de Dados, sessões etc) “devolvendo” ao servidor apenas o sessões etc) “devolvendo” ao servidor apenas o HTML resultante desta operação e a envia para o HTML resultante desta operação e a envia para o Cliente WEB. O processamento está localizadoCliente WEB. O processamento está localizadono Servidor e no Cliente WEB.no Servidor e no Cliente WEB.

Page 4: Desenvolvimento WEB

Evolução das tecnologias de Evolução das tecnologias de conteúdo dinâmicoconteúdo dinâmico CGI = Common Gateway Interface – CGI = Common Gateway Interface –

É o sistema mais antigo que existe É o sistema mais antigo que existe para a programação das páginas para a programação das páginas dinâmicas de servidor. Atualmente dinâmicas de servidor. Atualmente se encontra um pouco defasado por se encontra um pouco defasado por diversas razões entre as quais se diversas razões entre as quais se destaca a dificuldade com a que se destaca a dificuldade com a que se desenvolvem os programas e a desenvolvem os programas e a pesada carga que supõem para o pesada carga que supõem para o servidor que os executa servidor que os executa

Page 5: Desenvolvimento WEB

Funcionamento : Realiza-se uma Funcionamento : Realiza-se uma

petição http, a qual podem petição http, a qual podem acompanhar dados que chegam ou acompanhar dados que chegam ou por um formulário, ou também por um formulário, ou também através da URL. através da URL.

O servidor executa os programas O servidor executa os programas CGI aos que se acessa e trabalha CGI aos que se acessa e trabalha com os recursos necessários para com os recursos necessários para realizar as ações, como por realizar as ações, como por exemplo, as bases de dados. exemplo, as bases de dados.

O programa CGI vai escrevendo na O programa CGI vai escrevendo na saída padrão, o resultado da saída padrão, o resultado da execução do CGI, que inclui execução do CGI, que inclui etiquetas HTML, já que o que se etiquetas HTML, já que o que se escreve é uma página web. escreve é uma página web.

Page 6: Desenvolvimento WEB

Desvantagens : Os resultados se Desvantagens : Os resultados se

escrevem diretamente com o CGI, escrevem diretamente com o CGI, portanto o código do programa se portanto o código do programa se mistura com o do HTML tornando mistura com o do HTML tornando difícil sua compreensão e difícil sua compreensão e manutenção. manutenção.

Cada programa CGI que se coloca Cada programa CGI que se coloca em funcionamento se faz em um em funcionamento se faz em um espaço de memória próprio. Sendo espaço de memória próprio. Sendo assim, se três usuários colocam em assim, se três usuários colocam em funcionamento um CGI ao mesmo funcionamento um CGI ao mesmo tempo, se multiplicará por três a tempo, se multiplicará por três a quantidade de recursos que ocupa quantidade de recursos que ocupa esse CGI. Isto significa uma grave esse CGI. Isto significa uma grave ineficiência. ineficiência.

Page 7: Desenvolvimento WEB

ColdFusion = é uma ferramenta ColdFusion = é uma ferramenta usada no desenvolvimento de usada no desenvolvimento de aplicações web, que permite criar aplicações web, que permite criar páginas Web dinâmicas para páginas Web dinâmicas para Internet, intranets ou extranets.Internet, intranets ou extranets.O Cold Fusion utiliza uma linguagem O Cold Fusion utiliza uma linguagem denominada CFML (Cold Fusion denominada CFML (Cold Fusion Markup Language), baseada em Markup Language), baseada em tags, como o HTML. Esta linguagem tags, como o HTML. Esta linguagem é muito poderosa e simples de é muito poderosa e simples de programar, perfeita para construção programar, perfeita para construção de páginas dinâmicas. de páginas dinâmicas.

Page 8: Desenvolvimento WEB

Por ser suportado Por ser suportado primordialmente pela Adobe primordialmente pela Adobe Systems (veja histórico), o Systems (veja histórico), o ColdFusion ServerColdFusion Server oferece boa oferece boa interoperabilidadeinteroperabilidade com outros com outros produtos da mesma empresa, produtos da mesma empresa, tais como tais como FlashFlash, , FlexFlex entre entre outros, sendo também uma outros, sendo também uma escolha comum para aqueles escolha comum para aqueles que trabalham com estas que trabalham com estas tecnologias. tecnologias.

Page 9: Desenvolvimento WEB

O O ASPASP (de (de Active Server PagesActive Server Pages) é uma estrutura ) é uma estrutura

de programação em Script que se utiliza de de programação em Script que se utiliza de VBScript, JScript, PerlScript ou Python VBScript, JScript, PerlScript ou Python processadas pelo lado servidor para geração de processadas pelo lado servidor para geração de conteúdo dinâmico na conteúdo dinâmico na WebWeb. Ele roda nativamente . Ele roda nativamente em servidores Windows, através do serviço em servidores Windows, através do serviço chamado de IIS (chamado de IIS (Internet Internet InformationInformation ServiceService) - o ) - o servidor web da Microsoft, ou do PWS (Personal servidor web da Microsoft, ou do PWS (Personal Web Server) em ambientes com Windows 98. Além Web Server) em ambientes com Windows 98. Além disso ele pode rodar em outras plataformas, como disso ele pode rodar em outras plataformas, como LinuxLinux no servidor no servidor ApacheApache quando usando um quando usando um Módulo de um programaMódulo de um programa como o como o TomcatTomcat. O script é . O script é interpretado no lado do servidor e o que é enviado interpretado no lado do servidor e o que é enviado ao lado do usuário (ao lado do usuário (navegadornavegador, por exemplo) é , por exemplo) é apenas a saída. que normalmente é uma apenas a saída. que normalmente é uma linguagem de marcaçãolinguagem de marcação como como HTMLHTML, , XHTMLXHTML ou ou XMLXML. .

Page 10: Desenvolvimento WEB

Através dessa tecnologia também é Através dessa tecnologia também é possível executar consultas a possível executar consultas a Banco de DadosBanco de Dados, através da , através da biblioteca de componentes biblioteca de componentes ActiveXActiveX..

O uso desta tecnologia vem O uso desta tecnologia vem diminuindo sensivelmente pela diminuindo sensivelmente pela maturação da tecnologia .NET, maturação da tecnologia .NET, sendo gradativamente substituído sendo gradativamente substituído pelo ASP.NET que proporciona uma pelo ASP.NET que proporciona uma gama maior de recursos e um gama maior de recursos e um melhor desempenho.melhor desempenho.

Page 11: Desenvolvimento WEB

PHP = PHP = PHPPHP (um acrónimo recursivo (um acrónimo recursivo para "PHP: Hypertext Preprocessor") para "PHP: Hypertext Preprocessor") é uma linguagem de programação é uma linguagem de programação de computadores interpretada, livre de computadores interpretada, livre e muito utilizada para gerar e muito utilizada para gerar conteúdo dinâmico na Web. Apesar conteúdo dinâmico na Web. Apesar de ser uma linguagem de fácil de ser uma linguagem de fácil aprendizado e de uso para aprendizado e de uso para pequenos scripts dinâmicos simples, pequenos scripts dinâmicos simples, o PHP é uma linguagem poderosa o PHP é uma linguagem poderosa orientada a objetos .orientada a objetos .

Page 12: Desenvolvimento WEB

Características: Orientação a Características: Orientação a

objeto objeto Portabilidade - Independência Portabilidade - Independência

de plataforma - de plataforma - "write once run "write once run anywhere"anywhere"; ;

Sintaxe similar a Linguagem Sintaxe similar a Linguagem C/C++ e o PERLC/C++ e o PERL

Page 13: Desenvolvimento WEB

Java Servlets = Servlets são Java Servlets = Servlets são

programas que correm no lado do programas que correm no lado do servidor e que estendem as servidor e que estendem as funcionalidades do servidor web, funcionalidades do servidor web, gerando páginas de forma dinâmica gerando páginas de forma dinâmica e interagindo com os clientes. e interagindo com os clientes. Constituem a alternativa da Constituem a alternativa da tecnologia Java à programação em tecnologia Java à programação em CGI (Common Gateway Interface), CGI (Common Gateway Interface), ultrapassando muitas das suas ultrapassando muitas das suas limitações e, o mais importante, limitações e, o mais importante, numa base de independência de numa base de independência de plataforma (sistema operativo) e de plataforma (sistema operativo) e de servidor web. servidor web.

Page 14: Desenvolvimento WEB

JSP = JSP é a abreviação de Java Server JSP = JSP é a abreviação de Java Server

Pages, que em português seria algo como Pages, que em português seria algo como Páginas de Servidor Java. É então, uma Páginas de Servidor Java. É então, uma tecnologia orientada a criar páginas web tecnologia orientada a criar páginas web com programação em Java. com programação em Java.

Com JSP podemos criar aplicações web Com JSP podemos criar aplicações web que se executam em vários servidores que se executam em vários servidores web, de múltiplas plataformas, já que Java web, de múltiplas plataformas, já que Java é em essência uma linguagem é em essência uma linguagem multiplataforma. As páginas JSP estão multiplataforma. As páginas JSP estão compostas de código HTML/XML compostas de código HTML/XML misturado com etiquetas especiais para misturado com etiquetas especiais para programar scripts de servidor em sintaxe programar scripts de servidor em sintaxe Java. Portanto, poderemos escrever as Java. Portanto, poderemos escrever as JSP com nosso editor HTML/XML habitual. JSP com nosso editor HTML/XML habitual.

Page 15: Desenvolvimento WEB

PHP e HTMLPHP e HTML

Um programa escrito em PHP pode Um programa escrito em PHP pode possuir comandos HTML e códigos possuir comandos HTML e códigos PHP;PHP;

Os comandos HTML devem Os comandos HTML devem aparecer fora das tags (?php e ?>, aparecer fora das tags (?php e ?>, pois estas limitam um trecho de pois estas limitam um trecho de programa PHP. Dentro destas tags programa PHP. Dentro destas tags até podem existir comandos HTML, até podem existir comandos HTML, mas somente se utilizarmos o mas somente se utilizarmos o comando ECHO para escrevê-los.comando ECHO para escrevê-los.

Page 16: Desenvolvimento WEB

Cada script PHP existente na página deve Cada script PHP existente na página deve

começar com a tag<?php, e terminar começar com a tag<?php, e terminar com ?>. com ?>.

Ao final de cada linha de comando Ao final de cada linha de comando devemos terminar com um ; (ponto e devemos terminar com um ; (ponto e vírgula), senão ocorrerão erros no vírgula), senão ocorrerão erros no momento da execução da página.momento da execução da página.

Entre essas tags você pode escrever suas Entre essas tags você pode escrever suas linhas de código em PHP, aproveitando linhas de código em PHP, aproveitando tudo que a linguagem lhe oferece de tudo que a linguagem lhe oferece de recursos.recursos.

Toda essa mistura do PHP com HTML é Toda essa mistura do PHP com HTML é muito interessante, pois utilizamos o PHP muito interessante, pois utilizamos o PHP para gerar dados dinamicamente e o para gerar dados dinamicamente e o HTML para formatar e exibir dados nas HTML para formatar e exibir dados nas páginas mostradas no browser;páginas mostradas no browser;

Page 17: Desenvolvimento WEB

Vamos ver este exemplo misturando Vamos ver este exemplo misturando

HTML e PHP para mostrar somente HTML e PHP para mostrar somente a data atual :a data atual :<html><html>

<body><body><?php <?php

$data_de_hoje = date $data_de_hoje = date (“d/m/y”,time());(“d/m/y”,time());?>?><p align=“center”>Hoje é dia <?php <p align=“center”>Hoje é dia <?php echo $data_de_hoje; ?></p>echo $data_de_hoje; ?></p></body></body></html></html>

Page 18: Desenvolvimento WEB

Perceba, no início do programa a Perceba, no início do programa a atribuição à variável $data_de_hoje atribuição à variável $data_de_hoje a data atual, utilizando o comando a data atual, utilizando o comando DATE. DATE.

Depois utilizamos comandos HTML Depois utilizamos comandos HTML para escrever “Hoje é dia”, e para escrever “Hoje é dia”, e completamos abrindo um novo completamos abrindo um novo trecho de PHP, escrevendo a data trecho de PHP, escrevendo a data atual armazenada na variável atual armazenada na variável $data_de_hoje por meio do $data_de_hoje por meio do comando ECHO que veremos logo a comando ECHO que veremos logo a frente.frente.

Page 19: Desenvolvimento WEB

Exibindo a página no BrowserExibindo a página no Browser

Para o browser mostrar alguma coisa na Para o browser mostrar alguma coisa na tela é necessário que a página tenha pelo tela é necessário que a página tenha pelo menos um comando ECHO para escrever menos um comando ECHO para escrever algo, ou então comandos HTML que algo, ou então comandos HTML que escrevam o conteúdo da página.escrevam o conteúdo da página.

Portanto para realmente se ter conteúdo Portanto para realmente se ter conteúdo dinâmico na tela, você deve sempre se dinâmico na tela, você deve sempre se utilizar do comando ECHO ou algum outro utilizar do comando ECHO ou algum outro comando PHP, pois como já dito o HTML é comando PHP, pois como já dito o HTML é estático, imprime sempre as mesmas estático, imprime sempre as mesmas informações na tela.informações na tela.

Page 20: Desenvolvimento WEB

Exemplo de código Exemplo de código

<html><html><body><body><?php<?php

$time = “Gremio”$time = “Gremio”$ano = 1983$ano = 1983$frase1=“O $time é o melhor clube de $frase1=“O $time é o melhor clube de

futebol do mundo !”;futebol do mundo !”;$frase2=“O $time foi campeão do mundo $frase2=“O $time foi campeão do mundo

em $ano”;em $ano”;echo “<h3>$frase1</h3>”;echo “<h3>$frase1</h3>”;echo “<h3>$frase2</h3>”;echo “<h3>$frase2</h3>”;

?>?></body></body></html></html>

Page 21: Desenvolvimento WEB

O resultado desse código, será O resultado desse código, será a impressão na tela conforme a impressão na tela conforme abaixo ?abaixo ?

O Gremio é o melhor clube de O Gremio é o melhor clube de futebol do mundo !futebol do mundo !

O Gremio foi campeão do O Gremio foi campeão do mundo em 1983mundo em 1983

Page 22: Desenvolvimento WEB

Outra função muito importante que já Outra função muito importante que já

poderemos utilizar é a PHPINFO. Ela nos poderemos utilizar é a PHPINFO. Ela nos fornece informações diversas sobre o PHP fornece informações diversas sobre o PHP que estamos utilizando.que estamos utilizando.

Por exemplo, o estado atual do PHP. Isto Por exemplo, o estado atual do PHP. Isto inclui informações sobre as opções de inclui informações sobre as opções de compilação do PHP e extensões, a versão compilação do PHP e extensões, a versão do PHP, informações do servidor e do PHP, informações do servidor e ambiente (se compilado como um módulo), ambiente (se compilado como um módulo), o ambiente PHP, informação da versão do o ambiente PHP, informação da versão do SO, caminhos, valores principais e locais SO, caminhos, valores principais e locais das opções de configuração, cabeçalhos das opções de configuração, cabeçalhos HTTP e a licença do PHP. HTTP e a licença do PHP.

Page 23: Desenvolvimento WEB

Devido a configuração em cada Devido a configuração em cada

sistema ser diferente, a função sistema ser diferente, a função phpinfo()phpinfo() e normalmente utilizada e normalmente utilizada para conhecer as definições de para conhecer as definições de configuração e as variáveis configuração e as variáveis predefinidas que estejam disponíveis predefinidas que estejam disponíveis no sistema. no sistema. phpinfo()phpinfo() é também é é também é uma ferramenta valiosa para uma ferramenta valiosa para eliminação de erros já que contém eliminação de erros já que contém todos os dados de EGPCS todos os dados de EGPCS (Environment, GET, POST, Cookie, (Environment, GET, POST, Cookie, Server). Server).

Page 24: Desenvolvimento WEB

Opções do Comando ?Opções do Comando ?

INFO_GENERAL-valor=1-A linha de INFO_GENERAL-valor=1-A linha de configuração, localização do php.ini configuração, localização do php.ini data de construção, Servidor Web, data de construção, Servidor Web, Sistema e mais. Sistema e mais.

INFO_CREDITS-valor=2-Créditos do INFO_CREDITS-valor=2-Créditos do PHP 4. Veja também PHP 4. Veja também phpcredits()phpcredits()

INFO_CONFIGURATION-valor=4-INFO_CONFIGURATION-valor=4-Valores locais e principais para as Valores locais e principais para as diretivas de configuração do PHP. diretivas de configuração do PHP. Veja também Veja também ini_get()ini_get(). .

Page 25: Desenvolvimento WEB

INFO_MODULES-valor=8-Módulos INFO_MODULES-valor=8-Módulos carregados e suas respectivas carregados e suas respectivas configurações. Veja também configurações. Veja também get_loaded_modules()get_loaded_modules(). .

INFO_ENVIRONMENT-valor=16-INFO_ENVIRONMENT-valor=16-Informação das variáveis de Informação das variáveis de ambiente que também esta ambiente que também esta disponível em disponível em $_ENV$_ENV. .

INFO_VARIABLES-valor=32-Mostra INFO_VARIABLES-valor=32-Mostra todas as variáveis predefinidas de todas as variáveis predefinidas de EGPCS (Environment, GET, POST, EGPCS (Environment, GET, POST, Cookie, Server). Cookie, Server).

Page 26: Desenvolvimento WEB

INFO_LICENSE-valor=64-INFO_LICENSE-valor=64-Informação sobre a Licença do Informação sobre a Licença do PHP. Veja também o faq sobre PHP. Veja também o faq sobre a licença. a licença.

INFO_ALL-valor=-1-Mostra tudo INFO_ALL-valor=-1-Mostra tudo acima. Este é o valor padrão. acima. Este é o valor padrão.

Page 27: Desenvolvimento WEB

Exemplo do CódigoExemplo do Código

<?php<?php

// Mostra todas as informações, usa o // Mostra todas as informações, usa o padrão INFO_ALLpadrão INFO_ALLphpinfo();phpinfo();

// Mostra apenas informações dos // Mostra apenas informações dos módulos.módulos.// phpinfo(8) mostra um resultado identico.// phpinfo(8) mostra um resultado identico.phpinfo(INFO_MODULES);phpinfo(INFO_MODULES);

?> ?>

Page 28: Desenvolvimento WEB

ResumindoResumindo

Temos a importância do comando Temos a importância do comando ECHO : sem ele não conseguimos ECHO : sem ele não conseguimos gerar dados dinâmicos, é gerar dados dinâmicos, é fundamental dominar este comando;fundamental dominar este comando;

As variáveis : daqui por diante as As variáveis : daqui por diante as usaremos muito. Lembrando que no usaremos muito. Lembrando que no PHP as variáveis sempre começam PHP as variáveis sempre começam pelo símbolo cifrão ($). Sempre que pelo símbolo cifrão ($). Sempre que houver este símbolo antes de houver este símbolo antes de qualquer nome o PHP o interpretará qualquer nome o PHP o interpretará como uma variável.como uma variável.

Page 29: Desenvolvimento WEB

Conceitos Básicos PHP -Conceitos Básicos PHP -Caracteres de EscapeCaracteres de Escape

Caracteres de escape são muito Caracteres de escape são muito utilizados em programação. \n utilizados em programação. \n por exemplo significa nova linha por exemplo significa nova linha e não é o único caracter de e não é o único caracter de escape que existe. Veja abaixo escape que existe. Veja abaixo alguns dos caracteres de alguns dos caracteres de escape mais utilizados: escape mais utilizados:

Page 30: Desenvolvimento WEB

\a-=\a-=AlarmeAlarme \cX=\cX=Control X, onde X pode ser Control X, onde X pode ser

qualquer caracterqualquer caracter \e=\e=EscapeEscape \f=\f=Formfeed (alimentação de Formfeed (alimentação de

formulário)formulário) \n=\n=Nova linhaNova linha \r=\r=Retorno de cabeçote (nova linha)Retorno de cabeçote (nova linha) \t=\t=TabTab \xHH=\xHH=Caracter com código Caracter com código

hexadecimal HHhexadecimal HH \DDD=\DDD=Caracter com código octal Caracter com código octal

DDDDDD

Page 31: Desenvolvimento WEB

Exemplo de EscapeExemplo de Escape

<?php<?phpecho ("Hello world<br>\n");echo ("Hello world<br>\n");echo (“Teste de PHP<br>\n");echo (“Teste de PHP<br>\n");echo (“Belo Teste!<br>\n");echo (“Belo Teste!<br>\n");?> ?>

Page 32: Desenvolvimento WEB

Comentar linhas no PHPComentar linhas no PHP

Assim como existem comentários em Assim como existem comentários em HTML delimitados por <!-- e -->, em PHP HTML delimitados por <!-- e -->, em PHP também é possível comentar partes de um também é possível comentar partes de um código. Para tal, quando se quer comentar código. Para tal, quando se quer comentar uma única linha, utilizamos os caracteres // uma única linha, utilizamos os caracteres // para comentar a linha que não será para comentar a linha que não será processada pelo todo.processada pelo todo.

Quando é um número maior de linhas ou Quando é um número maior de linhas ou blocos, utilizamos " /* " para abrir o blocos, utilizamos " /* " para abrir o comentário, e para fechar " */ "comentário, e para fechar " */ "

Page 33: Desenvolvimento WEB

ExemploExemplo

<?<?// Uma linha de comentario ..// Uma linha de comentario ..

/*/*Um SimplesUm Simplesbloco debloco decomentario !!!comentario !!!*/*/?> ?>

Page 34: Desenvolvimento WEB

Escrevendo em um Escrevendo em um Documento com PHPDocumento com PHP

Abrindo qualquer editor de Abrindo qualquer editor de textos já podemos escrever textos já podemos escrever código PHP. Podemos digitar código PHP. Podemos digitar este exemplo como uma este exemplo como uma estrutura inicial de código :estrutura inicial de código :

Page 35: Desenvolvimento WEB

<html><html><body><body><?php<?php

//Legal, estou escrevendo um //Legal, estou escrevendo um códigocódigoecho “<h2 echo “<h2 align=‘center’>Parabéns para align=‘center’>Parabéns para mim!</h2>”;mim!</h2>”;

?>?></body></body></html></html>

Page 36: Desenvolvimento WEB

Salve este programa como Salve este programa como Prog1.php e envie para o Prog1.php e envie para o diretório que você criou para diretório que você criou para hospedar seu site. Este hospedar seu site. Este programa vai gerar a frase programa vai gerar a frase “Parabéns para mim!” “Parabéns para mim!” centralizada na página. centralizada na página.

Page 37: Desenvolvimento WEB

WAMPWAMP

WAMPWAMP é acrônimo para a é acrônimo para a combinação:combinação:WWindows, indows, AApache, pache, MMySQL, ySQL, PPHPHP

O WAMP é o instalador do servidor O WAMP é o instalador do servidor Apache, do banco de dados Mysql e Apache, do banco de dados Mysql e da linguagem PHP para o sistema da linguagem PHP para o sistema operacional Windows. Também é operacional Windows. Também é possível encontrar instaladores para possível encontrar instaladores para outros sistemas operacionais:outros sistemas operacionais:

LAMP – LinuxLAMP – LinuxMAMP – Mac OSMAMP – Mac OSSAMP – SoliarisSAMP – Soliaris

Page 38: Desenvolvimento WEB

É possível baixar o WAMP em: É possível baixar o WAMP em:

http://www.wampserver.comhttp://www.wampserver.com ou em ou em superdownloads, por exemplo, basta superdownloads, por exemplo, basta procurar por WAMP;procurar por WAMP;

Depois de efetuar a download, basta Depois de efetuar a download, basta executar o programa e seguir os executar o programa e seguir os passos de instalação que o Apache, passos de instalação que o Apache, o MySQL, o PHP e uma ferramenta o MySQL, o PHP e uma ferramenta denominada PHPMyAdmin (que denominada PHPMyAdmin (que permite criar e manipular BD permite criar e manipular BD MySQL) estarão instalados e MySQL) estarão instalados e prontos para seram utilizados. prontos para seram utilizados.

Page 39: Desenvolvimento WEB

Em cada um desses pacotes, é necessário Em cada um desses pacotes, é necessário

verificar qual o diretório onde devemos verificar qual o diretório onde devemos salvar os arquivos PHP para salvar os arquivos PHP para posteriormente acessar no navegador posteriormente acessar no navegador aatravés do endereço través do endereço http://localhost/nome_arquivo.php ou http://localhost/nome_arquivo.php ou http://ip_da_maquina/nome_arquivo.php http://ip_da_maquina/nome_arquivo.php para que os comandos PHP sejam para que os comandos PHP sejam interpretados e seja gerada uma resposta interpretados e seja gerada uma resposta HTML que será enviada ao navegador;HTML que será enviada ao navegador;

Depois de efetuar a instalação do PHP e Depois de efetuar a instalação do PHP e do Apache, seja com um pacote de do Apache, seja com um pacote de configuração automático ou manualmente, configuração automático ou manualmente, para testar se está tudo funcionando basta para testar se está tudo funcionando basta abrir um editor de texto, digitar o código abrir um editor de texto, digitar o código abaixo:abaixo:

<?= phpinfo(); ?><?= phpinfo(); ?>

Page 40: Desenvolvimento WEB

Salvar com o nome teste.php no Salvar com o nome teste.php no

diretório específico (ex: diretório específico (ex: C:/wamp/www) e acessar no C:/wamp/www) e acessar no navegador navegador (http://localhost/teste.php);(http://localhost/teste.php);

Uma das vantagens de se utilizar Uma das vantagens de se utilizar uma linguagem dinâmica que roda uma linguagem dinâmica que roda do lado do servidor, como o PHP, é do lado do servidor, como o PHP, é que além de ser possível acessar que além de ser possível acessar Banco de Dados, efetuar o envio de Banco de Dados, efetuar o envio de dados por e-mail, permitir o upload dados por e-mail, permitir o upload de arquivos, gerar gráficos, etc... de arquivos, gerar gráficos, etc... não ficamos mais “presos” a não ficamos mais “presos” a tecnologia que temos no cliente;tecnologia que temos no cliente;

Page 41: Desenvolvimento WEB

Se pensarmos, por exemplo, na validação Se pensarmos, por exemplo, na validação

de um formulário feita com JavaScript, é de um formulário feita com JavaScript, é necessário que o navegador do cliente necessário que o navegador do cliente suporte JavaScript e também que a suporte JavaScript e também que a execução de scripts esteja habilitada, caso execução de scripts esteja habilitada, caso contrario de nada valerá a validação e o contrario de nada valerá a validação e o cliente poderá submeter o formulário com cliente poderá submeter o formulário com campos obrigatórios em branco ou com campos obrigatórios em branco ou com campos preenchidos de forma errada;campos preenchidos de forma errada;

Se essa mesma validação fosse efetuada Se essa mesma validação fosse efetuada no servidor, isso não ocorreria. Claro que no servidor, isso não ocorreria. Claro que também temos que pensar que no caso de também temos que pensar que no caso de muitos acessos simultâneos, efetuar a muitos acessos simultâneos, efetuar a validação do formulário no servidor poderia validação do formulário no servidor poderia sobrecarregá-lo, já a validação no cliente, sobrecarregá-lo, já a validação no cliente, além de mais rápida, não sobrecarregaria além de mais rápida, não sobrecarregaria o servidor. o servidor.

Page 42: Desenvolvimento WEB

Outra diferença entre o PHP e o Outra diferença entre o PHP e o

JavaScript, é que no PHP a lógica JavaScript, é que no PHP a lógica fica protegida, ou seja, mesmo que o fica protegida, ou seja, mesmo que o cliente exiba o código fonte da cliente exiba o código fonte da página, os comandos PHP não página, os comandos PHP não serão exibidos pois quando é feita a serão exibidos pois quando é feita a solicitação de uma página PHP, os solicitação de uma página PHP, os comandos são interpretados e é comandos são interpretados e é gerada uma resposta HTML que gerada uma resposta HTML que será enviada para o navegador do será enviada para o navegador do cliente, vejamos o exemplo abaixo:cliente, vejamos o exemplo abaixo:

Abra o bloco de notas e digite o Abra o bloco de notas e digite o código abaixo e salve como código abaixo e salve como teste2.php: teste2.php:

Page 43: Desenvolvimento WEB

Abra no navegador este código.Clique na opção Código Fonte do menu Exibir e verifiqueque a resposta que foi enviada ao navegador só possuir comandos HTML ;

Page 44: Desenvolvimento WEB

ConstantesConstantes

São valores que são predefinidos no São valores que são predefinidos no início do programa e que não início do programa e que não mudam ao longo de sua execução. mudam ao longo de sua execução.

Você pode definir suas próprias Você pode definir suas próprias constantes utilizando o comando constantes utilizando o comando DEFINE, que possui a sintaxe :DEFINE, que possui a sintaxe :

Bool define(string nome, misto Bool define(string nome, misto valor[,bool case_insensitive]) onde:valor[,bool case_insensitive]) onde:

Page 45: Desenvolvimento WEB

Nome=nome que você vai usar Nome=nome que você vai usar para representar a constante;para representar a constante;

Valor=é um valor qualquer Valor=é um valor qualquer numérico ou alfanumérico a ser numérico ou alfanumérico a ser atribuído a ela;atribuído a ela;

Case_insensitive=valor lógico, Case_insensitive=valor lógico, true ou false, que indica se o true ou false, que indica se o php deve diferenciar letras php deve diferenciar letras maiúsculas e minúsculas maiúsculas e minúsculas quando houver uma referência a quando houver uma referência a essa constante. Veja o essa constante. Veja o exemplo :exemplo :

Page 46: Desenvolvimento WEB

<html><html><body><body><?php <?php

define(“meunome”,”juliano”);define(“meunome”,”juliano”);define(“peso”,78);define(“peso”,78);echo “O meu nome é “.meunome;echo “O meu nome é “.meunome;echo “<br>”echo “<br>”echo “O meu peso é “.peso.” quilos”;echo “O meu peso é “.peso.” quilos”;

?>?></body></body></html></html>

Page 47: Desenvolvimento WEB

O resultado da execução deste O resultado da execução deste programa será :programa será :

O meu nome é julianoO meu nome é juliano

O meu peso é 78 quilosO meu peso é 78 quilos

Page 48: Desenvolvimento WEB

Note que para as constantes não Note que para as constantes não

utilizamos o símbolo $. Este símbolo utilizamos o símbolo $. Este símbolo só é utilizado para definição de só é utilizado para definição de variáveis;variáveis;

Outro recurso apresentado e muito Outro recurso apresentado e muito utilizado é o .(ponto). Com ele utilizado é o .(ponto). Com ele podemos concatenar quantos dados podemos concatenar quantos dados quisermos, e todos eles serão quisermos, e todos eles serão exibidos como apenas uma exibidos como apenas uma sequência de caracteres.sequência de caracteres.

Além das constantes que você cria, Além das constantes que você cria, o PHP possui diversas constantes o PHP possui diversas constantes próprias predefinidas, veja a seguir:próprias predefinidas, veja a seguir:

Page 49: Desenvolvimento WEB

TRUE=valor verdadeiro, utilizado em TRUE=valor verdadeiro, utilizado em comparações;comparações;

FALSE=valor falso;FALSE=valor falso;_FILE_=contém o nome do script que está _FILE_=contém o nome do script que está

sendo executado;sendo executado;_LINE_=contém o número da linha do script _LINE_=contém o número da linha do script

que está sendo executado;que está sendo executado;PHP_VERSION=contém a versão corrente PHP_VERSION=contém a versão corrente

do php;do php;PHP_OS=nome do sistema operacional onde PHP_OS=nome do sistema operacional onde

o php está rodando;o php está rodando;E_ERROR=exibe um erro ocorrido em um E_ERROR=exibe um erro ocorrido em um

script. A execução é interrompida;script. A execução é interrompida;E_WARNING=exibe uma mensagem de E_WARNING=exibe uma mensagem de

aviso do pho, a execução não pára;aviso do pho, a execução não pára;

Page 50: Desenvolvimento WEB

E_PARSE=exibe um erro de E_PARSE=exibe um erro de sintaxe, a execução é sintaxe, a execução é interrompida;interrompida;

E_NOTICE=mostra que ocorreu E_NOTICE=mostra que ocorreu algo,mas não necessariamente algo,mas não necessariamente um erro. A execução não pára.um erro. A execução não pára.

Page 51: Desenvolvimento WEB

VariáveisVariáveis

As variáveis servem para armazenar As variáveis servem para armazenar dados que podem ser usados em qualquer dados que podem ser usados em qualquer parte do programa.Cada variável está parte do programa.Cada variável está associada a uma posição de memória em associada a uma posição de memória em seu computador. Ao contrário das seu computador. Ao contrário das linguagens tradicionais, como delphi, C, linguagens tradicionais, como delphi, C, Pascal, no PHP não é necessário fazer Pascal, no PHP não é necessário fazer declaração de variáveis. Basta atribuir declaração de variáveis. Basta atribuir diretamente um valor a ela e a partir desse diretamente um valor a ela e a partir desse momento já está criada e associada a um momento já está criada e associada a um tipo , dependendo do valor que lhe foi tipo , dependendo do valor que lhe foi atribuído;atribuído;

Page 52: Desenvolvimento WEB

Exemplos de Variáveis Exemplos de Variáveis VálidasVálidas

$nota1$nota1 $casa120$casa120 $bisc8$bisc8 $futebol_brasileiro$futebol_brasileiro

Page 53: Desenvolvimento WEB

Exemplo de Variáveis Exemplo de Variáveis InválidasInválidas $100vezes$100vezes $5$5 $20_numero$20_numero

Atente sempre para nunca criar Atente sempre para nunca criar variáveis que comecem com variáveis que comecem com números, o PHP não aceita isso;números, o PHP não aceita isso;

Crie sempre nomes de variáveis que Crie sempre nomes de variáveis que tentem descrever ao máximo o que tentem descrever ao máximo o que elas irão fazer.elas irão fazer.

Page 54: Desenvolvimento WEB

Quando criar uma variável, Quando criar uma variável, cuidado com as letras cuidado com as letras maiúsculas e minúsculas. maiúsculas e minúsculas.

Por exemplo, $NotaAluno é Por exemplo, $NotaAluno é diferente de $notaAluno, que é diferente de $notaAluno, que é diferente de $notaaluno que é diferente de $notaaluno que é diferente de $NOTAALUNO.diferente de $NOTAALUNO.

Page 55: Desenvolvimento WEB

Escopo das VariáveisEscopo das Variáveis

Podemos utilizar a mesma variável em Podemos utilizar a mesma variável em locais e momentos diferentes, embora isso locais e momentos diferentes, embora isso não seja muito interessante de ser feito.não seja muito interessante de ser feito.

Uma variável declarada dentro de uma Uma variável declarada dentro de uma função só funciona dentro da função. Fora função só funciona dentro da função. Fora dali seu valor não está acessível em dali seu valor não está acessível em nenhuma parte do programa.nenhuma parte do programa.

No entanto, se quisermos, podemos usar No entanto, se quisermos, podemos usar dentro de uma função o valor de uma dentro de uma função o valor de uma variável existente dentro do programa variável existente dentro do programa principal e para isso existem duas principal e para isso existem duas maneiras :maneiras :

Page 56: Desenvolvimento WEB

1) Definí-la como Global no 1) Definí-la como Global no início do programa;início do programa;

2) Utilizar o array predefinido 2) Utilizar o array predefinido $GLOBALS, que utiliza os $GLOBALS, que utiliza os nomes das variáveis como nomes das variáveis como chave associativa.chave associativa.

Vejamos alguns exemplos ?Vejamos alguns exemplos ?

Page 57: Desenvolvimento WEB

<?php<?php$num=5000;$num=5000;function testa_variavel()function testa_variavel(){{

$num +=5; //somei seu $num +=5; //somei seu conteúdo com 5conteúdo com 5echo $num.”<br>”;echo $num.”<br>”;

}}echo $num.”<br>”;echo $num.”<br>”;testa_variavel();testa_variavel();

?>?>

Page 58: Desenvolvimento WEB

Após a execução deste Após a execução deste programa serão mostrados na programa serão mostrados na tela os valores 5000 e na linha tela os valores 5000 e na linha de baixo 5.de baixo 5.

Isso ocorre porque quando Isso ocorre porque quando somamos o conteúdo da somamos o conteúdo da variável $num dentro da função variável $num dentro da função (note que dentro da função ela (note que dentro da função ela não vale nada) o resultado será não vale nada) o resultado será 5. O valor de 5000 está fora da 5. O valor de 5000 está fora da função !função !

Page 59: Desenvolvimento WEB

Utilizando o valor de uma variável Utilizando o valor de uma variável global dentro da funçãoglobal dentro da função

<?php<?php$num=5000;$num=5000;function testa_variavel()function testa_variavel(){{

global $num;global $num;$num +=5; //somei seu $num +=5; //somei seu

conteúdo com 5conteúdo com 5echo $num.”<br>”;echo $num.”<br>”;

}}echo $num.”<br>”;echo $num.”<br>”;testa_variavel();testa_variavel();

?>?>

Page 60: Desenvolvimento WEB

Os valores mostrados no Os valores mostrados no exemplo anterior serão de 5000 exemplo anterior serão de 5000 e 5005 na linha de baixo. Isso e 5005 na linha de baixo. Isso porque dentro da função porque dentro da função especificamos que a variável especificamos que a variável $num que será utilizada é $num que será utilizada é global, então, altera-se o valor global, então, altera-se o valor dela com a soma, ela entra na dela com a soma, ela entra na função valendo 5000, somando-função valendo 5000, somando-se mais 5 temos 5005.se mais 5 temos 5005.

Vejamos agora o exemplo Vejamos agora o exemplo utilizando o array $GLOBALS :utilizando o array $GLOBALS :

Page 61: Desenvolvimento WEB

<?php<?php

$num=5000;$num=5000;

function testa_variavel()function testa_variavel()

{{

echo echo $GLOBALS[“num”].”<br>”;$GLOBALS[“num”].”<br>”;

$GLOBALS[“num”]++;$GLOBALS[“num”]++;

}}

testa_variavel();testa_variavel();

echo $num;echo $num;

?>?>

Page 62: Desenvolvimento WEB

Os valores impressos serão Os valores impressos serão 5000 e 5001. Isso porque logo 5000 e 5001. Isso porque logo no início da função, o programa no início da função, o programa imprime o valor da variável imprime o valor da variável global $num. Na linha de baixo global $num. Na linha de baixo existe um incremento utilizando existe um incremento utilizando o array $GLOBALS com a o array $GLOBALS com a chave associativa (++) em um, chave associativa (++) em um, passando a valer 5001.passando a valer 5001.

Page 63: Desenvolvimento WEB

Conversão de VariáveisConversão de Variáveis

Se tivermos uma string contendo Se tivermos uma string contendo somente números e quisermos somente números e quisermos somar esses números, o PHP irá somar esses números, o PHP irá automaticamente convertê-los em automaticamente convertê-los em numérico e realizar o cálculo. Se numérico e realizar o cálculo. Se houver textos e números em uma houver textos e números em uma string, o PHP utilizará somente os string, o PHP utilizará somente os números e realizará a conta. números e realizará a conta. Exemplo :Exemplo :

$string = “5”;$string = “5”; $numero = 3;$numero = 3; $texto = “3 vezes campeão”;$texto = “3 vezes campeão”;

Page 64: Desenvolvimento WEB

Se somarmos $numero+$string, Se somarmos $numero+$string,

o resultado será 8;o resultado será 8; Se somarmos 3.45+$string, o Se somarmos 3.45+$string, o

resultado será 8.45.resultado será 8.45. Se somarmos $numero+$texto, Se somarmos $numero+$texto,

o resultado será 6, pois o resultado será 6, pois somente a parte numérica da somente a parte numérica da string será considerada;string será considerada;

Page 65: Desenvolvimento WEB

Conversão Manual de Conversão Manual de VariáveisVariáveis

Int,integer = converte para Int,integer = converte para inteiro;inteiro;

Real, float, double = converte Real, float, double = converte para ponto flutuante;para ponto flutuante;

String = converte em string;String = converte em string; Array = converte em vetor;Array = converte em vetor; Object = converte em objeto.Object = converte em objeto.

Page 66: Desenvolvimento WEB

Exemplo :Exemplo :

<?php<?php

$x = 50;$x = 50;

$y = 2,35;$y = 2,35;

$soma = (int) $y + $x;$soma = (int) $y + $x;

echo $soma;echo $soma;

?>?>

Page 67: Desenvolvimento WEB

No exemplo, a variável $y é do No exemplo, a variável $y é do

tipo float, foi convertida para tipo float, foi convertida para inteiro por meio do conversor inteiro por meio do conversor int;int;

Se quiséssemos converter o Se quiséssemos converter o resultado de toda uma resultado de toda uma expressão para inteiro, bastaria expressão para inteiro, bastaria colocar os parênteses para colocar os parênteses para delimitar expressão cujo delimitar expressão cujo resultado deve ser convertido. resultado deve ser convertido. Por exemplo : $soma=(float)Por exemplo : $soma=(float)($x+$y);($x+$y);

Page 68: Desenvolvimento WEB

Tipos de VariáveisTipos de Variáveis

Numéricas = valores inteiros ou Numéricas = valores inteiros ou reais; Exemplo $numero = 10 reais; Exemplo $numero = 10 ou $y = 15.002ou $y = 15.002

Alfanuméricas ou Strings = Alfanuméricas ou Strings = cadeias de caracteres que cadeias de caracteres que podem ser delimitados por podem ser delimitados por aspas simples ‘ ou duplas aspas simples ‘ ou duplas “;Exemplo $nome=‘Glaucio’ ou “;Exemplo $nome=‘Glaucio’ ou $profissao=“professor”$profissao=“professor”

Page 69: Desenvolvimento WEB

Arrays = ou vetor, podem Arrays = ou vetor, podem

armazenar vários valores ao armazenar vários valores ao mesmo tempo, pois se trata de mesmo tempo, pois se trata de uma estrutura de uma estrutura de armazenamento que possui um armazenamento que possui um identificador além de um índice identificador além de um índice associado, onde cada índice associado, onde cada índice indica uma posição de memória indica uma posição de memória em que fica armazenado o em que fica armazenado o elemento do array. O índice elemento do array. O índice aparece entre colchetes[] logo aparece entre colchetes[] logo após o identificador do array.após o identificador do array.

Page 70: Desenvolvimento WEB

Exemplo :Exemplo :

$vetor[0] = 30;$vetor[0] = 30;

$vetor[1] = 40;$vetor[1] = 40;

$vetor[“time”] = “Santos”;$vetor[“time”] = “Santos”;

Veremos mais adiante a utilização Veremos mais adiante a utilização correta dos arrays e seus casos correta dos arrays e seus casos de aplicação.de aplicação.

Page 71: Desenvolvimento WEB

Objetos = é um tipo de variável Objetos = é um tipo de variável

que serve para instanciar uma que serve para instanciar uma classe. Um objeto pode acessar classe. Um objeto pode acessar funções pré definidas numa funções pré definidas numa classe;classe;

Teremos mais adiante um Teremos mais adiante um aprofundamento em Orientação aprofundamento em Orientação a Objetos, quando veremos a a Objetos, quando veremos a aplicação deste tipo de variável aplicação deste tipo de variável mais detalhadamente.mais detalhadamente.

Page 72: Desenvolvimento WEB

OperadoresOperadores

Operadores aritméticos = utilizados Operadores aritméticos = utilizados para qualquer cálculo matemático, para qualquer cálculo matemático, somar, subtrair, multiplicar, dividir e somar, subtrair, multiplicar, dividir e etc. São eles :etc. São eles :

+ adição+ adição - subtração- subtração * multiplicação* multiplicação / divisão/ divisão % resto da divisão% resto da divisão

Page 73: Desenvolvimento WEB

Existem também os operadores Existem também os operadores

aritméticos que atuam apenas em aritméticos que atuam apenas em um operando e nos são úteis para um operando e nos são úteis para incrementar, decrementar ou trocar incrementar, decrementar ou trocar sinais, são eles :sinais, são eles :

-oper – troca o sinal do operando;-oper – troca o sinal do operando; ++oper – primeiro incrementa o valor ++oper – primeiro incrementa o valor

do operando e depois realiza a do operando e depois realiza a operação;operação;

--oper - primeiro decrementa o valor --oper - primeiro decrementa o valor do operando e depois realiza a do operando e depois realiza a operação; operação;

Page 74: Desenvolvimento WEB

Oper++ - primeiro realiza a Oper++ - primeiro realiza a

operação e depois realiza o operação e depois realiza o incremento;incremento;

Oper-- - primeiro realiza a Oper-- - primeiro realiza a operação e depois realiza o operação e depois realiza o decremento;decremento;

Se o objetivo for somente Se o objetivo for somente incrementar o valor de uma incrementar o valor de uma variável, digita-se o nome da variável, digita-se o nome da variável seguido do operador +variável seguido do operador ++, por exemplo :+, por exemplo :

$variavel ++;$variavel ++;

Page 75: Desenvolvimento WEB

Exemplo de Código :Exemplo de Código :<html><html><body><body><?php<?php $a=1;$a=1; $b=3;$b=3; $c=5;$c=5; $res1=++$b - $a;$res1=++$b - $a; $res2=$c-- + $a;$res2=$c-- + $a; $res3= --$a+$c++;$res3= --$a+$c++; echo”a = $a<br> b = $b<br> c = $c<br><br>”;echo”a = $a<br> b = $b<br> c = $c<br><br>”; echo “res1 = $res1<br> res2 = $res2<br> res3 = echo “res1 = $res1<br> res2 = $res2<br> res3 =

$res3<br>”;$res3<br>”;?>?></body></body></html></html>

Page 76: Desenvolvimento WEB

O resultado em tela deverá ser O resultado em tela deverá ser

o seguinte ?o seguinte ?

a = 0a = 0

b = 4b = 4

c = 5c = 5

res1 = 3res1 = 3

res2 = 6res2 = 6

res3 = 4res3 = 4

Page 77: Desenvolvimento WEB

Operadores RelacionaisOperadores Relacionais

Permitem comparar duas ou Permitem comparar duas ou mais variáveis;mais variáveis;

Com eles podemos testar se Com eles podemos testar se uma variável é maior que a uma variável é maior que a outra ou se possui um valor outra ou se possui um valor maior que determinado numero maior que determinado numero ou ainda se o retorno de uma ou ainda se o retorno de uma função foi verdadeiro ou falso.função foi verdadeiro ou falso.

Veja a tabela a seguir ?Veja a tabela a seguir ?

Page 78: Desenvolvimento WEB

op1==op2 – verdadeiro se op1 for op1==op2 – verdadeiro se op1 for

igual a op2;igual a op2; op1>=op2 – verdadeiro se op1 for op1>=op2 – verdadeiro se op1 for

maior ou igual a op2;maior ou igual a op2; op1<=op2 – verdadeiro se op1 for op1<=op2 – verdadeiro se op1 for

menor ou igual a op2;menor ou igual a op2; op1!=op2 – verdadeiro se op1 for op1!=op2 – verdadeiro se op1 for

diferente de op2;diferente de op2; op1<>op2 – também serve para op1<>op2 – também serve para

representar diferença;representar diferença; op1>op2 – verdadeiro se op1 for op1>op2 – verdadeiro se op1 for

maior que op2;maior que op2; op1<op2 – verdadeiro se op1 for op1<op2 – verdadeiro se op1 for

menor que op2.menor que op2.

Page 79: Desenvolvimento WEB

Operadores de AtribuiçãoOperadores de Atribuição

São operadores utilizados para São operadores utilizados para representar a colocação de um representar a colocação de um valor em uma variável;valor em uma variável;

A variável sempre estará do A variável sempre estará do lado esquerdo do operador e o lado esquerdo do operador e o valor ou expressão a ser valor ou expressão a ser atribuído sempre do lado direito. atribuído sempre do lado direito. Veja o quadro dos operadores Veja o quadro dos operadores disponíveis :disponíveis :

Page 80: Desenvolvimento WEB

Op1=op2 – op1 recebe o valor de op2;Op1=op2 – op1 recebe o valor de op2; Op1+=op2 - equivale a op1=op1+op2;Op1+=op2 - equivale a op1=op1+op2; Op1-=op2 – equivale a op1=op1-op2;Op1-=op2 – equivale a op1=op1-op2; Op1*=op2 – equivale a op1=op1*op2;Op1*=op2 – equivale a op1=op1*op2; Op1/=op2 – equivale a op1=op1/op2Op1/=op2 – equivale a op1=op1/op2 Op1.=op2 – Concatenação. Equivale a Op1.=op2 – Concatenação. Equivale a

op1.op2;op1.op2; Op1%=op2 – equivale a op1=op1%op2;Op1%=op2 – equivale a op1=op1%op2; Cuidado ao usar = e == . O comando = é Cuidado ao usar = e == . O comando = é

de atribuição e o == é de comparação !de atribuição e o == é de comparação !

Page 81: Desenvolvimento WEB

Exemplo com comandos de atribuição :Exemplo com comandos de atribuição :<html><html><body><body><?php<?php

$soma=0;$soma=0;$valor1=10;$valor1=10;$valor2=20;$valor2=20;$valor3=30;$valor3=30;$soma += $valor1; //$soma fica com 10$soma += $valor1; //$soma fica com 10$soma += $valor2; //$soma fica com 10+20=30$soma += $valor2; //$soma fica com 10+20=30$soma *= $valor3; //$soma fica 30*30=900$soma *= $valor3; //$soma fica 30*30=900$soma %= 100; //$soma fica com 900%100=0$soma %= 100; //$soma fica com 900%100=0echo $soma;echo $soma;

?>?></body></body></html></html>

Page 82: Desenvolvimento WEB

Operadores LógicosOperadores Lógicos

São todos aqueles que nos retornam um São todos aqueles que nos retornam um valor verdadeiro ou falso :valor verdadeiro ou falso :

!op1 – verdadeiro se op1 for falso;!op1 – verdadeiro se op1 for falso; op1ANDop2 – verdadeiro se op1 E op2 op1ANDop2 – verdadeiro se op1 E op2

forem verdadeiros;forem verdadeiros; op1ORop2 – verdadeiro se op1 OU op2 op1ORop2 – verdadeiro se op1 OU op2

forem verdadeiros;forem verdadeiros; op1XORop2 – verdadeiro se SÓ op1 ou op1XORop2 – verdadeiro se SÓ op1 ou

SÓ op2 for verdadeiro;SÓ op2 for verdadeiro; Op1&&op2 – verdadeiro se op1 E op2 Op1&&op2 – verdadeiro se op1 E op2

forem verdadeiros;forem verdadeiros; Op1||op2 – verdadeiro se op1 OU op2 Op1||op2 – verdadeiro se op1 OU op2

forem verdadeiros;forem verdadeiros;

Page 83: Desenvolvimento WEB

Atenção para os operadores Atenção para os operadores

AND e && e OR e ||. AND e && e OR e ||. A diferença básica entre eles A diferença básica entre eles

está na precedência. está na precedência. A precedência mais alta é dos A precedência mais alta é dos

operadores && e || e a mais operadores && e || e a mais baixa está no AND e OR.baixa está no AND e OR.

Cuidado ao utilizá-los pois seus Cuidado ao utilizá-los pois seus resultados serão diferentes. No resultados serão diferentes. No próximo tópico trataremos da próximo tópico trataremos da precedências desses precedências desses operadores.operadores.

Page 84: Desenvolvimento WEB

Exemplo de código :Exemplo de código :<html><html><body><body><?php<?php

......if (empty($nome) OR empty(&email) OR if (empty($nome) OR empty(&email) OR empty($cpf))empty($cpf)){{

echo”Você deve preencher os campos echo”Você deve preencher os campos NOME,E-MAIL e CPF !”;NOME,E-MAIL e CPF !”;

exit;exit;}}......

?>?></body></body></html></html>

Page 85: Desenvolvimento WEB

Tabela de resultados gerada Tabela de resultados gerada pelos operadores lógicospelos operadores lógicos AND (E)AND (E) V – V = VV – V = V

V – F = FV – F = FF – V = FF – V = FF – F = FF – F = F

OR(OU)OR(OU)V – V = VV – V = VV – F = VV – F = VF - V = VF - V = VF - F = FF - F = F

XOR (OU EXCLUSIVO)XOR (OU EXCLUSIVO)V – V = FV – V = FV – F = VV – F = VF – V = VF – V = VF – F = FF – F = F

Page 86: Desenvolvimento WEB

!(NOT)!(NOT)

V = FV = F

F - VF - V

Page 87: Desenvolvimento WEB

Precedência dos OperadoresPrecedência dos Operadores

Nada mais é que a ordem que Nada mais é que a ordem que os programas em PHP tratam a os programas em PHP tratam a ordem de seus operadores.ordem de seus operadores.

Na tabela a seguir estão Na tabela a seguir estão listados os operadores em listados os operadores em ordem DECRESCENTE de ordem DECRESCENTE de precedência :precedência :

Page 88: Desenvolvimento WEB

-!~++- = negativo, não logico, inversão -!~++- = negativo, não logico, inversão de bits, incremento e decremento;de bits, incremento e decremento;

*/% = multiplicação, divisão e resto de */% = multiplicação, divisão e resto de divisão;divisão;

+-. = adição, subtração e +-. = adição, subtração e concatenação;concatenação;

<<>> deslocamentos binários;<<>> deslocamentos binários;>< >= <= = maior, menor,maior ou >< >= <= = maior, menor,maior ou

igual, menor ou igual;igual, menor ou igual;== != <> = iguale diferente;== != <> = iguale diferente;& = AND binário;& = AND binário;^ = XOR binário;^ = XOR binário;| = OR binário;| = OR binário;

Page 89: Desenvolvimento WEB

&& = AND lógico;&& = AND lógico;|| = OR lógico;|| = OR lógico;?: = Operador ternário;?: = Operador ternário;= += -= *= /= %= &= ~= <<= >>= ^= = = += -= *= /= %= &= ~= <<= >>= ^= =

Operadores de atribuição;Operadores de atribuição;

AND = AND lógico (de menor AND = AND lógico (de menor prioridade);prioridade);

XOR = XOR lógico (de menor XOR = XOR lógico (de menor prioridade);prioridade);

OR = OR lógico (de menor OR = OR lógico (de menor prioridade).prioridade).

Page 90: Desenvolvimento WEB

ObservaçõesObservações

Sempre será executado primeiro as Sempre será executado primeiro as operações que estiverem entre operações que estiverem entre parênteses. Se dentro dos parênteses. Se dentro dos parênteses houver diversas parênteses houver diversas operações, daí sim será aplicada operações, daí sim será aplicada pelo PHP a precedência para definir pelo PHP a precedência para definir a ordem.a ordem.

Quando existirem operadores da Quando existirem operadores da mesma precedência em uma mesma precedência em uma operação, o PHO começa a resolver operação, o PHO começa a resolver a expressão sempre da esquerda a expressão sempre da esquerda para a direita.para a direita.

Page 91: Desenvolvimento WEB

Exemplo de Código:Exemplo de Código:<?php<?php

$num = 5;$num = 5;$resultado = 8+3*2 + ++$num;$resultado = 8+3*2 + ++$num;echo “$num<br>”;echo “$num<br>”;echo $resultado;echo $resultado;

?>?> O resultado será :O resultado será : 66

2020

Page 92: Desenvolvimento WEB

O operador ++ tem prioridade O operador ++ tem prioridade em relação aos operadores + e em relação aos operadores + e *, portanto o programa primeiro *, portanto o programa primeiro incrementou $num, passando a incrementou $num, passando a vale 6.vale 6.

O segundo operador que tem O segundo operador que tem precedência é o *, então precedência é o *, então realizou-se a operação 3*2 = 6. realizou-se a operação 3*2 = 6.

Depois ficamos então com a Depois ficamos então com a soma de 8+6+6. 8+6=14 e soma de 8+6+6. 8+6=14 e depois 14+6=20.depois 14+6=20.

Page 93: Desenvolvimento WEB

ArraysArrays

Os arrays podem ser vistos como Os arrays podem ser vistos como uma forma de lista indexada de uma forma de lista indexada de variáveis (array unidimensional), ou variáveis (array unidimensional), ou como uma tabela (array como uma tabela (array bidimensional), e podem conter bidimensional), e podem conter qualquer tipo de dados (caracter, qualquer tipo de dados (caracter, inteiro, decimal, string).inteiro, decimal, string).

Este tipo de estrutura de dados, é Este tipo de estrutura de dados, é bastante funcional, quando estamos bastante funcional, quando estamos tratando informações relacionadas. tratando informações relacionadas. Exemplo : Exemplo :

Page 94: Desenvolvimento WEB

imaginemos que estamos fazendo uma imaginemos que estamos fazendo uma lista de compras, e nessa lista queremos lista de compras, e nessa lista queremos produtos tal com couves, batatas, laranjas, produtos tal com couves, batatas, laranjas, maçãs, e peras. Sem usar arrays, teríamos maçãs, e peras. Sem usar arrays, teríamos que ter qualquer coisa do tipo: que ter qualquer coisa do tipo:

$produto1="Batatas";$produto1="Batatas";$produto2="Laranjas";$produto2="Laranjas";$produto3="Maças";$produto3="Maças";$produto4="Pêras"; $produto4="Pêras";

Se quisermos saber quantos produtos Se quisermos saber quantos produtos temos, teríamos que verificar se a variável temos, teríamos que verificar se a variável $produtoX tem, ou não, um valor. Com $produtoX tem, ou não, um valor. Com arrays é diferente!. Ao invés de ter as arrays é diferente!. Ao invés de ter as variáveis a parte, temos uma "lista" de variáveis a parte, temos uma "lista" de elementos. Exemplo daelementos. Exemplo dalista de produtos com array: lista de produtos com array:

Page 95: Desenvolvimento WEB

$produto[0]="Batatas";$produto[0]="Batatas";

$produto[1]="Laranjas";$produto[1]="Laranjas";$produto[2]="Maçãs";$produto[2]="Maçãs";$produto[3]="Pêras"; $produto[3]="Pêras";

Outra forma de criar um array, é Outra forma de criar um array, é usado a função"array()" do php: usado a função"array()" do php:

$produto=array("Batatas","Laran$produto=array("Batatas","Laranjas","Maçãs","Peras"); jas","Maçãs","Peras");

Page 96: Desenvolvimento WEB

Pode parecer que não mudou muito, ou Pode parecer que não mudou muito, ou

até que é mais complicado por levar os até que é mais complicado por levar os parênteses , mas na verdade, este tipo de parênteses , mas na verdade, este tipo de estrutura de dados, é muito mais estrutura de dados, é muito mais vantajosa. Ao invés de termos varias vantajosa. Ao invés de termos varias variáveis, temos uma lista de elementos, variáveis, temos uma lista de elementos, dentro do array $produto: Assim, o dentro do array $produto: Assim, o elemento 0 ($produto[0]) do array $produto elemento 0 ($produto[0]) do array $produto tem o mesmo valor que tinha a variável tem o mesmo valor que tinha a variável $produto1; o elemento 1 ($produto[1]) tem $produto1; o elemento 1 ($produto[1]) tem o mesmo valor que tinha a variável o mesmo valor que tinha a variável $produto2; e assim sucessivamente.$produto2; e assim sucessivamente.Isto é bastante útil, porque a qualquer Isto é bastante útil, porque a qualquer momento, eu posso perguntar:momento, eu posso perguntar:"Quantos elementos tem o array "Quantos elementos tem o array $produto?" e automaticamente obtenho o $produto?" e automaticamente obtenho o numero de produtos da minha lista de numero de produtos da minha lista de compras. compras.

Page 97: Desenvolvimento WEB

Os arrays podem ser indexados por um Os arrays podem ser indexados por um

numero inteiro, ou uma palavra associada: numero inteiro, ou uma palavra associada: $numero[0]=1;$numero[0]=1;

$idade["Dragon"]=22; $idade["Dragon"]=22; Se utilizarmos arrays bi-dimensionais, Se utilizarmos arrays bi-dimensionais,

podemos construir uma tabela. Exemplo: podemos construir uma tabela. Exemplo: Construir uma lista de compras para o Ze e Construir uma lista de compras para o Ze e

para a Maria:para a Maria: $produto["Ze"][0]="Batatas";$produto["Ze"][0]="Batatas";

$produto["Ze"][1]="Laranjas";$produto["Ze"][1]="Laranjas";$produto["Ze"][2]="Maças";$produto["Ze"][2]="Maças";$produto["Ze"][3]="Pêras";$produto["Ze"][3]="Pêras";

$produto["Maria"][0]="Chocolates";$produto["Maria"][0]="Chocolates";$produto["Maria"][1]="Doces";$produto["Maria"][1]="Doces";

Page 98: Desenvolvimento WEB

Funções de Manipulação de Funções de Manipulação de ArrayArray ArrayArray array array(...); array array(...); É a função que cria um array a partir É a função que cria um array a partir

dos parâmetros fornecidos. É dos parâmetros fornecidos. É possível fornecer o índice de cada possível fornecer o índice de cada elemento. Esse índice pode ser um elemento. Esse índice pode ser um valor de qualquer tipo, e não apenas valor de qualquer tipo, e não apenas de inteiro. Se o índice não for de inteiro. Se o índice não for fornecido o PHP atribui um valor fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do inteiro sequencial, a partir do 0 ou do último índice inteiro explicitado. último índice inteiro explicitado.

Page 99: Desenvolvimento WEB

rangerange array range(int minimo, int array range(int minimo, int

maximo);maximo); A função range cria um array A função range cria um array

cujos elementos são os inteiros cujos elementos são os inteiros pertencentes ao intervalo pertencentes ao intervalo fornecido, inclusive. Se o valor fornecido, inclusive. Se o valor do primeiro parâmetro for maior do primeiro parâmetro for maior do que o do segundo, a função do que o do segundo, a função Devolve false (valor vazio).Devolve false (valor vazio).

Page 100: Desenvolvimento WEB

shuffleshuffle void shuffle(array &arr);void shuffle(array &arr); Esta função "embaralha" o Esta função "embaralha" o

array, ou seja, troca as posições array, ou seja, troca as posições dos elementos aleatoriamente e dos elementos aleatoriamente e não Devolve valor algum.não Devolve valor algum.

Page 101: Desenvolvimento WEB

sizeofsizeof int sizeof(array arr);int sizeof(array arr); Devolve um valor inteiro Devolve um valor inteiro

contendo o número de contendo o número de elementos de um array. Se for elementos de um array. Se for utilizada com uma variável cujo utilizada com uma variável cujo valor não é do tipo array, valor não é do tipo array, Devolve 1. Se a variável não Devolve 1. Se a variável não estiver setada ou for um array estiver setada ou for um array vazio, Devolve 0.vazio, Devolve 0.

Page 102: Desenvolvimento WEB

Funções de Ordenação de Funções de Ordenação de ArraysArrays São funções que servem para São funções que servem para

ordenar os elementos de um ordenar os elementos de um array de acordo com array de acordo com determinados critérios. Estes determinados critérios. Estes critérios são: manutenção ou critérios são: manutenção ou não da associação entre índices não da associação entre índices e elementos; ordenação por e elementos; ordenação por elementos ou por índices; elementos ou por índices; função de comparação entre função de comparação entre dois elementos. dois elementos.

Page 103: Desenvolvimento WEB

sortsort void sort(array &arr);void sort(array &arr); A função mais simples de A função mais simples de

ordenação de arrays. Ordena os ordenação de arrays. Ordena os elementos de um array em elementos de um array em ordem crescente, sem manter ordem crescente, sem manter os relacionamentos com os os relacionamentos com os índices.índices.

Page 104: Desenvolvimento WEB

rsortrsort void rsort(array &arr);void rsort(array &arr); Funciona de maneira inversa à Funciona de maneira inversa à

função sort. Ordena os função sort. Ordena os elementos de um array em elementos de um array em ordem decrescente, sem os ordem decrescente, sem os manter os relacionamentos com manter os relacionamentos com os índices.os índices.

Page 105: Desenvolvimento WEB

asortasort void asort(array &arr);void asort(array &arr); Tem o funcionamento bastante Tem o funcionamento bastante

semelhante à função sort. Ordena os semelhante à função sort. Ordena os elementos de um array em ordem elementos de um array em ordem crescente, porém mantém os crescente, porém mantém os relacionamentos com os índices.relacionamentos com os índices.

arsortarsort void arsort(array &arr);void arsort(array &arr); Funciona de maneira inversa à Funciona de maneira inversa à

função asort. Ordena os elementos função asort. Ordena os elementos de um array em ordem decrescente de um array em ordem decrescente e mantém os relacionamentos dos e mantém os relacionamentos dos elementos com os índices.elementos com os índices.

Page 106: Desenvolvimento WEB

ksortksort void ksort(array &arr);void ksort(array &arr); Função de ordenação baseada nos Função de ordenação baseada nos

índices. Ordena os elementos de um array índices. Ordena os elementos de um array de acordo com seus índices, em ordem de acordo com seus índices, em ordem crescente, mantendo os relacionamentos.crescente, mantendo os relacionamentos.

usortusort void usort(array &arr, function compara);void usort(array &arr, function compara); Esta é uma função que utiliza outra função Esta é uma função que utiliza outra função

como parâmetro. Ordena os elementos de como parâmetro. Ordena os elementos de um array sem manter os relacionamentos um array sem manter os relacionamentos com os índices, e utiliza para efeito de com os índices, e utiliza para efeito de comparação uma função definida pelo comparação uma função definida pelo utilizador, que deve comparar dois utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério de acordo com qualquer critério estabelecido pelo utilizador.estabelecido pelo utilizador.

Page 107: Desenvolvimento WEB

uasortuasort void uasort(array &arr, function void uasort(array &arr, function

compara);compara); Esta função também utiliza outra Esta função também utiliza outra

função como parâmetro. Ordena os função como parâmetro. Ordena os elementos de um array e mantém os elementos de um array e mantém os relacionamentos com os índices, relacionamentos com os índices, utilizando para efeito de comparação utilizando para efeito de comparação uma função definida pelo utilizador, uma função definida pelo utilizador, que deve comparar dois elementos que deve comparar dois elementos do array e devolver 0, 1 ou -1, de do array e devolver 0, 1 ou -1, de acordo com qualquer critério acordo com qualquer critério estabelecido pelo utilizador.estabelecido pelo utilizador.

Page 108: Desenvolvimento WEB

uksortuksort void uksort(array &arr, function void uksort(array &arr, function

compara);compara); Esta função ordena o array através Esta função ordena o array através

dos índices, mantendo os dos índices, mantendo os relacionamentos com os elementos., relacionamentos com os elementos., e utiliza para efeito de comparação e utiliza para efeito de comparação uma função definida pelo utilizador, uma função definida pelo utilizador, que deve comparar dois índices do que deve comparar dois índices do array e devolver 0, 1 ou -1, de array e devolver 0, 1 ou -1, de acordo com qualquer critério acordo com qualquer critério estabelecido pelo utilizador.estabelecido pelo utilizador.

Page 109: Desenvolvimento WEB

Estruturas de Controle – Estruturas de Controle – Comandos CondicionaisComandos Condicionais Com estes comandos temos a Com estes comandos temos a

oportunidade de avaliar uma oportunidade de avaliar uma expressão, onde, dependendo do expressão, onde, dependendo do seu resultado, executar um trecho seu resultado, executar um trecho de código diferente. Sempre que há de código diferente. Sempre que há necessidade de uma tomada de necessidade de uma tomada de decisões utilizamos esses decisões utilizamos esses comandos. comandos.

Os comandos condicionais são IF e Os comandos condicionais são IF e SWITCH.SWITCH.

Page 110: Desenvolvimento WEB

IF => comando que avalia a expressão e IF => comando que avalia a expressão e

dependendo do resultado executa um conjunto dependendo do resultado executa um conjunto diferente de instruções.O IF pode possuir como diferente de instruções.O IF pode possuir como complemento o ELSEIF e/ou o ELSE. Veja a complemento o ELSEIF e/ou o ELSE. Veja a sintaxe :sintaxe :

If (expressão1)If (expressão1){bloco1}{bloco1}

elseif (expressão 2)elseif (expressão 2){bloco2}{bloco2}

elseelse{bloco3}{bloco3}

A leitura se assim ?A leitura se assim ?Se expressão 1 for verdadeira, execute bloco1;Se expressão 1 for verdadeira, execute bloco1;Senão se expressão2 for verdadeira, execute bloco2;Senão se expressão2 for verdadeira, execute bloco2;Senão execute bloco3.Senão execute bloco3.

Page 111: Desenvolvimento WEB

Exemplo de código :Exemplo de código :

<?php<?php$prova1=7;$prova1=7;$prova2=5;$prova2=5;$nota=($prova1+$prova2)/2;$nota=($prova1+$prova2)/2;if ($nota<3)if ($nota<3)

$desempenho=$desempenho= “ “PESSIMO”;PESSIMO”;

elseif ($nota<5)elseif ($nota<5) $desempenho=$desempenho=

“ “RUIM”;RUIM”; elseif ($nota<7)elseif ($nota<7)

$desempenho=$desempenho= “ “MEDIO”;MEDIO”;

elseif ($nota<9)elseif ($nota<9) $desempenho=$desempenho=

“ “BOM”;BOM”;elseelse

$desempenho=“EXCELENTE”;$desempenho=“EXCELENTE”;echo “O seu desempenho foi $desempenho”;echo “O seu desempenho foi $desempenho”;

?>?>

Page 112: Desenvolvimento WEB

Outro exemplo :Outro exemplo :<?php<?php

if ($nota ==10)if ($nota ==10){{

echo “Parabéns! <br>”;echo “Parabéns! <br>”;echo “Você tirou a nota echo “Você tirou a nota

máxima!”;máxima!”;}}

?>?>Neste exemplo, somente se a nota for Neste exemplo, somente se a nota for

= 10 será executado o bloco todo, = 10 será executado o bloco todo, caso contrário não acontecerá nada.caso contrário não acontecerá nada.

Page 113: Desenvolvimento WEB

SWITCHSWITCH

É parecido com o comando IF, pois ambos É parecido com o comando IF, pois ambos avaliam o valor de uma expressão para avaliam o valor de uma expressão para escolher qual bloco de instruções deve ser escolher qual bloco de instruções deve ser executado. Algumas vezes você tem a executado. Algumas vezes você tem a mesma variável a ser testada com valores mesma variável a ser testada com valores diferentes, nesse caso o mais indicado é diferentes, nesse caso o mais indicado é comando SWITCH, que trabalha com o comando SWITCH, que trabalha com o operador de igualdade, enquanto o IF operador de igualdade, enquanto o IF trabalha com qualquer tipo de operador.trabalha com qualquer tipo de operador.

O SWITCH torna o código mais limpo que O SWITCH torna o código mais limpo que o IF, pois este se utiliza apensa de uma o IF, pois este se utiliza apensa de uma cláusula (CASE), enquanto o IF utilizada cláusula (CASE), enquanto o IF utilizada várias(if,elseif,else e as vezes endif).várias(if,elseif,else e as vezes endif).

Page 114: Desenvolvimento WEB

Exemplo de código :Exemplo de código :Switch (operador)Switch (operador){{

case valor1:case valor1:comandoscomandosbreak;break;

case valor2:case valor2:comandoscomandosbreak;break;

}}

Page 115: Desenvolvimento WEB

Perceba que após cada bloco Perceba que após cada bloco

de comandos sempre utilizamos de comandos sempre utilizamos o comando BREAK, para que o o comando BREAK, para que o SWITCH seja encerrado e a SWITCH seja encerrado e a execução continue após ele, execução continue após ele, caso contrário o PHP continua a caso contrário o PHP continua a execução do programa dentro execução do programa dentro do SWITCH, avaliando as do SWITCH, avaliando as demais expressões.demais expressões.

Page 116: Desenvolvimento WEB

Exemplo com IF :Exemplo com IF :<?php<?php......If ($numero == 0) If ($numero == 0)

{{echo “numero vale 0”;echo “numero vale 0”;

}}elseif ($numero ==1)elseif ($numero ==1){{

echo “numero vale 1”;echo “numero vale 1”;}}elseif ($numero ==2)elseif ($numero ==2){{

echo “numero vale 2”;echo “numero vale 2”;}}

......?>?>

Page 117: Desenvolvimento WEB

Exemplo com SWITCHExemplo com SWITCH<?php<?php......Switch ($numero)Switch ($numero){{

case 0:case 0:echo “numero vale 0”;echo “numero vale 0”;break;break;

case 1:case 1:echo “numero vale 1”;echo “numero vale 1”;break;break;

case 2:case 2:echo “numero vale 2”;echo “numero vale 2”;break;break;

}}......?>?>

Page 118: Desenvolvimento WEB

No comando SWITCH também No comando SWITCH também

podemos utilizar a opção podemos utilizar a opção DEFAULT, que tem a mesma DEFAULT, que tem a mesma função do ELSE no comando IF.função do ELSE no comando IF.

Lembrando que o comando Lembrando que o comando DEFAULT NÃO É DEFAULT NÃO É OBRIGATÓRIO no comando OBRIGATÓRIO no comando SWITHC.SWITHC.

Veja um exemplo :Veja um exemplo :

Page 119: Desenvolvimento WEB

<?php<?php......Switch ($opcao)Switch ($opcao){{

case ‘s’ :case ‘s’ :echo “Você escolheu SIM”;echo “Você escolheu SIM”;break;break;

case ‘n’ :case ‘n’ :echo “Você escolheu NÃO”;echo “Você escolheu NÃO”;break;break;

default :default :echo “A opção digitada é inválida”;echo “A opção digitada é inválida”;break;break;

}}?>?>

Page 120: Desenvolvimento WEB

Comando de RepetiçãoComando de Repetição

WHILE – em português significa WHILE – em português significa enquanto. Ele avalia a enquanto. Ele avalia a expressão e enquanto a expressão e enquanto a expressão for verdadeira, a expressão for verdadeira, a execução do mesmo bloco se execução do mesmo bloco se repetirá. Quando se tornar falso, repetirá. Quando se tornar falso, a execução vai para o final do a execução vai para o final do comando WHILEcomando WHILE

Page 121: Desenvolvimento WEB

Sintaxe :Sintaxe :

While (expressão)While (expressão)

{{

comandoscomandos

}}

Atenção para não colocar dentro do Atenção para não colocar dentro do comando WHILE expressões que comando WHILE expressões que jamais se tornarão falsas, senão jamais se tornarão falsas, senão teremos um loop infinito dentro do teremos um loop infinito dentro do programa.programa.

Page 122: Desenvolvimento WEB

Exemplo de código :Exemplo de código :<?php<?php

$cont=1;$cont=1;while ($cont<100)while ($cont<100){{

echo “O valor atual do echo “O valor atual do contador é $cont <b>”;contador é $cont <b>”;

$cont++;$cont++;}}

?>?> A execução desse programa resultará em A execução desse programa resultará em

99 linhas mostradas na tela.99 linhas mostradas na tela. Se ao invés de usarmos $cont<100 Se ao invés de usarmos $cont<100

usássemos a expressão $cont!=0 usássemos a expressão $cont!=0 (diferente de 0), teríamos neste caso um (diferente de 0), teríamos neste caso um loop infinito.loop infinito.

Page 123: Desenvolvimento WEB

DO WHILE = A diferenã entre o DO WHILE = A diferenã entre o DO WHILE e o WHILE é que o DO WHILE e o WHILE é que o while avalia a expressão no while avalia a expressão no inicio do laço e o DO WHILE no inicio do laço e o DO WHILE no final do laço, portanto, utilizando final do laço, portanto, utilizando o DO WHILE o laço será o DO WHILE o laço será executado pelo menos uma vez, executado pelo menos uma vez, enquanto que no WHILE o laço enquanto que no WHILE o laço pode não ser executado, caso pode não ser executado, caso na primeira avaliação a na primeira avaliação a expressão avaliada retorne expressão avaliada retorne falso.falso.

Page 124: Desenvolvimento WEB

Sintaxe :Sintaxe :

DoDo

{{

comandoscomandos

}}

While (expressão)While (expressão)

Page 125: Desenvolvimento WEB

Exemplo de Código :Exemplo de Código :<?php<?php

$numero=1;$numero=1;dodo{{

echo “O valor atual do número é echo “O valor atual do número é $numero <br>”;$numero <br>”;

$numero++;$numero++;}}while ($numero<4);while ($numero<4);

?>?> O resultado apresentado será O resultado apresentado será O valor atual do número é 1O valor atual do número é 1O valor atual do número é 2O valor atual do número é 2O valor atual do número é 3O valor atual do número é 3

Page 126: Desenvolvimento WEB

Comando FOR = utilizado quando Comando FOR = utilizado quando

queremos executar um conjunto de queremos executar um conjunto de instruções um certo número de instruções um certo número de vezes. vezes.

Por exemplo, pode ser útil quando Por exemplo, pode ser útil quando se quer imprimir todos os elementos se quer imprimir todos os elementos de um array, ou todos os registros de um array, ou todos os registros que retornaram de uma consulta de que retornaram de uma consulta de um banco de dados.um banco de dados.

Sintaxe = Sintaxe = For (inicialização;condição;operador)For (inicialização;condição;operador){{

comandoscomandos}}

Page 127: Desenvolvimento WEB

Ou ainda ?Ou ainda ?For (inicialização;condição;operador)For (inicialização;condição;operador)

comandoscomandosEndfor;Endfor;

Onde :Onde :

Inicialização = onde determinamos o valor inicial da Inicialização = onde determinamos o valor inicial da variável que vai controlar o loop, por exemplo variável que vai controlar o loop, por exemplo $cont=0;$cont=0;

Condição = a condição que deve ser atingida para Condição = a condição que deve ser atingida para que o loop continue, exemplo, para executar o loop que o loop continue, exemplo, para executar o loop 20 vezes, a condição seria $cont<20.20 vezes, a condição seria $cont<20.

Operador = usado para autalizar o valor da variável Operador = usado para autalizar o valor da variável de controle do loop, fazendo incremento ou de controle do loop, fazendo incremento ou decremento. Ao final de cada iteração do loop, o decremento. Ao final de cada iteração do loop, o valor da variável de controle é automaticamente valor da variável de controle é automaticamente atualizado.atualizado.

Page 128: Desenvolvimento WEB

Exemplo de código :Exemplo de código :

<?php<?php

for($cont=0;$cont<10;$cont++)for($cont=0;$cont<10;$cont++)

{{

echo”A variável \$cont vale echo”A variável \$cont vale $cont”;$cont”;

echo”<br>”;echo”<br>”;

}}

?>?>

Page 129: Desenvolvimento WEB

O resultado gerado pela O resultado gerado pela

execução desse programa será execução desse programa será o seguinte :o seguinte :

A variável $cont vale 0A variável $cont vale 0

A variável $cont vale 1A variável $cont vale 1

A variável $cont vale 2A variável $cont vale 2

A variável $cont vale 3A variável $cont vale 3

......

A variável $cont vale 9A variável $cont vale 9

Page 130: Desenvolvimento WEB

<html><html><body><body><?php<?php

echo”Contagem regressiva: <br>”;echo”Contagem regressiva: <br>”;for($i=15;$i>=0;$i--)for($i=15;$i>=0;$i--){{

echo $i.”,”;echo $i.”,”;}}echo”...FIM !”;echo”...FIM !”;

?>?></body></body></html></html>

Page 131: Desenvolvimento WEB

O resultado será o seguinte :O resultado será o seguinte :

15,14,13,12,11,10,9,8,7,6,5,4,3,2,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0...FIM !1,0...FIM !

Page 132: Desenvolvimento WEB

Apesar de pouco comum, podemos ter mais de Apesar de pouco comum, podemos ter mais de

uma variável na inicialização do FOR e mais de um uma variável na inicialização do FOR e mais de um operador no terceiro parâmentro. Basta utilizar a operador no terceiro parâmentro. Basta utilizar a vírgula, veja o exemplo :vírgula, veja o exemplo :

<?php<?phpfor($i=0,$k=10;$i<10;$i++,$k--)for($i=0,$k=10;$i<10;$i++,$k--){{

echo”\$i vale $i e\$k vale $k”;echo”\$i vale $i e\$k vale $k”;if ($i==$k)if ($i==$k)

{{echo”(os valores são iguais echo”(os valores são iguais

!)”;!)”;}}

echo “<br>”;echo “<br>”;}}

?>?>

Page 133: Desenvolvimento WEB

A tela deverá aparecer assim :A tela deverá aparecer assim :$i vale 0 e $k vale 10$i vale 0 e $k vale 10$i vale 1 e $k vale 9$i vale 1 e $k vale 9$i vale 2 e $k vale 8$i vale 2 e $k vale 8$i vale 3 e $k vale 7$i vale 3 e $k vale 7$i vale 4 e $k vale 6$i vale 4 e $k vale 6$i vale 5 e $k vale 5(os valores são $i vale 5 e $k vale 5(os valores são

iguais!)iguais!)$i vale 6 e $k vale 4$i vale 6 e $k vale 4$i vale 7 e $k vale 3$i vale 7 e $k vale 3$i vale 8 e $k vale 2$i vale 8 e $k vale 2$i vale 9 e $k vale 1$i vale 9 e $k vale 1

Page 134: Desenvolvimento WEB

Comando FOREACH = só funciona Comando FOREACH = só funciona

do php4 em diante. do php4 em diante. É o tipo de comando que nos É o tipo de comando que nos

permite “navegar” entre os permite “navegar” entre os elementos de um array muito mais elementos de um array muito mais facilmente.facilmente.

Sintaxe = Sintaxe =

Foreach($nome_array as $elemento)Foreach($nome_array as $elemento)

{{

comandoscomandos

}}

Page 135: Desenvolvimento WEB

Comando BREAK = termina a Comando BREAK = termina a

execução do comando atual, execução do comando atual, que pode ser um if, for, while ou que pode ser um if, for, while ou switch.switch.

Quando este comando é Quando este comando é encontrado o fluxo de execução encontrado o fluxo de execução passa para o primeiro comando passa para o primeiro comando após o término dessa estrutura.após o término dessa estrutura.

É um grande recurso que pode É um grande recurso que pode ser utilizado para forçar a saída ser utilizado para forçar a saída de um laço ou de um comando de um laço ou de um comando condicionalcondicional

Page 136: Desenvolvimento WEB

<?php<?php

......$k = 1;$k = 1;while ($k<20)while ($k<20){{

if($vetor[$k]==“Sair”)if($vetor[$k]==“Sair”){{

break;break;}}echo $vetor[$k].”<br>”;echo $vetor[$k].”<br>”;$k++;$k++;

}}?>?>

Page 137: Desenvolvimento WEB

Este programa apresentará na Este programa apresentará na tela os valores de um vetor tela os valores de um vetor qualquer. O looping será qualquer. O looping será encerrado de duas formas :encerrado de duas formas :

1)1) Se o valor de $k for maior ou Se o valor de $k for maior ou igual a 20;igual a 20;

2)2) Se algum elemento do vetor Se algum elemento do vetor possuir o valor “sair”.possuir o valor “sair”.

Page 138: Desenvolvimento WEB

O comando BREAK também O comando BREAK também

aceita um argumento numérico aceita um argumento numérico como opcional, que diz o como opcional, que diz o número de estruturas que número de estruturas que deverá ser finalizado. Portanto, deverá ser finalizado. Portanto, utilizar o break seria a mesma utilizar o break seria a mesma coisa que usar um break1.coisa que usar um break1.

Page 139: Desenvolvimento WEB

<?php<?php

$i=0;$i=0;$k=0;$k=0;while ($k<10)while ($k<10){{

$i++;$i++;$k++;$k++;while ($i<20)while ($i<20){{

if($i==10)if($i==10){{

echo”Encerrando o primeiro echo”Encerrando o primeiro while...<br>”;while...<br>”;

break;break;echo”Esta linha não vai ser impressa.”;echo”Esta linha não vai ser impressa.”;

}}elseif($i==15)elseif($i==15){{

echo”encerrando os dois whiles...”;echo”encerrando os dois whiles...”;break2;break2;

}}$i++;$i++;

}}}}

?>?>

Page 140: Desenvolvimento WEB

No exemplo, quando a variável $i No exemplo, quando a variável $i

chegar ao valor 10, a execução chegar ao valor 10, a execução passa para dentro do if, e quando o passa para dentro do if, e quando o break é executado termina break é executado termina imediatamente a execução do laço imediatamente a execução do laço atual. Logo após, o comando echo atual. Logo após, o comando echo não será executado.não será executado.

Quando $i chegar a 15, o comando Quando $i chegar a 15, o comando executado será o break2. Sendo executado será o break2. Sendo assim, as duas estruturas de assim, as duas estruturas de repetição serão finalizadas. repetição serão finalizadas.

A execução continuará após os dois A execução continuará após os dois whiles. Esse é o principal objetivo do whiles. Esse é o principal objetivo do comando break.comando break.

Page 141: Desenvolvimento WEB

Comando CONTINUE = Comando CONTINUE = utilizado dentro dos comandos utilizado dentro dos comandos de repetição para ignorar o de repetição para ignorar o restante das instruções restante das instruções pertencentes ao laço corrente e pertencentes ao laço corrente e ir para a próxima iteração ir para a próxima iteração voltando ao início do laço.voltando ao início do laço.

Page 142: Desenvolvimento WEB

<?php<?php$vetor=array(1,3,5,8,11,12,15,20);$vetor=array(1,3,5,8,11,12,15,20);for($i=0;$si<sizeof($vetor);$i++)for($i=0;$si<sizeof($vetor);$i++){{

if($vetor[$i]%2 !=0) //é imparif($vetor[$i]%2 !=0) //é impar{{

continue;continue;}}$num_par=$vetor[$i];$num_par=$vetor[$i];echo”O numero $num_par é echo”O numero $num_par é

par.<br>”;par.<br>”;}}

?>?>

Page 143: Desenvolvimento WEB

A função SIZEOF nos devolve o numero A função SIZEOF nos devolve o numero

de elementos do array, no caso, 8. O FOR de elementos do array, no caso, 8. O FOR passa por todos os elementos do array, passa por todos os elementos do array, mas somente os numeros pares mas somente os numeros pares aparecerão na tela.aparecerão na tela.

No comando if o programa testa se o resto No comando if o programa testa se o resto de alguma divisão é diferente de zero, ou de alguma divisão é diferente de zero, ou se o número é impar.se o número é impar.

Se ele encontrar um numero impar, o Se ele encontrar um numero impar, o comando continue é executado e os comando continue é executado e os comandos seguintes não serão comandos seguintes não serão executados. Sendo assim a execução executados. Sendo assim a execução retorna ao início do laço e o proximo retorna ao início do laço e o proximo elemento do vetor é acessado. elemento do vetor é acessado.

No final do laço só teremos valores pares No final do laço só teremos valores pares mostrados na tela, pois o comando mostrados na tela, pois o comando continue evitou que os ímpares fossem continue evitou que os ímpares fossem mostrados.mostrados.

Page 144: Desenvolvimento WEB

FunçõesFunções

São trechos de código que realizam São trechos de código que realizam qualquer tipo de tarefa, como por exemplo qualquer tipo de tarefa, como por exemplo validar um cpf, converter letras minúsculas validar um cpf, converter letras minúsculas para maiúsculas, somar números e etc. para maiúsculas, somar números e etc.

As funções podem ser acionadas a As funções podem ser acionadas a qualquer momento em qualquer parte do qualquer momento em qualquer parte do programa.programa.

Sintaxe : Sintaxe : Function nomeFunção(arg1,arg2...)Function nomeFunção(arg1,arg2...){{

comandoscomandos[return <expressão>][return <expressão>]

}}

Page 145: Desenvolvimento WEB

O nome da função deverá ser O nome da função deverá ser um identificador com um nome um identificador com um nome único no programa.único no programa.

Este não deve iniciar com um Este não deve iniciar com um número e não é permitido a número e não é permitido a utilização de caracteres como utilização de caracteres como ponto, vírgula, espaço e etc. O ponto, vírgula, espaço e etc. O _(sublinhado) é bastante _(sublinhado) é bastante utilizado em nome de funções.utilizado em nome de funções.

Page 146: Desenvolvimento WEB

Uma função numa chamada Uma função numa chamada

recebe diversos valores que recebe diversos valores que chamamos de argumentos, que chamamos de argumentos, que são valores recebidos no são valores recebidos no momento da chamada e que momento da chamada e que serão processados no código da serão processados no código da função.função.

A utilização desses parâmetros A utilização desses parâmetros é opcional e se a função não é opcional e se a função não necessita de parâmetros, deve necessita de parâmetros, deve ser declarada apenas function ser declarada apenas function nomeFuncao()nomeFuncao()

Page 147: Desenvolvimento WEB

Quando o php encontrar uma Quando o php encontrar uma

chamada a uma função, a execução chamada a uma função, a execução do programa é interrompida e o fluxo do programa é interrompida e o fluxo de execução passa para o início do de execução passa para o início do código da função. Quando acabar a código da função. Quando acabar a execução da função o programa vai execução da função o programa vai para a próxima linha de quando ele para a próxima linha de quando ele parou antes de executar a função.parou antes de executar a função.

Existe um comando opcional nas Existe um comando opcional nas funções que é o return. Ele existe funções que é o return. Ele existe para quando quisermos retornar um para quando quisermos retornar um valor da função para o ponto de valor da função para o ponto de onde foi chamada. Utilizamos return onde foi chamada. Utilizamos return em duas situações : em duas situações :

Page 148: Desenvolvimento WEB

Exemplo :Exemplo :

<?php<?php

function cubo($valor)function cubo($valor)

{{

$cubo=$valor*$valor*$valor;$cubo=$valor*$valor*$valor;

return $cubo;return $cubo;

}}

$valor = 7;$valor = 7;

echo “O cubo de $valor é “ . echo “O cubo de $valor é “ . cubo($valor);cubo($valor);

?>?>

Page 149: Desenvolvimento WEB

1)1) – – quando queremos atribuir o quando queremos atribuir o valor retornado a uma variável;valor retornado a uma variável;

2)2) - quando queremos testar o - quando queremos testar o valor de retorno de uma valor de retorno de uma função;função;

A função também pode A função também pode simplesmente não retornar simplesmente não retornar nenhum valor, simplesmente nenhum valor, simplesmente executar alguns cálculos e executar alguns cálculos e exibir alguma coisa na tela.exibir alguma coisa na tela.

Page 150: Desenvolvimento WEB

Criando FunçõesCriando Funções

Exemplo :Exemplo :<?php<?php

function soma_valores($valor1,$valor2,$valor3)function soma_valores($valor1,$valor2,$valor3){{

$soma=$valor1+$valor2+$valor3;$soma=$valor1+$valor2+$valor3;echo”A soma dos valores $valor1, $valor2, $valor3 echo”A soma dos valores $valor1, $valor2, $valor3 é $soma”;é $soma”;}}$n1=10;$n1=10;$n2=20;$n2=20;$n3=50;$n3=50;soma_valores($n1,$n2,$n3);soma_valores($n1,$n2,$n3);

?>?>

Page 151: Desenvolvimento WEB

Passagem de Passagem de Parâmetros :valor e referênciaParâmetros :valor e referência Se uma função recebe como Se uma função recebe como

argumento uma variável, por argumento uma variável, por exemplo $teste que possui o exemplo $teste que possui o valor 10, quando a função valor 10, quando a função acabar de se executar a variável acabar de se executar a variável terá ainda o mesmo valor, isso terá ainda o mesmo valor, isso fica inalterado indiferente do fica inalterado indiferente do que aconteça dentro da função. que aconteça dentro da função. A isso chamamos de passagem A isso chamamos de passagem de parâmetros por valor.de parâmetros por valor.

Page 152: Desenvolvimento WEB

Existem casos que queremos Existem casos que queremos que o valor da variável se altere que o valor da variável se altere na execução da função. A esse na execução da função. A esse processo chamamos de processo chamamos de passagem de valores por passagem de valores por referência.referência.

Para isso, devemos colocar o Para isso, devemos colocar o símbolo & antes do nome da símbolo & antes do nome da variável. variável.

Page 153: Desenvolvimento WEB

<?php<?php

function dobro($valor)function dobro($valor){{

$valor = 2*$valor;$valor = 2*$valor;}}function duplica (&$valor)function duplica (&$valor){{

$valor=2*$valor;$valor=2*$valor;}}$valor=5;$valor=5;dobro($valor);dobro($valor);echo $valor . “<br>”;echo $valor . “<br>”;duplica ($valor);duplica ($valor);echo $valor;echo $valor;

?>?>

Page 154: Desenvolvimento WEB

A grande diferença entre A grande diferença entre passagem por valores e passagem por valores e passagem por referência é que passagem por referência é que por referência o php altera os por referência o php altera os valores diretamente na variável valores diretamente na variável aplicada, e por valores é feita aplicada, e por valores é feita uma cópia do conteúdo da uma cópia do conteúdo da variável e as alterações são variável e as alterações são feitas nessa cópia, não feitas nessa cópia, não refletindo na variável original refletindo na variável original portanto.portanto.

Page 155: Desenvolvimento WEB

Funções de Data e HoraFunções de Data e Hora

Você pode usar estas funções para tratar Você pode usar estas funções para tratar com a data e a hora. Estas funções com a data e a hora. Estas funções permitem conseguir a data e a hora do permitem conseguir a data e a hora do servidor onde o PHP está rodando. Você servidor onde o PHP está rodando. Você pode usar estas funções para formatar a pode usar estas funções para formatar a saída de data e hora de muitas maneiras saída de data e hora de muitas maneiras diferentes. diferentes.

Obs: TObs: Tenha em mente que estas funções enha em mente que estas funções dependem das configurações locais do dependem das configurações locais do servidor. Considerar especialmente horário servidor. Considerar especialmente horário de verão e anos bissextos. de verão e anos bissextos.

Page 156: Desenvolvimento WEB

Algumas Funções :Algumas Funções : checkdate -- Valida uma data/hora;checkdate -- Valida uma data/hora; Sintaxe = bool Sintaxe = bool checkdatecheckdate ( int ( int

month, int day, int year); month, int day, int year); Retorna Retorna TRUETRUE se a data dada é se a data dada é

válida; caso contrário retorna válida; caso contrário retorna FALSEFALSE. Checa a validade da data . Checa a validade da data formada pelos argumentos. Uma formada pelos argumentos. Uma data é considerada válida se: data é considerada válida se:

o year está entre 1 e 32767 o year está entre 1 e 32767 o month está entre 1 e 12 o month está entre 1 e 12 DayDay deve está dentro do número de deve está dentro do número de

dias permitidos para o dado dias permitidos para o dado monthmonth. . yearyears são levados em consideração.s são levados em consideração.

Page 157: Desenvolvimento WEB

Date = Formata a data e a hora Date = Formata a data e a hora local ;local ;

Sintaxe : string Sintaxe : string datedate ( string ( string format [, int timestamp])format [, int timestamp])

Retorna uma string de acordo Retorna uma string de acordo com o formato da string usando com o formato da string usando o inteiro dado o inteiro dado timestamptimestamp ou a ou a hora corrente local se nenhum hora corrente local se nenhum timestamp é dado. timestamp é dado.

Page 158: Desenvolvimento WEB

Nota: Nota: A linha válida de um timestamp é A linha válida de um timestamp é

tipicamente de Fri, 13 Dec 1901 20:45:54 tipicamente de Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. GMT to Tue, 19 Jan 2038 03:14:07 GMT. (Estas são as datas que correspodem aos (Estas são as datas que correspodem aos mínimos e máximos valores para um mínimos e máximos valores para um inteiro de 32-bit definido). No windows esta inteiro de 32-bit definido). No windows esta linha é limitada de 01-01-1970 para 19-01-linha é limitada de 01-01-1970 para 19-01-2038. 2038.

Para gerar um timestamp de uma string Para gerar um timestamp de uma string para representação de data, você deve para representação de data, você deve estar capaz de usarestar capaz de usarstrtotime()strtotime(). . Adicionalmente, alguns bancos de dados Adicionalmente, alguns bancos de dados têm para converter suas datas em têm para converter suas datas em timestamps (tais como a função MySQL's timestamps (tais como a função MySQL's UNIX_TIMESTAMP ). UNIX_TIMESTAMP ).

Page 159: Desenvolvimento WEB

GetDate = Consegue informações data/hora ;GetDate = Consegue informações data/hora ; Sintaxe = array Sintaxe = array getdategetdate ( [int timestamp]) ; ( [int timestamp]) ; Retorna uma matriz contendo a data do Retorna uma matriz contendo a data do timestamptimestamp, ,

ou a hora corrente local se se nenhum timestamp é ou a hora corrente local se se nenhum timestamp é dado, como a seguintes elementos da matriz: dado, como a seguintes elementos da matriz:

"seconds" - segundos "seconds" - segundos "minutes" - minutos "minutes" - minutos "hours" - horas "hours" - horas "mday" - dia do ano "mday" - dia do ano "wday" - dia da semana, numérico : de 0 como "wday" - dia da semana, numérico : de 0 como

Domingo até 6 como Sábado Domingo até 6 como Sábado "mon" - mês, numérico "mon" - mês, numérico "year" - ano, numérico "year" - ano, numérico "yday" - dia do ano, numérico; i.e. "299" "yday" - dia do ano, numérico; i.e. "299" "weekday" - dia da semana, texo, completo; i.e. "weekday" - dia da semana, texo, completo; i.e.

"Friday" "Friday" "month" - mês, texto, completo; i.e. "January""month" - mês, texto, completo; i.e. "January"

Page 160: Desenvolvimento WEB

Exemplo :Exemplo :

$today = getdate(); $month = $today = getdate(); $month = $today['month']; $mday = $today['month']; $mday = $today['mday']; $year = $today['mday']; $year = $today['year']; echo "$month $today['year']; echo "$month $mday, $year"; $mday, $year";

Page 161: Desenvolvimento WEB

Mktime =Obtém um modelo UNIX para uma data ;Mktime =Obtém um modelo UNIX para uma data ; Atenção:Atenção: Note a estranha ordem dos argumentos, que Note a estranha ordem dos argumentos, que

diferem da ordem dos argumentos em um chamada diferem da ordem dos argumentos em um chamada regular da UNIX mktime() e que não combina bem com si regular da UNIX mktime() e que não combina bem com si mesma para a omissão dos parâmetros da direita para a mesma para a omissão dos parâmetros da direita para a esquerda (veja abaixo). é um erro comum misturar estes esquerda (veja abaixo). é um erro comum misturar estes valores acima em um script. valores acima em um script.

Retorna o timestamp Unix correspondente para os Retorna o timestamp Unix correspondente para os argumentos dados. Este timestamp é um longo inteiro argumentos dados. Este timestamp é um longo inteiro contendo o número de segundos entre a Era Unix contendo o número de segundos entre a Era Unix (January 1 1970) e o tempo especificado. (January 1 1970) e o tempo especificado.

Argumentos podem ser omitidos da direita para Argumentos podem ser omitidos da direita para esquerda; quaisquer argumentos assim omitidos serão esquerda; quaisquer argumentos assim omitidos serão definidos para o valor atual de acordo com a data e a definidos para o valor atual de acordo com a data e a hora local. hora local.

is_dstis_dst pode ser definido para 1 se está durante o horário pode ser definido para 1 se está durante o horário de verão, 0 se não estiver, ou -1 (o padrão) se não se de verão, 0 se não estiver, ou -1 (o padrão) se não se sabe se está em horário de verão ou não. Se é sabe se está em horário de verão ou não. Se é desconhecido, o PHP tenta calcular. Isto pode causar desconhecido, o PHP tenta calcular. Isto pode causar resultados inesperados (mas não incorretos). resultados inesperados (mas não incorretos).

Nota: Nota: is_dstis_dst adicionado no 3.0.10. adicionado no 3.0.10.

Page 162: Desenvolvimento WEB

mktime()mktime() é útil para fazer data é útil para fazer data aritimética e validação, ela aritimética e validação, ela calculará automaticamente o calculará automaticamente o valor correto para um receptor valor correto para um receptor fora de linha. Por exemplo, cada fora de linha. Por exemplo, cada uma das seguintes linhas uma das seguintes linhas produz a string "Jan-01-1998". produz a string "Jan-01-1998".

Page 163: Desenvolvimento WEB

Strtotime = Analisa qualquer Strtotime = Analisa qualquer

descrição em texto em inglês de descrição em texto em inglês de data hora em timestamp UNIX ;data hora em timestamp UNIX ;

Sintaxe = int Sintaxe = int strtotimestrtotime ( string time [, ( string time [, int now]) int now])

Exemplo :Exemplo : echo strtotime ("now"), "\n"; echo echo strtotime ("now"), "\n"; echo

strtotime ("10 September 2000"), "\strtotime ("10 September 2000"), "\n"; echo strtotime ("+1 day"), "\n"; n"; echo strtotime ("+1 day"), "\n"; echo strtotime ("+1 week"), "\n"; echo strtotime ("+1 week"), "\n"; echo strtotime ("+1 week 2 days 4 echo strtotime ("+1 week 2 days 4 hours 2 seconds"), "\n"; echo hours 2 seconds"), "\n"; echo strtotime ("next Thursday"), "\n"; strtotime ("next Thursday"), "\n"; echo strtotime ("last Monday"), "\n"; echo strtotime ("last Monday"), "\n";

Page 164: Desenvolvimento WEB

Funções de Manipulação de Funções de Manipulação de StringsStrings CHR = Retorna um caracter específico. Retorna CHR = Retorna um caracter específico. Retorna

uma string de um único caractere contendo o uma string de um único caractere contendo o caracter especificado pelo caracter especificado pelo asciiascii. .

Sintaxe = string Sintaxe = string chrchr ( valor ascII ) ( valor ascII ) ExemploExemplo<?php<?php

//retornando o alfabeto em letras minusculas//retornando o alfabeto em letras minusculasfor($i=97;$i<123;$i++)for($i=97;$i<123;$i++){{

echo chr($i).”($i)”.($i<122 ? “,”:””);echo chr($i).”($i)”.($i<122 ? “,”:””);}}

?> ?>

Page 165: Desenvolvimento WEB

COUN T_CHARS = retorna algumas informações COUN T_CHARS = retorna algumas informações

sobre os caracteres existentes na string informada.sobre os caracteres existentes na string informada. Sintaxe = array/string count_chars(valor,modo)Sintaxe = array/string count_chars(valor,modo) Dependendo do modo informado, será retornado Dependendo do modo informado, será retornado

um array(modos 0,1 e2) ou uma string(modos 3 e um array(modos 0,1 e2) ou uma string(modos 3 e 4). Os possíveis valores para o modo e o resultado 4). Os possíveis valores para o modo e o resultado obtido da função são os seguintes :obtido da função são os seguintes :

1 – modo padrão, retorna um array numerado de 0 1 – modo padrão, retorna um array numerado de 0 a 255 com o número de repetições para cada byte a 255 com o número de repetições para cada byte correspondente na string informada.correspondente na string informada.

2 – O mesmo que zero, mas retorna somente se o 2 – O mesmo que zero, mas retorna somente se o número de repetições for maior que zero.número de repetições for maior que zero.

3 – O mesmo que zero, mas retorna somente se o 3 – O mesmo que zero, mas retorna somente se o numero de repetições for igual zero.numero de repetições for igual zero.

4 – Uma string contendo uma lista de todos os 4 – Uma string contendo uma lista de todos os caracteres presentes na string.caracteres presentes na string.

5 – Uma string contendo uma lista de todos os 5 – Uma string contendo uma lista de todos os caracteres ausentes na string.caracteres ausentes na string.

Page 166: Desenvolvimento WEB

Exemplo :Exemplo :<?php<?php

$valor = “PHP 5 – Guia do $valor = “PHP 5 – Guia do Programador, Editora Érica – 2004”;Programador, Editora Érica – 2004”;

$s1=count_chars($valor,1);$s1=count_chars($valor,1);$s2=count_chars($valor,3);$s2=count_chars($valor,3);echo”<pre>”;echo”<pre>”;print_r($s1);print_r($s1);echo $s2;echo $s2;echo “</pre>”;echo “</pre>”;

?>?>OBS : Print_r faz com que o php imprima na OBS : Print_r faz com que o php imprima na

tela um array num formato intelegível tela um array num formato intelegível

Page 167: Desenvolvimento WEB

EXPLODE = retorna um array EXPLODE = retorna um array

contendo cada elemento de uma contendo cada elemento de uma parte da string informada. Cada parte da string informada. Cada parte será determinada conforme o parte será determinada conforme o separador informado.separador informado.

Sintaxe = array Sintaxe = array explode(separator,string,limite)explode(separator,string,limite)

O último parâmetro, limite, é O último parâmetro, limite, é opcional e se informado, indica à opcional e se informado, indica à função o número máximo de função o número máximo de elementos do array(neste caso o elementos do array(neste caso o último elemento do array conterá o último elemento do array conterá o restante da string).restante da string).

Page 168: Desenvolvimento WEB

<?php<?php$string=“Este é um exemplo $string=“Este é um exemplo

da função explode no PHP”;da função explode no PHP”;$v1=explode(“ “,$string);$v1=explode(“ “,$string);$v2=explode(“ “,$string,3);$v2=explode(“ “,$string,3);echo”<pre>”;echo”<pre>”;print_r($v1);print_r($v1);print_r($v2);print_r($v2);echo “</pre>”;echo “</pre>”;

?>?>

Page 169: Desenvolvimento WEB

IMPLODE = faz o inverso do IMPLODE = faz o inverso do EXPLODE, retorna uma string EXPLODE, retorna uma string representando todos os representando todos os elementos do array informado e elementos do array informado e separando os elementos com o separando os elementos com o separador informado.separador informado.

Sintaxe = string Sintaxe = string implode(separador,array)implode(separador,array)

Page 170: Desenvolvimento WEB

Exemplo :Exemplo :

<?php<?php

$arr = array(“PHP5”,”Guia $arr = array(“PHP5”,”Guia do Programador”);do Programador”);

echo implode(“ “,$arr);echo implode(“ “,$arr);

?>?>

Page 171: Desenvolvimento WEB

Str_replace/str_ireplace = executam a Str_replace/str_ireplace = executam a

busca e a substituição de um texto por busca e a substituição de um texto por outro dentro de uma string informada. A outro dentro de uma string informada. A diferença é que str_replace é case diferença é que str_replace é case sensitive e a outra não. A sintaxe para sensitive e a outra não. A sintaxe para ambas é a mesma.ambas é a mesma.

Sintaxe = string Sintaxe = string str_replace(texto_src,texto_rep,texto_princ,str_replace(texto_src,texto_rep,texto_princ,cont)cont)

Onde texto_src é o texto que deve ser Onde texto_src é o texto que deve ser procurado em texto_princ,text_rep é que procurado em texto_princ,text_rep é que irá substituir todas as ocorrências de irá substituir todas as ocorrências de text_src em texto_princ, e cont é opcional text_src em texto_princ, e cont é opcional e se for informada receberá o número de e se for informada receberá o número de trocas efetuadas.trocas efetuadas.

Page 172: Desenvolvimento WEB

Exemplo :Exemplo :<?php<?php

$texto=“PHP5 – Guia Programador”;$texto=“PHP5 – Guia Programador”;$vog=array(“a”,”e”,”i”,”o”,”u”);$vog=array(“a”,”e”,”i”,”o”,”u”);$s1=str_replace($vog,”-”,$texto,$s1=str_replace($vog,”-”,$texto,

$cont);$cont);$s2=str_ireplace(“PHP”,”*”,”$texto”,$s2=str_ireplace(“PHP”,”*”,”$texto”,

$cont2);$cont2);echo “str_replace: $s1. Número de echo “str_replace: $s1. Número de

substituições: $cont <br>”;substituições: $cont <br>”;echo “str_ireplace: “ . $s2 . “ echo “str_ireplace: “ . $s2 . “

Número de substituições: $cont2<br>”;Número de substituições: $cont2<br>”;?>?>

Page 173: Desenvolvimento WEB

STRLEN = fornece o tamanho STRLEN = fornece o tamanho

da string informada.da string informada. Sintaxe = integer strlen(texto)Sintaxe = integer strlen(texto) Exemplo :Exemplo :

<?php<?php

$texto=“Paralelograma”;$texto=“Paralelograma”;

echo strlen($texto);echo strlen($texto);

?>?>

Page 174: Desenvolvimento WEB

STRTOLOWER = a função STRTOLOWER = a função strtolower transforma todos os strtolower transforma todos os caracteres da string informada caracteres da string informada em minúsculas.em minúsculas.

Sintaxe = string strtolower(texto)Sintaxe = string strtolower(texto) Exemplo :Exemplo :

<?php<?php

$texto = “Teste de $texto = “Teste de LETRAS”;LETRAS”;

echo strtolower($texto);echo strtolower($texto);

?>?>

Page 175: Desenvolvimento WEB

STRTOUPPER = ao inverso do STRTOUPPER = ao inverso do strtolower, esta função retorna strtolower, esta função retorna uma string com todos os uma string com todos os caracteres em maiúsculos.caracteres em maiúsculos.

Sintaxe = string Sintaxe = string strtoupper(texto)strtoupper(texto)

Exemplo : Exemplo : <?php<?php

$texto=“PHP TESTE”;$texto=“PHP TESTE”;echo strtoupper($texto);echo strtoupper($texto);

?>?>

Page 176: Desenvolvimento WEB

SUBSTR = retorna um pedaço da SUBSTR = retorna um pedaço da

string informada.string informada. Sintaxe = string Sintaxe = string

substr(texto,posic_inicial,tamanho)substr(texto,posic_inicial,tamanho) OBS : a posição inicial de uma string OBS : a posição inicial de uma string

no PHP é ZERO e não 1, tome no PHP é ZERO e não 1, tome cuidado.cuidado.

Exemplo :Exemplo :<?php<?php

$texto=“Texto inicial do PHP”;$texto=“Texto inicial do PHP”;echo substr($texto,0,14);echo substr($texto,0,14);

?>?>

Page 177: Desenvolvimento WEB

Exemplo de funções para obter o IP Exemplo de funções para obter o IP

e o BROWSER do visitante, veja o e o BROWSER do visitante, veja o exemplo :exemplo :

<?php<?php$ip = $ip = ($_SERVER['REMOTE_ADDR']);($_SERVER['REMOTE_ADDR']);print (" Seu IP corrente é: $ip");print (" Seu IP corrente é: $ip");?></br>?></br><? $browser = <? $browser = ($_SERVER['HTTP_USER_AGENT']($_SERVER['HTTP_USER_AGENT']););print ("Você está usando $browser");print ("Você está usando $browser");?>?>

Page 178: Desenvolvimento WEB

Outras funções de IPOutras funções de IP

Veja o exemplo ?Veja o exemplo ?$ip = $_SERVER['REMOTE_ADDR']; $ip = $_SERVER['REMOTE_ADDR'];

echo $ip; // 127.0.0.1 echo $ip; // 127.0.0.1 $host = $host =

gethostbyaddr($_SERVER['REMOTgethostbyaddr($_SERVER['REMOTE_ADDR']);E_ADDR']);

echo $host; // localhost echo $host; // localhost $get_ip = $get_ip =

gethostbyname('www.uol.com.br'); gethostbyname('www.uol.com.br'); echo $get_ip; // 200.221.2.45 echo $get_ip; // 200.221.2.45

Page 179: Desenvolvimento WEB

A primeira função, A primeira função, $_SERVER[’REMOTE_ADDR’]$_SERVER[’REMOTE_ADDR’], , é utilizada para sabermos o é utilizada para sabermos o endereço de IP de um usuário, endereço de IP de um usuário, por exemplo. A segunda, por exemplo. A segunda, gethostbyaddr(), informa o gethostbyaddr(), informa o nome do host name de Internet nome do host name de Internet referente ao endereço de IP. A referente ao endereço de IP. A função gethostbyname() retorna função gethostbyname() retorna o endereço de IP o endereço de IP correspondente a um host name correspondente a um host name de internet de internet

Page 180: Desenvolvimento WEB

Estruturas de Controle Estruturas de Controle EspeciaisEspeciais REQUIRE E INCLUDE - Têm por REQUIRE E INCLUDE - Têm por

objetivo inserir pedaços de código objetivo inserir pedaços de código PHP no script atual. A diferença PHP no script atual. A diferença básica entre eles está na maneira básica entre eles está na maneira como tratam os erros.,como tratam os erros.,

O INCLUDE produz apenas uma O INCLUDE produz apenas uma mensagem de aviso (warning) e o mensagem de aviso (warning) e o REQUIRE produz um erro fatal (fatal REQUIRE produz um erro fatal (fatal error), encerrando a execução do error), encerrando a execução do programa.programa.

Page 181: Desenvolvimento WEB

Sintaxe = INCLUDE (nome arquivo) Sintaxe = INCLUDE (nome arquivo)

e e REQUIRE(nome arquivo)REQUIRE(nome arquivo) Exemplo :Exemplo : <?php<?php //variaveis.inc//variaveis.inc

$meses=array(“jan”,”fev”,”mar”,”abr”,$meses=array(“jan”,”fev”,”mar”,”abr”,”mai”,”jun”,”jul”,”ago”,”set”,”out”,”nov””mai”,”jun”,”jul”,”ago”,”set”,”out”,”nov”,”dez”);,”dez”);

$dias=(“seg”,”ter”,”qua”,”qui”,”sex”,”s$dias=(“seg”,”ter”,”qua”,”qui”,”sex”,”sab”,”dom”);ab”,”dom”);

?>?>

Page 182: Desenvolvimento WEB

<?php<?php

//teste.php//teste.php

print_r($dias);print_r($dias);

include(“variaveis.inc”);include(“variaveis.inc”);

print_r($dias);print_r($dias);

print_r($meses);print_r($meses);

?>?>

Page 183: Desenvolvimento WEB

INCLUDE_ONDE e INCLUDE_ONDE e REQUIRE_ONCEREQUIRE_ONCE Têm as mesmas funcionalidades do Têm as mesmas funcionalidades do

REQUIRE e do INCLUDE, só que REQUIRE e do INCLUDE, só que com uma diferença fundamental. O com uma diferença fundamental. O PHP verifica se o arquivo que PHP verifica se o arquivo que estamos tentando inserir já foi estamos tentando inserir já foi inserido anteriormente.Se já foi inserido anteriormente.Se já foi inserido, ele não será entrará no inserido, ele não será entrará no código novamente. Muito útil para código novamente. Muito útil para códigos muito dinâmicos com muitas códigos muito dinâmicos com muitas includes e requires, nem sempre includes e requires, nem sempre sabemos quais aquivos já foram sabemos quais aquivos já foram inseridos.inseridos.

Page 184: Desenvolvimento WEB

DICA = Tanto o include_once e DICA = Tanto o include_once e o require_once são case o require_once são case sensitive. Portanto, não importa sensitive. Portanto, não importa o sistema operaciona, o php o sistema operaciona, o php fará distinção entre maiúsculas fará distinção entre maiúsculas e minúsculas nos nomes dos e minúsculas nos nomes dos arquivos, cuidado.arquivos, cuidado.

Page 185: Desenvolvimento WEB

Comando RETURNComando RETURN

Return pode ser utilizado dentro Return pode ser utilizado dentro das funções em PHP ou dentro das funções em PHP ou dentro de um script ou ainda dentro de de um script ou ainda dentro de um arquivo incluído. Seu efeito um arquivo incluído. Seu efeito é encerrar a função atual, o é encerrar a função atual, o programa ou o processamento programa ou o processamento do arquivo inserido.do arquivo inserido.

Page 186: Desenvolvimento WEB

<?php<?php//arq1.inc//arq1.incFunction dobro($valor)Function dobro($valor){{

return $valor * 2;return $valor * 2;}}If ($vlr==0)If ($vlr==0){{

return -1;return -1;}}ElseElse{{

return dobro($vlr);return dobro($vlr);}}?>?>

Page 187: Desenvolvimento WEB

<?php<?php

$vlr=10;$vlr=10;

$b = include(“arq1.inc”);$b = include(“arq1.inc”);

echo $b;echo $b;

?>?>

Esse script tem como resultado Esse script tem como resultado 20.20.

Page 188: Desenvolvimento WEB

FormuláriosFormulários

Exemplo de um código básico para Exemplo de um código básico para um formulário :um formulário :

<form><form><p>Digite seu E-Mail : <input <p>Digite seu E-Mail : <input type=“text”name=“email” type=“text”name=“email” size=“20”></p>size=“20”></p><p><input <p><input type=“submit”value=“Enviar !”name=type=“submit”value=“Enviar !”name=“enviar”></p>“enviar”></p>

</form></form>

Page 189: Desenvolvimento WEB

Para se tornar esse formulário Para se tornar esse formulário

devemos informar para onde irá o devemos informar para onde irá o formulário. Aí que entra o PHP. formulário. Aí que entra o PHP. Fazemos isso com a opção action, Fazemos isso com a opção action, utilizada na tag form do HTML.utilizada na tag form do HTML.

<form action=“recebeDados.php”><form action=“recebeDados.php”><p>Digite seu E-Mail : <input <p>Digite seu E-Mail : <input type=“text”name=“email” type=“text”name=“email” size=“20”></p>size=“20”></p><p><input <p><input type=“submit”value=“Enviar !”name=type=“submit”value=“Enviar !”name=“enviar”></p>“enviar”></p>

</form></form>

Page 190: Desenvolvimento WEB

Agora sim, toda vez que este Agora sim, toda vez que este

programa HTML rodar, suas programa HTML rodar, suas informações serão processadas informações serão processadas pelo programa PHP declarado.pelo programa PHP declarado.

Falta agora criar o programa em Falta agora criar o programa em PHP que fará isso.PHP que fará isso.

Observe também que temos a Observe também que temos a tag input no formulário, que tag input no formulário, que pode assumir os seguintes pode assumir os seguintes valores :valores :

Page 191: Desenvolvimento WEB

Name= nome do campoName= nome do campo Value=valor padrão para o Value=valor padrão para o

campocampo Size= tamanho do campo na Size= tamanho do campo na

telatela Maxlenght=numero maximo de Maxlenght=numero maximo de

caracteres que podem ser caracteres que podem ser digitados no campodigitados no campo

Type=informa qual o tipo do Type=informa qual o tipo do campo de entrada de dadoscampo de entrada de dados

Page 192: Desenvolvimento WEB

Também temos as possíveis opções para a cláusula type, Também temos as possíveis opções para a cláusula type,

dentro do input :dentro do input : Text=caixa de texto de uma linha, dados numéricos ou Text=caixa de texto de uma linha, dados numéricos ou

alfa.alfa. Password=para digitação de senhas, são mostrados *.Password=para digitação de senhas, são mostrados *. Hidden=campo escondido, não aparece na tela. Hidden=campo escondido, não aparece na tela.

Utilizados para passar informações aos programas que Utilizados para passar informações aos programas que recebem os dados.recebem os dados.

Select=lista de seleçãoSelect=lista de seleção Checkbox=caixa de seleção que pode ser marcada ou Checkbox=caixa de seleção que pode ser marcada ou

desmarcada.desmarcada. Radio=botões de seleção, o usuário escolhe uma entre Radio=botões de seleção, o usuário escolhe uma entre

várias.várias. Textarea=caixa de texto com várias linhasTextarea=caixa de texto com várias linhas File=permite o envio de arquivosFile=permite o envio de arquivos Submit=botão que aciona o envio das informações do Submit=botão que aciona o envio das informações do

formulárioformulário Image=mesma função do submit, mas utiliza uma Image=mesma função do submit, mas utiliza uma

imagem ao invés do botão tradicionalimagem ao invés do botão tradicional Reset=limpa todos os campos do formulário e os retorna Reset=limpa todos os campos do formulário e os retorna

ao valor padrão.ao valor padrão.

Page 193: Desenvolvimento WEB

Enviando as InformaçõesEnviando as Informações

Existem dois métodos para o Existem dois métodos para o envio de informações. GET e envio de informações. GET e POST.POST.

Ambos são colocados na tag Ambos são colocados na tag form com o comando method :form com o comando method :

<form action=“processa.php” <form action=“processa.php” method=“POST”method=“POST”

Page 194: Desenvolvimento WEB

GET é o método padrão, portanto se nenhum GET é o método padrão, portanto se nenhum

parâmetro for informado, o HTML assume como parâmetro for informado, o HTML assume como GET.GET.

Considere o formulário ?Considere o formulário ?<form action=“recebeDados.PHP><form action=“recebeDados.PHP>

<p>Digite seu Nome : <input type=“text” <p>Digite seu Nome : <input type=“text” name=“nome” size=“30”></p>name=“nome” size=“30”></p><p>Digite sua Idade : <input type=“text” <p>Digite sua Idade : <input type=“text” name=“idade” size=“3”></p>name=“idade” size=“3”></p><p><input type”submit” value=“Enviar !” <p><input type”submit” value=“Enviar !” name=“enviar”></p>name=“enviar”></p>

</form></form>

Note que não há o method, portanto será utilizado o Note que não há o method, portanto será utilizado o GET.GET.

Ao preenchermos os camps e quando clicarmos no Ao preenchermos os camps e quando clicarmos no botão, o endereço ativado será o seguinte :botão, o endereço ativado será o seguinte :

http://www.seusite.com.br/recebeDados.php?http://www.seusite.com.br/recebeDados.php?nome=Joaquim&idade=20nome=Joaquim&idade=20

Page 195: Desenvolvimento WEB

Os campos serão passados como parâmetros após Os campos serão passados como parâmetros após

o endereço de destino. O caractere ? Representa o o endereço de destino. O caractere ? Representa o início de uma cadeia de variáveis e o & o início de início de uma cadeia de variáveis e o & o início de uma nova variável.As variáveis e seus valores são uma nova variável.As variáveis e seus valores são separadas por =.separadas por =.

Em GET existe o inconveniente de se limitar o Em GET existe o inconveniente de se limitar o numero de caracteres a ser enviado, mais ou numero de caracteres a ser enviado, mais ou menos 2000. Outro problema é que o usuário menos 2000. Outro problema é que o usuário enxergará os dados a serem enviados na barra de enxergará os dados a serem enviados na barra de endereço do browser. Para isso existe o método endereço do browser. Para isso existe o método POST.POST.

A vantagem é que o método GET, por passar os A vantagem é que o método GET, por passar os valores de parâmetros na barra de endereço, pode valores de parâmetros na barra de endereço, pode ser utilizado para enviar esses dados de uma ser utilizado para enviar esses dados de uma página para outra. Já o POST não faz isso, só página para outra. Já o POST não faz isso, só processa o formulário mesmo.processa o formulário mesmo.

Page 196: Desenvolvimento WEB

Método POSTMétodo POST

<form action=“recebeDados.PHP <form action=“recebeDados.PHP method=“POST”>method=“POST”><p>Digite seu Nome : <input <p>Digite seu Nome : <input type=“text” name=“nome” type=“text” name=“nome” size=“30”></p>size=“30”></p><p>Digite sua Idade : <input <p>Digite sua Idade : <input type=“text” name=“idade” type=“text” name=“idade” size=“3”></p>size=“3”></p><p><input type”submit” <p><input type”submit” value=“Enviar !” name=“enviar”></p>value=“Enviar !” name=“enviar”></p>

</form></form>

Page 197: Desenvolvimento WEB

Neste caso, utilizando o POST, os dados Neste caso, utilizando o POST, os dados

serão enviados ao servidor por meio do serão enviados ao servidor por meio do corpo da mensagem, Portanto, ao clicar corpo da mensagem, Portanto, ao clicar em enviar, o usuário não verá aquele em enviar, o usuário não verá aquele endereço enorme na barra de endereço, endereço enorme na barra de endereço, só verá o endereço do programa.php.só verá o endereço do programa.php.

Não há limitação de tamanho como no Não há limitação de tamanho como no GET.GET.

Portanto, é recomendado se utilizar o Portanto, é recomendado se utilizar o POST para formulários com muitas POST para formulários com muitas informações.informações.

Além disso, no POST podemos enviar Além disso, no POST podemos enviar outros tipos de informações não aceitas no outros tipos de informações não aceitas no GET, como imagens ou outros arquivos.GET, como imagens ou outros arquivos.

Page 198: Desenvolvimento WEB

Tratando as Informações Tratando as Informações recebidas no PHPrecebidas no PHP

O programa php que tratará suas O programa php que tratará suas informações, agirá da seguinte informações, agirá da seguinte forma :forma :

<?php<?php

$username=$_POST[“username”];$username=$_POST[“username”];

$nome=$_POST[“nome”];$nome=$_POST[“nome”];

E assim por diante.E assim por diante.

Page 199: Desenvolvimento WEB

Validação dos CamposValidação dos Campos

Podemos testar os valores do Podemos testar os valores do formulário. Por exemplo, posso formulário. Por exemplo, posso testar se algum campo que deve ser testar se algum campo que deve ser numérico veio com letras por numérico veio com letras por exemplo, ou se um campo exemplo, ou se um campo obrigatório está em branco. Posso obrigatório está em branco. Posso ainda exigir um número mínimo de ainda exigir um número mínimo de caracteres por exemplo, para um caracteres por exemplo, para um campo senha que seja obrigatório no campo senha que seja obrigatório no mínimo 5 dígitos.mínimo 5 dígitos.

Page 200: Desenvolvimento WEB

Para isso testamos seus valores da seguinte forma, Para isso testamos seus valores da seguinte forma,

após termos atribuído seus valores nas respectivas após termos atribuído seus valores nas respectivas variáveis :variáveis :

Strlen = retorna o numero de caracteres de uma Strlen = retorna o numero de caracteres de uma string. Exemplo :string. Exemplo :

if(strlen($username)<5)if(strlen($username)<5) {{

echo “O numero minimo de caracteres é 5 !”echo “O numero minimo de caracteres é 5 !” Empty= verifica se a string está vazia ou nula. Empty= verifica se a string está vazia ou nula.

Exemplo ?Exemplo ? if(empty($nome))if(empty($nome)) {{ echo “Favor preencher o campo nome !”;echo “Favor preencher o campo nome !”; Strstr = verifica a primeira existencia em uma string. Strstr = verifica a primeira existencia em uma string.

Exemplo :Exemplo : if strstr($email,”@”)if strstr($email,”@”)

Page 201: Desenvolvimento WEB

Upload de ArquivosUpload de Arquivos

É relativamente fácil se incluir um É relativamente fácil se incluir um upload de arquivos em nossa upload de arquivos em nossa página. Basta antes de mais nada página. Basta antes de mais nada criar nosso formulário com o campo criar nosso formulário com o campo (INPUT TYPE=“FILE”>, não (INPUT TYPE=“FILE”>, não esquecendo de acrescentar no esquecendo de acrescentar no marcador FORM o elemento marcador FORM o elemento ENCTYPE=“multipart/form-data”, ENCTYPE=“multipart/form-data”, sem isso tudo o upload não sem isso tudo o upload não funcionará.funcionará.

Page 202: Desenvolvimento WEB

Programação O.O. em PHPProgramação O.O. em PHP

No PHP já temos recursos No PHP já temos recursos como gerenciamento de como gerenciamento de exceções (try,catch), herança, exceções (try,catch), herança, definição de atributos e métodos definição de atributos e métodos públicos e privados, públicos e privados, construtores, destruidores e construtores, destruidores e reflexão de classes, reflexão de classes, possibilitando uma melhor possibilitando uma melhor estruturação nos sistemas.estruturação nos sistemas.

Page 203: Desenvolvimento WEB

Classes – Definição e CriaçãoClasses – Definição e Criação

Classe é uma abstração de um objeto, ou Classe é uma abstração de um objeto, ou seja, é um modelo a partir do qual os seja, é um modelo a partir do qual os objetos podem ser criados.Enquanto um objetos podem ser criados.Enquanto um objeto representa algo real em um objeto representa algo real em um instante, a classe é uma generalização instante, a classe é uma generalização deste. Tipo, um objeto funcionário, tem deste. Tipo, um objeto funcionário, tem nome João, Idade 43. Já a classe é nome João, Idade 43. Já a classe é genérica para todos. Por exemplo, temos genérica para todos. Por exemplo, temos as características deste objeto, como as características deste objeto, como nome, idade, endereço e etc. Percebe-se nome, idade, endereço e etc. Percebe-se que estamos tratando esses dados para que estamos tratando esses dados para todos !todos !

Page 204: Desenvolvimento WEB

Para se criar uma classe no Para se criar uma classe no

PHP devemos seguir a seguinte PHP devemos seguir a seguinte forma :forma :

Class nome_classeClass nome_classe

{{

atributosatributos

métodosmétodos

}}

Page 205: Desenvolvimento WEB

Este é um formato mínimo para criarmos Este é um formato mínimo para criarmos

uma classe em PHP :uma classe em PHP :<?php<?php class carroclass carro {{

private $_marca;private $_marca; private $_modelo;private $_modelo;

private $_cor;private $_cor;private $_ano;private $_ano;

public function setMarca($_m)public function setMarca($_m){{

$this ->_marca=$_m$this ->_marca=$_m}}

Page 206: Desenvolvimento WEB

public function setModelo($_mo)public function setModelo($_mo){{

$this->_modelo=$_mo;$this->_modelo=$_mo;}}public function setCor($_c)public function setCor($_c){{

$this->_cor=$_c;$this->_cor=$_c;}}public function setAno($_a)public function setAno($_a){{

$this->_ano=$_a;$this->_ano=$_a;}}public function getMarca()public function getMarca(){{

return $this->_marca;return $this->_marca;}}public function getModelo()public function getModelo(){{

return $this->_modelo;return $this->_modelo;}}

Page 207: Desenvolvimento WEB

public function getCor()public function getCor(){{

return $this->_cor;return $this->_cor;}}public function getAno()public function getAno(){{

return $this->_ano;return $this->_ano;}}public function getCarro()public function getCarro(){{

return “Marca: “.$this-return “Marca: “.$this->getMarca().”<br/>”.>getMarca().”<br/>”.““Modelo: “.$this->getModelo().”<br/>”.Modelo: “.$this->getModelo().”<br/>”.““Cor: “.$this->getCor().”<br/>”.Cor: “.$this->getCor().”<br/>”.““Ano: “.$this->getAno();Ano: “.$this->getAno();}}

}}?>?>

Page 208: Desenvolvimento WEB

Visibilidade de Atributos e Visibilidade de Atributos e MétodosMétodos Os métodos e atributos de uma Os métodos e atributos de uma

classe em PHP podem ser definidos classe em PHP podem ser definidos como private, public e protected.como private, public e protected.

Public = um atributo ou método Public = um atributo ou método definido como publico torna-o definido como publico torna-o acessível em qualquer lugar da acessível em qualquer lugar da classe, subclasse bem como em classe, subclasse bem como em qualquer parte dos scripts que qualquer parte dos scripts que contêm a classe.contêm a classe.

Exemplo :Exemplo :

Page 209: Desenvolvimento WEB

<?php<?php

class carroclass carro{{

public $_modelo;public $_modelo;public function public function

setModelo($_m)setModelo($_m){{

$this->_modelo=$_m;$this->_modelo=$_m;}}

}}$_c=new carro();$_c=new carro();$_c->setModelo(“FORD”);$_c->setModelo(“FORD”);$_c-> _modelo=“CHEVROLET”;$_c-> _modelo=“CHEVROLET”;

?>?>

Page 210: Desenvolvimento WEB

Protected = atributos ou métodos definidos como protected são visíveis pela classe Protected = atributos ou métodos definidos como protected são visíveis pela classe

que os criou e por suas subclasses, fora deste contexto não estão acessíveis.que os criou e por suas subclasses, fora deste contexto não estão acessíveis.<?php<?php class carro{class carro{ protected $_modelo;protected $_modelo; public function setModelo($_m){public function setModelo($_m){ $this->_modelo=$_m;$this->_modelo=$_m; }} }} class caminhao extends carro{class caminhao extends carro{ protected $_eixos;protected $_eixos; public function setModelo($_m){public function setModelo($_m){ parent:::_modelo=$_m;parent:::_modelo=$_m; }} public function setEixo($_ne){public function setEixo($_ne){ $this->_eixos=$_ne;$this->_eixos=$_ne; }} }} $_c=new carro();$_c=new carro(); $_c->setModelo(“FORD”);$_c->setModelo(“FORD”); $_c->_modelo=“CHEVROLET”; //gera um erro$_c->_modelo=“CHEVROLET”; //gera um erro $_c= new caminhao();$_c= new caminhao(); $_c->setModelo(“SCANIA”);$_c->setModelo(“SCANIA”); $_c->setEixo(8);$_c->setEixo(8); var_dump($c);var_dump($c);?>?>

Page 211: Desenvolvimento WEB

Private = os atributos e métodos Private = os atributos e métodos

são visíveis apenas na classe são visíveis apenas na classe que os criou, ou seja, que os criou, ou seja, subclasses ou o script que subclasses ou o script que comtêm a classe não podem comtêm a classe não podem acessar esses atributos ou acessar esses atributos ou métodos.métodos.

Exemplo :Exemplo :

Page 212: Desenvolvimento WEB

<?php<?php class pessoas{class pessoas{ private $_tipo;private $_tipo; protected $_nome;protected $_nome; protected $_endereco;protected $_endereco; protected $_telefone;protected $_telefone; protected function setTipo($_t){protected function setTipo($_t){ $_this->_tipo=$_t;$_this->_tipo=$_t; }} }} class estudante extends pessoas{class estudante extends pessoas{ protected $_curso;protected $_curso; function _CONSTRUCTOR(){function _CONSTRUCTOR(){ parent::setTipo(“E”);parent::setTipo(“E”); }} }} $e=new estudante();$e=new estudante(); $e->_tipo=“A”;//erro$e->_tipo=“A”;//erro?>?>

Page 213: Desenvolvimento WEB

Funções Especiais – HTTP Funções Especiais – HTTP

As funções HTTP servem para As funções HTTP servem para gerenciamento da conexão gerenciamento da conexão entre o PHP e o browser do entre o PHP e o browser do usuário. As principais funções usuário. As principais funções são : header, para o envio de são : header, para o envio de um cabeçalho http, header_list um cabeçalho http, header_list para obter uma lista do para obter uma lista do cabeçalho e headers_sent para cabeçalho e headers_sent para verificar se um cabeçalho foi verificar se um cabeçalho foi enviado ou não.enviado ou não.

Page 214: Desenvolvimento WEB

HEADERHEADER

Esta função serve para enviar um ou Esta função serve para enviar um ou vários cabeçalhos http. vários cabeçalhos http.

Sintaxe : header(cabeçalho,atualiza)Sintaxe : header(cabeçalho,atualiza) O parâmetro atualiza indica se um O parâmetro atualiza indica se um

cabeçalho anterior do mesmo tipo deve ser cabeçalho anterior do mesmo tipo deve ser atualizado(true) ou se deve ser inserida atualizado(true) ou se deve ser inserida uma nova linha com o mesmo tipo de uma nova linha com o mesmo tipo de cabeçalho(false).cabeçalho(false).

Existem dois cabeçalhos especiais : o Existem dois cabeçalhos especiais : o primeiro é o cabeçalho do tipo HTTP/ o primeiro é o cabeçalho do tipo HTTP/ o qual indica que um código de retorno está qual indica que um código de retorno está sendo enviado(por exemplo página não sendo enviado(por exemplo página não encontrada).encontrada).

Exemplo :Exemplo :

Page 215: Desenvolvimento WEB

<?php<?php header(HTTP/1.0 404 Página não encontrada”);header(HTTP/1.0 404 Página não encontrada”); exit;exit;?>?>

O segundo tipo é o cabeçalho “Location”, que O segundo tipo é o cabeçalho “Location”, que executa um redirecionamento no browser (o executa um redirecionamento no browser (o browser busca o endereço informado no browser busca o endereço informado no cabeçalho).cabeçalho).

Exemplo :Exemplo :<?php<?php header(“Location:http://www.php.net”);header(“Location:http://www.php.net”); exit;exit;?>?>

IMPORTANTE : Os cabeçalhos HTTP devem ser IMPORTANTE : Os cabeçalhos HTTP devem ser enviados antes de qualquer outra tag HTML.enviados antes de qualquer outra tag HTML.

Page 216: Desenvolvimento WEB

HEADERS_LISTHEADERS_LIST

Esta função retorna um array com todos os cabeçalhos Esta função retorna um array com todos os cabeçalhos enviados ao browser pelo script atual.enviados ao browser pelo script atual.

Sintaxe : array headers_list()Sintaxe : array headers_list() Exemplo :Exemplo :<?php<?php header(“Expires:Mon, 20 May 2007 05:00:00 GMT”);header(“Expires:Mon, 20 May 2007 05:00:00 GMT”); header(“Last-Modified:” . Gmdate(“D, d M Y H:i:s”) . “ header(“Last-Modified:” . Gmdate(“D, d M Y H:i:s”) . “

GMT”);GMT”); header(“Cache-Control:no-store, no-cache, must-header(“Cache-Control:no-store, no-cache, must-

revalidate”);revalidate”); header(“Cache-Control:post-check=0, pre-check=0”, false);header(“Cache-Control:post-check=0, pre-check=0”, false); header(“Pragma: no-cahce”);header(“Pragma: no-cahce”); header(“Content-Type:text/HTML”);header(“Content-Type:text/HTML”); setcookie(“nome”,”Glaucio”);setcookie(“nome”,”Glaucio”); var_dump((headers_list());//exibe atributos do arrayvar_dump((headers_list());//exibe atributos do array?> ?>

Page 217: Desenvolvimento WEB

HEADERS_SENTHEADERS_SENT

Verifica se um cabeçalho já foi enviado ao Verifica se um cabeçalho já foi enviado ao browser, retornando verdadeiro (true) caso browser, retornando verdadeiro (true) caso um cabeçalho já tenha sido enviado e um cabeçalho já tenha sido enviado e falso(false) caso contrário. Muito útil para falso(false) caso contrário. Muito útil para controlarmos o envio de cookies e outras controlarmos o envio de cookies e outras informações ao browser.informações ao browser.

Sintaxe : bool Sintaxe : bool headers_sent(&arquivo,&linha)headers_sent(&arquivo,&linha)

Os parâmetros opcionais arquivo e linha Os parâmetros opcionais arquivo e linha receberão, se informados, o nome do receberão, se informados, o nome do programa e a linha na qual o envio de programa e a linha na qual o envio de informações para o browser foi iniciado.informações para o browser foi iniciado.

Exemplo :Exemplo :

Page 218: Desenvolvimento WEB

<?php<?php function server_url()function server_url() {{ $proto=“http”.$proto=“http”.

((isset($_SERVER[‘HTTPS’])&&$server[‘HTTPS’]==“on’)?”s”:””).”://”;((isset($_SERVER[‘HTTPS’])&&$server[‘HTTPS’]==“on’)?”s”:””).”://”; $server=isset($_SERVER[‘HTTP_HOST’])$server=isset($_SERVER[‘HTTP_HOST’]) ? $_SERVER[‘HTTP_HOST’]? $_SERVER[‘HTTP_HOST’] : $_SERVER[‘SERVER_NAME’];: $_SERVER[‘SERVER_NAME’]; return $proto.$server;return $proto.$server; }} function redir($_url)function redir($_url) {{ $url=server_url().dirname($_SERVER[‘PHP_SELF´]).”/”.$_url;$url=server_url().dirname($_SERVER[‘PHP_SELF´]).”/”.$_url; if (!headers_sent())if (!headers_sent()) {{ header(“Location: $url”);header(“Location: $url”); }} elseelse {{ echo “<meta http-equiv=‘refresh’ content=‘0;url=$url’>”;echo “<meta http-equiv=‘refresh’ content=‘0;url=$url’>”; }} }}?>?>

Page 219: Desenvolvimento WEB

COOKIES E SESSÕESCOOKIES E SESSÕES

Cookies são arquivos texto que Cookies são arquivos texto que podem ser armazenados no podem ser armazenados no computador do usuário para serem computador do usuário para serem recuperados posteriormente pelo recuperados posteriormente pelo servidor no qual seu site está servidor no qual seu site está hospedado.hospedado.

Sessões são recursos que podemos Sessões são recursos que podemos utilizar para manter uma conexão utilizar para manter uma conexão com o usuário, enquanto ele estiver com o usuário, enquanto ele estiver navegando no site. navegando no site.

Page 220: Desenvolvimento WEB

Utilidades em se utilizar cookies e Utilidades em se utilizar cookies e

sessões :sessões : Autenticação de Usuários : criação de um Autenticação de Usuários : criação de um

sistema envolvendo login, autenticação e sistema envolvendo login, autenticação e logout, garantindo acesso ao site somente logout, garantindo acesso ao site somente a usuários autorizados.a usuários autorizados.

Carrinho de compras : utilizado para Carrinho de compras : utilizado para guardar as compras do cliente enquanto guardar as compras do cliente enquanto ele navega pelo site.ele navega pelo site.

Exibição de anúncios ou imagens : Exibição de anúncios ou imagens : mantêm informações sobre quais anúncios mantêm informações sobre quais anúncios ou mensagens já foram mostradas para ou mensagens já foram mostradas para aquele usuário.aquele usuário.

Personalização de páginas : exemplo de Personalização de páginas : exemplo de uma livraria que poderia mostrar anúncio uma livraria que poderia mostrar anúncio de livros de informática a um usuário que de livros de informática a um usuário que da última vez comprou livros de informáticada última vez comprou livros de informática

Page 221: Desenvolvimento WEB

Utilizando CookiesUtilizando Cookies

O PHP nos fornece a função O PHP nos fornece a função setcookie que envia cookies para o setcookie que envia cookies para o computador do usuário. Esta função computador do usuário. Esta função é utilizada tanto para se criar um é utilizada tanto para se criar um cookie quanto para excluí-lo.cookie quanto para excluí-lo.

Sintaxe : bool setcookie(string Sintaxe : bool setcookie(string nome[,string valor[,int nome[,string valor[,int validade[,string caminho[,string validade[,string caminho[,string dominio[,int seguro]]]]]) onde :dominio[,int seguro]]]]]) onde :

Page 222: Desenvolvimento WEB

nome=nome do cookie que está sendo nome=nome do cookie que está sendo

enviado, é o único parametro obrigatorio enviado, é o único parametro obrigatorio na função.na função.

Valor=é o valor do cookie, se não Valor=é o valor do cookie, se não fornecido, o comando exclui o cookie se fornecido, o comando exclui o cookie se este existir.este existir.

Validade=define o tempo de validade do Validade=define o tempo de validade do cookie.cookie.

Caminho=caminho no servidor para o qual Caminho=caminho no servidor para o qual o cookie estará disponívelo cookie estará disponível

Dominio=domínio para o qual o cookie Dominio=domínio para o qual o cookie estará disponívelestará disponível

seguro=valor inteiro(0 ou 1) que indica se o seguro=valor inteiro(0 ou 1) que indica se o cookie é seguro.Se for utilizado 1, o cookie cookie é seguro.Se for utilizado 1, o cookie será transmitido se a conexão for segura será transmitido se a conexão for segura (HTTPS)(HTTPS)

Page 223: Desenvolvimento WEB

OBS : se for criado um cookie somente com o OBS : se for criado um cookie somente com o

nome, a função setcookie excluirá o cookie. nome, a função setcookie excluirá o cookie. Portanto, sempre crie um cookie com pelo menos Portanto, sempre crie um cookie com pelo menos nome e valor.nome e valor.

Exemplo : setcookie(“nome”,”Joao”);Exemplo : setcookie(“nome”,”Joao”); Se quiser excluir o cookie anterior, o comando Se quiser excluir o cookie anterior, o comando

ficaria :ficaria : Setcookie(“nome”)Setcookie(“nome”) Para criar um cookie valido por dois dias, utilizamos Para criar um cookie valido por dois dias, utilizamos

a função time :a função time : Setcookie(“nome”,”Joao”,time()+172800);//a função Setcookie(“nome”,”Joao”,time()+172800);//a função

time obtem o tempo atual e somamos 172.800 time obtem o tempo atual e somamos 172.800 segundos, que equivalem a 48 horas.segundos, que equivalem a 48 horas.

IMPORTANTE : a criação de cookies deve ser feita IMPORTANTE : a criação de cookies deve ser feita antes de qualquer comando HTML, até mesmo antes de qualquer comando HTML, até mesmo antes do <HTML> e <BODY>.antes do <HTML> e <BODY>.

Page 224: Desenvolvimento WEB

Para se recuperar esse cookie Para se recuperar esse cookie gravado na máquina do cliente, gravado na máquina do cliente, devemos utilizar o array superglobal devemos utilizar o array superglobal $_COOKIE..$_COOKIE..

Você só poderá recuperar seu Você só poderá recuperar seu cookie na próxima requisição de cookie na próxima requisição de página feita pelo cliente. Porque na página feita pelo cliente. Porque na primeira requisição você criou o primeira requisição você criou o cookie, certo ?cookie, certo ?

Resumindo : para criar Resumindo : para criar setcookie(“nome”,”joao”) e para setcookie(“nome”,”joao”) e para recuperar este cookie recuperar este cookie $_COOKIE(“nome”);$_COOKIE(“nome”);

Page 225: Desenvolvimento WEB

SessõesSessões

Já vimos que sessão é o período de tempo que o Já vimos que sessão é o período de tempo que o usuário navega pelas páginas de um site. Serve usuário navega pelas páginas de um site. Serve para que registremos variáveis no servidor e para que registremos variáveis no servidor e poderão ser acessadas em qualquer página do site. poderão ser acessadas em qualquer página do site. ENQUANTO A SESSÃO ESTIVER ABERTA.ENQUANTO A SESSÃO ESTIVER ABERTA.

Cada sessão tem um número de identificador Cada sessão tem um número de identificador único, chamado de session id. Para uma página ter único, chamado de session id. Para uma página ter acesso aos dados da sessão ela deve conhecer acesso aos dados da sessão ela deve conhecer esse identificador. Para se transmitir o identificador esse identificador. Para se transmitir o identificador da sessão entre as páginas existem duas formas : da sessão entre as páginas existem duas formas : cookies e propagação de variáveis na cookies e propagação de variáveis na URL(endereço destino)URL(endereço destino)

O primeiro consiste em armazenar o id em um O primeiro consiste em armazenar o id em um cookie na máquina do usuário e utilizá-lo como cookie na máquina do usuário e utilizá-lo como referência. É o melhor método, mas se o usuário referência. É o melhor método, mas se o usuário bloquear o recebimento de cookies devemos usar o bloquear o recebimento de cookies devemos usar o segundo método.segundo método.

Page 226: Desenvolvimento WEB

No segundo método No segundo método propagamos o id pela url. propagamos o id pela url. Acrescentamos ao final da url a Acrescentamos ao final da url a constante SID, que o PHP cria constante SID, que o PHP cria automaticamente no início de automaticamente no início de uma sessão. Exemplo :uma sessão. Exemplo :

Echo ‘<a Echo ‘<a ref=“pagina.php?’.SID.’”>Clique ref=“pagina.php?’.SID.’”>Clique aqui</a>’;aqui</a>’;

O melhor e mais seguro método é O melhor e mais seguro método é por cookies.por cookies.

Page 227: Desenvolvimento WEB

Para se criar uma sessão no PHP Para se criar uma sessão no PHP existem duas maneiras, manual e existem duas maneiras, manual e automática. automática.

Na manual se faz de forma explícita Na manual se faz de forma explícita (função session_start) ou de forma (função session_start) ou de forma implícita(ao se registrar uma variável implícita(ao se registrar uma variável com a função session_register). com a função session_register).

Na automática habilitamos a diretiva Na automática habilitamos a diretiva session.auto_start do arquivo session.auto_start do arquivo php.ini. Assim, sempre que o usuário php.ini. Assim, sempre que o usuário entrar em seu site será criada uma entrar em seu site será criada uma sessão.sessão.

Page 228: Desenvolvimento WEB

VARIÁVEIS DE AMBIENTEVARIÁVEIS DE AMBIENTE

Embora utilizadas no PHP, essas variáveis são do Embora utilizadas no PHP, essas variáveis são do ambiente do servidor WEB e não da linguagem ambiente do servidor WEB e não da linguagem PHP.PHP.

Com elas podemos descobrir diversas informações, Com elas podemos descobrir diversas informações, como o endereço de IP do visitante, de onde veio a como o endereço de IP do visitante, de onde veio a requisição da página, qual o tipo de conteúdo requisição da página, qual o tipo de conteúdo solicitado e etc.solicitado e etc.

Para se obter o valor das variáveis de ambiente Para se obter o valor das variáveis de ambiente utilizamos a função getenv do PHP. Sua sintaxe é a utilizamos a função getenv do PHP. Sua sintaxe é a seguinte :seguinte :

Getenv(“nome_da_variavel”) ;Getenv(“nome_da_variavel”) ; Por exemplo, se quisermos saber qual foi o método Por exemplo, se quisermos saber qual foi o método

de envio de dados utilizado, fazemos o seguinte :de envio de dados utilizado, fazemos o seguinte : $metodo = getenv(“REQUEST_METHOD”);$metodo = getenv(“REQUEST_METHOD”);

Page 229: Desenvolvimento WEB

LISTA DE VARIÁVEIS DE LISTA DE VARIÁVEIS DE AMBIENTEAMBIENTE Já vimos que com o getenv nos retorna os valores de Já vimos que com o getenv nos retorna os valores de

diversas variáveis de ambiente. Agora veremos uma lista diversas variáveis de ambiente. Agora veremos uma lista com as principais variáveis de ambiente:com as principais variáveis de ambiente:

SERVER_SOFTWARE=servidor e softwares utilizados, SERVER_SOFTWARE=servidor e softwares utilizados, ex apache, PHP, etc.ex apache, PHP, etc.

SERVER_NAME=nome do servidor ou endereço IPSERVER_NAME=nome do servidor ou endereço IP GATEWAY_INTERFACE=versão da especificação CGI GATEWAY_INTERFACE=versão da especificação CGI

que o servidor fornece.que o servidor fornece. SERVER_PROTOCOL=Nome e versão do protocolo SERVER_PROTOCOL=Nome e versão do protocolo

utilizado Ex HTTP/1.1utilizado Ex HTTP/1.1 SERVER_PORT=numero da porta para a qual a SERVER_PORT=numero da porta para a qual a

requisição foi feitarequisição foi feita REQUEST_METHOD=o metodo de envio de dados tipo REQUEST_METHOD=o metodo de envio de dados tipo

GET, POSTGET, POST PATH_INFO=Informação extra de caminho dada pelo PATH_INFO=Informação extra de caminho dada pelo

cliente para acesso de alguns scripts.cliente para acesso de alguns scripts. PATH_TRANSLATED=versão traduzida de PATH_TRANSLATED=versão traduzida de

PATH_INFO.Faz um mapeamento de virtual para físico.PATH_INFO.Faz um mapeamento de virtual para físico.

Page 230: Desenvolvimento WEB

SCRIPT_NAME=caminho virtual para o script que está sendo SCRIPT_NAME=caminho virtual para o script que está sendo

executado.Usado por páginas que referenciam elas mesmas.executado.Usado por páginas que referenciam elas mesmas. QUERY_STRING=armazena tudo o que vem após o ? Em uma QUERY_STRING=armazena tudo o que vem após o ? Em uma

url chamada.url chamada. REMOTE_HOST=nome do host de onde veio a requisição.REMOTE_HOST=nome do host de onde veio a requisição. REMOTE_ADDR=contem o endereço de ip do visitante que REMOTE_ADDR=contem o endereço de ip do visitante que

solicitou a página.solicitou a página. AUTH_TYPE=metodo de autenticação(usado por servidores que AUTH_TYPE=metodo de autenticação(usado por servidores que

suportam autenticação de usuários)suportam autenticação de usuários) REMOTE_USER=nome do usuario(se o servidor suportar REMOTE_USER=nome do usuario(se o servidor suportar

autenticação)autenticação) REMOTE_IDENT=se o servidor suporta identificação padrão REMOTE_IDENT=se o servidor suporta identificação padrão

RFC 931, esta variável conterá nome do utilizador remoto que RFC 931, esta variável conterá nome do utilizador remoto que faz a requisição.faz a requisição.

CONTENT_TYPE=tipo MIME dos dados enviados, ex: “text/html”CONTENT_TYPE=tipo MIME dos dados enviados, ex: “text/html” CONTENT_LENGHT= tamanho dos dados em bytes recebidos CONTENT_LENGHT= tamanho dos dados em bytes recebidos

pelo servidorpelo servidor HTTP_ACCEPT=lista dos tipos MIME que o cliente pode aceitar.HTTP_ACCEPT=lista dos tipos MIME que o cliente pode aceitar. HTTP_USER_AGENT=nome e versão do browser utilizado pelo HTTP_USER_AGENT=nome e versão do browser utilizado pelo

cliente.cliente.

Page 231: Desenvolvimento WEB

Certificados DigitaisCertificados Digitais

Um certificado digital é um arquivo de computador Um certificado digital é um arquivo de computador que contém um conjunto de informações referentes que contém um conjunto de informações referentes a entidade para o qual o certificado foi emitido (seja a entidade para o qual o certificado foi emitido (seja uma empresa, pessoa física ou computador) mais a uma empresa, pessoa física ou computador) mais a chave pública referente a chave privada que chave pública referente a chave privada que acredita-se ser de posse unicamente da entidade acredita-se ser de posse unicamente da entidade especificada no certificado.especificada no certificado.

A certificação digital atesta a identidade de uma A certificação digital atesta a identidade de uma pessoa ou instituição na internet por meio de um pessoa ou instituição na internet por meio de um arquivo eletrônico assinado digitalmente. arquivo eletrônico assinado digitalmente.

Seu objetivo é atribuir um nível maior de segurança Seu objetivo é atribuir um nível maior de segurança nas transações eletrônicas, permitindo a nas transações eletrônicas, permitindo a identificação inequívoca das partes envolvidas, identificação inequívoca das partes envolvidas, bem como a integridade e a confidencialidade dos bem como a integridade e a confidencialidade dos documentos e dados da transação.documentos e dados da transação.

Page 232: Desenvolvimento WEB

A certificação digital oferece as seguintes A certificação digital oferece as seguintes

garantias:garantias: Autenticidade do emissor e do receptor da Autenticidade do emissor e do receptor da

transação ou do documento; transação ou do documento; Integridade dos dados contidos na Integridade dos dados contidos na

transação ou no documento; transação ou no documento; Confidencialidade entre as partes; Confidencialidade entre as partes; Não-repúdio das transações efetuadas ou Não-repúdio das transações efetuadas ou

documentos assinados. documentos assinados. A Administração Pública Federal, por meio A Administração Pública Federal, por meio

da MP 2.200-2/2001, instituiu a Infra-da MP 2.200-2/2001, instituiu a Infra-Estrutura de Chaves Públicas (ICP-Brasil), Estrutura de Chaves Públicas (ICP-Brasil), estabelecendo padrões de certificação estabelecendo padrões de certificação digital para os órgãos federais. digital para os órgãos federais.

Page 233: Desenvolvimento WEB

As versões mais atualizadas dos navegadores já As versões mais atualizadas dos navegadores já

reconhecem automaticamente os certificados ICP-reconhecem automaticamente os certificados ICP-Brasil.Brasil.

Obter uma assinatura digital não é algo tão simples. Obter uma assinatura digital não é algo tão simples. Primeiro é necessário procurar uma entidade que Primeiro é necessário procurar uma entidade que faça esse serviço, isto é, deve-se procurar uma faça esse serviço, isto é, deve-se procurar uma Autoridade Certificadora (AC). Uma AC tem a Autoridade Certificadora (AC). Uma AC tem a função de verificar a identidade de um usuário e função de verificar a identidade de um usuário e associar a ele uma chave. Essas informações são associar a ele uma chave. Essas informações são então inseridas no certificado digital.então inseridas no certificado digital.

Para que um certificado seja válido, é necessário Para que um certificado seja válido, é necessário que o interessado tenha a chave pública da AC que o interessado tenha a chave pública da AC para comprovar que aquele certificado foi, de fato, para comprovar que aquele certificado foi, de fato, emitido por ela. A questão é que existem inúmeras emitido por ela. A questão é que existem inúmeras ACs espalhadas pelo mundo e fica, portanto, ACs espalhadas pelo mundo e fica, portanto, inviável ter a chave pública de cada uma. inviável ter a chave pública de cada uma.

Page 234: Desenvolvimento WEB

A solução encontrada para esse problema foi a A solução encontrada para esse problema foi a

criação de "ACs supremas" (ou "ACs-Raiz"), ou criação de "ACs supremas" (ou "ACs-Raiz"), ou seja, instituições que autorizam as operações das seja, instituições que autorizam as operações das ACs que emitem certificados a pessoas e ACs que emitem certificados a pessoas e empresas. Esse esquema é conhecido como ICP empresas. Esse esquema é conhecido como ICP (Infra-estrutura de Chaves Públicas) ou, em inglês, (Infra-estrutura de Chaves Públicas) ou, em inglês, PKI (Public Key Infrastructure).PKI (Public Key Infrastructure).

No Brasil, a ICP-Brasil controla as ACs: Presidência No Brasil, a ICP-Brasil controla as ACs: Presidência da República, Receita Federal, SERPRO, Caixa da República, Receita Federal, SERPRO, Caixa Econômica Federal, Serasa e CertiSign. Isso Econômica Federal, Serasa e CertiSign. Isso significa que, para que tenha valor legal diante do significa que, para que tenha valor legal diante do governo brasileiro, uma dessas instituições deve governo brasileiro, uma dessas instituições deve prover o certificado. Porém, para que isso seja prover o certificado. Porém, para que isso seja feito, cada instituição pode ter requisitos e custos feito, cada instituição pode ter requisitos e custos diferentes para a emissão, uma vez que cada diferentes para a emissão, uma vez que cada entidade pode emitir certificados para finalidades entidade pode emitir certificados para finalidades distintas. E isso se aplica a qualquer AC no mundo. distintas. E isso se aplica a qualquer AC no mundo.

Page 235: Desenvolvimento WEB

No entanto, qualquer instituição No entanto, qualquer instituição

pode criar uma ICP, independente pode criar uma ICP, independente de seu porte. Por exemplo, se uma de seu porte. Por exemplo, se uma empresa criou uma política de uso empresa criou uma política de uso de certificados digitais para a troca de certificados digitais para a troca de informações entre a matriz e sua de informações entre a matriz e sua filiais, não vai ser necessário pedir filiais, não vai ser necessário pedir tais certificados a uma AC tais certificados a uma AC controlada pela ICP-Brasil. A própria controlada pela ICP-Brasil. A própria empresa pode criar sua ICP e fazer empresa pode criar sua ICP e fazer com que um departamento das filiais com que um departamento das filiais atue como AC ou AR, solicitando ou atue como AC ou AR, solicitando ou emitindo certificados para seus emitindo certificados para seus funcionários.funcionários.

Page 236: Desenvolvimento WEB

FIMFIM

Professor Glaucio BianchiniProfessor Glaucio BianchiniUNIBAN maio/2008UNIBAN maio/2008