PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo...

29
Rodrigo Córdula PHP e Ajax Direto ao ponto

Transcript of PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo...

Page 1: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

Rodrigo Córdula

PHP e Ajax Direto ao ponto

Page 2: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP e Ajax - Direto ao ponto Copyright� Editora Ciência Moderna Ltda., 2014

Todos os direitos para a língua portuguesa reservados pela EDITORA CIÊNCIA MODERNA LTDA. De acordo com a Lei 9.610, de 19/2/1998, nenhuma parte deste livro poderá ser reproduzida, transmitida e gravada, por qualquer meio eletrônico, mecânico, por fotocópia e outros, sem a prévia autorização, por escrito, da Editora. Editor: Paulo André P. Marques Produção Editorial: Aline Vieira Marques Assistente Editorial: Amanda Lima da Costa Capa: Carlos Arthur Candal Diagramação: Carlos Arthur Candal Copidesque: Eveline Vieira Machado Várias Marcas Registradas aparecem no decorrer deste livro. Mais do que simplesmente listar esses nomes e informar quem possui seus direitos de exploração, ou ainda imprimir os logotipos das mesmas, o editor declara estar utilizando tais nomes apenas para fins editoriais, em benefício exclusivo do dono da Marca Registrada, sem intenção de infringir as regras de sua utilização. Qualquer semelhança em nomes próprios e acontecimentos será mera coincidência.

FICHA CATALOGRÁFICA

CÓRDULA, Rodrigo Beltrão de Lucena.

PHP e Ajax - Direto ao ponto

Rio de Janeiro: Editora Ciência Moderna Ltda., 2014.

1. Informática, Linguagem de Programação, PHP, AJAX I — Título

ISBN: 978-85-399-0502-7 CDD 0001.642

Editora Ciência Moderna Ltda. R. Alice Figueiredo, 46 – Riachuelo Rio de Janeiro, RJ – Brasil CEP: 20.950-150 Tel: (21) 2201-6662/ Fax: (21) 2201-6896 E-MAIL: [email protected] WWW.LCM.COM.BR 09/14

Page 3: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

Agradecimentos

Agradeço a Deus, por ter sobrevido em um grave acidente de moto e por ter a maravilhosa família que tenho, também agradeço aos leitores; acredito �������������� ����� �������������������������������������������������como também para os veteranos de programação desta linguagem.

Agradeço também à minha esposa, Thaís, por ter dado a mim o melhor �������� ��������� ���������������������������������������� ����������� ��������������� �� ����� � �����������������������

Também gostaria de agradecer a Everaldo Pimentel do SENAC e à comis-são julgadora, por ter dado-me a oportunidade de atuar como professor de PHP do curso técnico de programação pelo SENAC da Paraíba, que, para mim, foi um momento bastante importante para o crescimento de minha carreira.

Page 4: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

Apresentação

O PHP é uma linguagem totalmente voltada à Internet, possibilitando o desenvolvimento de sites realmente dinâmicos. Dominando essa linguagem, é ����������������������������������������� ����������������������������-vos, utilizando todas as técnicas de programação que essa linguagem oferece.

Com este material, você aprenderá os conceitos de programação, desde ����������������������������������������!"������� �����������������������#����� �� � ������$�������������� ���%&������������'����� ������seus programas em PHP, criar um banco de dados de usuários e autenticá-los em seu site por um sistema de username e password (nome de usuário e senha), e muito mais.

O material apresenta ainda uma explicação detalhada sobre o JavaScript, além do AJAX, sintaxe e estruturação de programas, manipulação de dados, entre outros assuntos. Não importa se você é iniciante ou se já é um usuário mais experiente, este material será muito útil para ajudá-lo a dominar e criar excelentes sites com o PHP/AJAX. Espero que você possa fazer um bom uso deste material e desejo-lhe um excelente aprendizado.

Page 5: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

Sumário

PHP ................................................................................................................ 1*������� ����+0�22 ............................................................................... 2Criando meu primeiro exemplo ............................................................... 5Uso de Comentários ................................................................................. 74��������� ������� � ............................................................................ 7Operadores e sequência de escape ........................................................... 8Trabalhando com formulários ................................................................ 13Operadores condicionais e loops ........................................................... 239��!"�������� �!:�� �� � �� .............................................................. 28����<��������!"�� ................................................................................. 30���� ���� >���� ................................................................................. 469��� ��B��!"�� .................................................................................... 47Entendendo a passagem por valor e por referência ............................... 48Cookies .................................................................................................. 49%���"�� ................................................................................................... 57Incluindo vários arquivos ...................................................................... 62Impedindo ataques XSS ......................................................................... 68Processamento de arquivos .................................................................... 71��#����� ���������������������G0 ��� ....................................... 76�G%&� .................................................................................................. 79K����<�� ����2�2��������G%&� .......................................................... 96Enviando dados por e-mail .................................................................. 104Sistema administrativo de envio de comentários ................................. 107��������� �����uploads de arquivos ...................................................121Trabalhando com datas .........................................................................137Enviando e-mail��������������� .....................................................139Enviando e-mail com anexo ................................................................ 140Diminuindo o tamanho das imagens .....................................................147Vendas de produtos on-line ..................................................................153Criando um carrinho de compras ......................................................... 154

JavaScript .................................................................................................217Começando o JavaScript .......................................................................218��������!:��LM� ...............................................................................219Receptores ou rotinas de tratamento de eventos? ................................ 235

Page 6: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

VIII — PHP e Ajax - Direto ao ponto

Trabalhando com string ....................................................................... 245Trabalhando com match ..................................................................... 256Trabalhando com matrizes ................................................................... 257Trabalhando com date ......................................................................... 266Trabalhando com cookie ...................................................................... 269Trabalhando com janelas pop-up ......................................................... 271Exemplos em JavaScript ...................................................................... 272

AJAX ......................................................................................................... 287���� �� ............................................................................................... 290Resgatando e enviando dados pelo Ajax ..............................................291Upload com Ajax e AS3 ...................................................................... 300Multiupload com Ajax e AS3 ...............................................................313Exemplos simples em AJAX ............................................................... 323Exemplos um pouco mais complexos em AJAX ..................................331

FileZilla ..................................................................................................... 373

�������� ...............................................................................................375

Page 7: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHPPHP é uma poderosa linguagem de programação open source, mundial-

mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

O PHP tem a capacidade de interagir e misturar o seu código-fonte ao (X)������9%%��Z��%������0Z0+�����

Todo PHP é executado no servidor, sendo enviado para o cliente apenas o [+\����������L�������������������������������������#����� �� � ��������������!"����$��������������� ����������������� ���:���$������] ���--fonte para o cliente, diferentemente do que ocorre com o JavaScript e o AJAX.

O PHP, assim como o JavaScript, é uma linguagem interpretada e não compilada.

Linguagem interpretadaÉ uma linguagem na qual as linhas de código são “traduzidas” na hora em

�������] �������������!:�������������� ��������!:���]���� ��� �������-dos neste momento.

Linguagem compiladaÉ uma linguagem que já foi toda traduzida e, teoricamente, está livre de

erros.

Tipagem do PHPO PHP é uma linguagem não tipada, ou seja, as variáveis não precisam ter

����������������� ���0��������� ��������� ��������������� �� � ������� ��momento, sem que ocorra qualquer tipo de erro.

O que é preciso para começar a programar em PHP?^� Um servidor;^� Um interpretador PHP;^� K����� �� ��#����� �� � ����G%&��

2�������������������<��������+0�22���������������_����������������`������������_��������� ���

Page 8: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

2 — PHP e Ajax - Direto ao ponto

INSTALANDO O XAMPP1. Primeiramente, baixe o aplicativo em:http://www.apachefriends.org/pt_br/xampp.html

Nota: Este tutorial tem por base o XAMPP 1.7.7

2. Execute o aplicativo. Uma tela como esta será apresentada, pedindo o tipo de linguagem a ser utilizada durante a instalação.

Escolha o inglês e clique em OK.

3. Feito isso, uma nova tela será apresentada, clique simplesmente em Next.

}��0��]$����������������������!:�� �������� ���������!:�� ��+0�22��~�recomendável que evite indicar pastas com espaços em branco. Por exemplo, �:������������+0�22�����������0������ ��2������������2�����B������

*� ��������������� ����+0�22������������ ���������������������������sugestão do instalador.

Page 9: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 3

���%���� �������������� ����������0����������G%&������B��������������serviço (as service), é importante saber que esses programas estarão residentes na memória, mesmo que você não esteja utilizando o painel de controle do +0�22��*������������ �����$����������������!������������������� ������o seu processo de iniciação (boot\��������� ������ ��$�������!"������������- ������������� ��� ����������������������#��:��*��������

��� %�� �� B������� �� ��� ���� ������ ������ ���� ��������� ����� �����aparecerá:

���9���������2��������������������������0�������������������G%&���no caso dele aparecer.

Page 10: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

4 — PHP e Ajax - Direto ao ponto

8. Concluída a instalação, clique em Finish. Uma janela como esta será exibida:

���9���������%����������������������� ���������� ��+0�22��K���_������como esta será mostrada:

10. Clique em Admin do Apache ou simplesmente digite http://localhost em um navegador de sua preferência. Uma janela como esta será apresentada:

Page 11: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 5

11. Selecione o idioma Português (Brasil); logo em seguida, você poderá ������<������������������ ��+0�22�

Note que nesta tela, você poderá alterar o idioma no canto superior direito.

Nota: Caso ocorra algum erro na iniciação do Apache e/ou MySQL, cer-��� ��������� ��������������������� ������������������������� ������������������������������� ������������������������� �����

CRIANDO MEU PRIMEIRO EXEMPLOSe você aceitou a sugestão do instalador, crie uma pasta no endereço C:\

xampp\htdocs\xampp\websites Dentro dela, você colocará e testará os seus arquivos PHP.Crie um arquivo com o seguinte conteúdo, como exemplo:<html><head><title>Minha primeira página em PHP</title></head><body><?php echo ‘PHP é show! ‘;?> </body></html>

Salve-o com o nome ex1.php no local C:\xampp\htdocs\xampp\websites

Para poder visualizá-lo, digite na barra de endereço:http://localhost/xampp/websites/ex1.php

Dica: Adicione o caminho http://localhost/xampp/websites a Favoritos.

Como deve ter percebido, antes de inserirmos qualquer código PHP, preci-samos ‘dizer’ onde inicia o script PHP (<?php) e onde termina (?>).

Page 12: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

6 — PHP e Ajax - Direto ao ponto

A primeira linha insere a tag de abertura do PHP. A segunda linha utiliza �������� ������������������������$�#�!:�� �������$����������� ��������-zando logo em seguida por ponto e vírgula (;).

A última linha fecha o script.

A saída deste script será:PHP é show!Para a exibição de textos, utilizam-se aspas simples ou duplas; para a exi-

bição do conteúdo armazenado em variáveis, utilizam-se aspas duplas ou nenhuma.

No PHP, os valores entre aspas simples serão tratados de forma literal, enquanto aqueles entre aspas duplas serão interpretados, ou seja, tudo será analisado pelo PHP, independentemente de todo o conteúdo ser composto só de texto ou não. O problema é que isso, dependendo do tamanho do texto que o PHP irá analisar, poderá comprometer o andamento do script.

������������$����������������������� ������� ��É aí que entra a concatenação.A concatenação é responsável por juntar um texto ou uma palavra com

uma variável, por exemplo. O símbolo de concatenação para o PHP é o ponto (.).

Vamos a um exemplo para entendermos melhor:01 <?php02 $x=23;03 $y=12;04 $texto=’Resultado da soma é ‘;05 06 $r = $x + $y;07 08 echo ‘Soma de $x e $y. $texto $r<br /><br />’;09 echo “Soma de $x e $y. $texto $r<br /><br />”;10 echo ‘Soma de ‘.$x.’ e ‘.$y.’. ‘.$texto.’ ‘.$r.’<br /><br />’;11 ?>

A linha 1 é a tag� ���#����� ��2�2�����������������:������������$���G�����foram criadas para armazenar os números 23 e 12, respectivamente.

A linha 4 é outra variável de nome texto, que está armazenando em seu conteúdo a frase ‘Resultado da soma é’.

Na linha 6 temos outra variável r, responsável por armazenar a soma dos ������ ��� ����������$���G�������:������������������������

Na linha 8 temos um texto seguido pelas variáveis e as tags������ �������de linha. A saída, neste caso, já que foram usadas aspas simples (onde tudo será considerado como texto), será:

Page 13: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 7

%���� ���$����G�����$����Já na linha 9, foram utilizadas aspas duplas, onde tudo (texto e variáveis)

será analisado. A saída será:Soma de 23 e 12. Resultado da soma é 35A forma ideal e um pouco confusa é como foi escrito na linha 10, onde o

que é texto foi colocado com aspas simples e o que é variável foi concatenado com o texto por ponto. A saída neste caso será:

Soma de 23 e 12. Resultado da soma é 35

USO DE COMENTÁRIOSOs comentários não são exibidos no navegador, eles só servem para inserir

�����!"������script para que o programador possa localizar-se dentro dele ou entender determinadas partes do mesmo.

Comentários de linha: São comentários de uma única linha. Para inseri-lo, você deve utilizar barras duplas (//) ou talha (#).

Comentários de várias linhas: Como o próprio nome diz, serve para inserir diversas linhas de comentário em uma determinada parte do script. Para isso, você deve abrir o comentário com barra e asterisco (/*) e após o término do comentário, deve fechá-lo com asterisco e barra (*/).

���������������������$������� ������ ������������

VARIÁVEL E IDENTIFICADORUma variável é responsável por armazenar um determinado valor ou objeto

em sua memória cujo conteúdo pode variar ao longo do tempo durante a sua execução.

Embora a variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante.

�� ����������� ������� ����������������� ������� ���K��� ������� ������ ������� �������������� � ��������������Ex:$valor = ‘Seja bem-vindo!’;Toda a variável criada em PHP inicia-se com cifrão $, onde valor (neste

����\����������[� ������� �\� ������������������������ �� � ��������������está armazenando, que neste caso é uma string (texto).

É importante que nunca se use uma palavra reservada, isto é, que faça parte ������������ ��2�2���������� ������� ���������� ������������ ������a depuração do código.

Page 14: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

8 — PHP e Ajax - Direto ao ponto

�����������������������L���������������������������������������������������������������

isto é, que representem automaticamente o tipo da informação que será arma-zenado nela.

Além disso, algumas outras regras deverão ser seguidas, a saber:1. Deve ter como primeiro caractere uma letra;2. Após a primeira letra, pode haver letras, dígitos ou sublinhado (_);3. No PHP, as letras maiúsculas e minúsculas são diferenciadas, ou

seja, uma variável criada desta forma:$X = 5;Não poderá ter acessado o seu valor desta forma:echo $x;

4. Não pode ser uma palavra reservada;5. Não pode usar caracteres especiais, tais como ç, :, °, ª, ?, !, £, @

etc.;6. Não pode usar acentos. Ex.: idêntico, média.

Variáveis ConstantesUma variável constante é aquela cujo valor atribuído não pode ser mudado.2������������������������`� ��������<�������!:�� ����[�\�Sintaxe: ����[�¡M�¢���� � ��\�Exemplo:<?php���������� ������������� �� ����� ������ �����?>

OPERADORES E SEQUÊNCIA DE ESCAPE

Exemplo Nome Efeito++$a Pré-incremento Incrementa $a a um, então retorna $a.$a++ Pós-incremento Retorna $a, então incrementa $a a um--$a Pré-decremento Decrementa $a de um, então retorna $a.$a-- Pós-decremento Retorna $a, então decrementa $a de um.

Page 15: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 9

Vamos a um exemplo:

<?php$a=10;echo ++$a.’<br />’; //A saída será 11��� �"������ �"� #�� �����%��&"�"� %"' � ��&���� "���" '��� � '�� antigo valor que é 11*/echo $a++.’<br />’; echo $a.’<br />’; /*Agora exibe o valor atual da variável incrementada que é 12*/?>

OPERADORES SIGNIFICADO EXEMPLO

+ Adição $a = $a + 2;- Subtração $b = $b - 4;* ����������!:� $c = $c * 11;/ Divisão $d = $d / 3;% Resto da divisão $r = (5%3);

O operador % é tratado como a operação de uma divisão inteira, que terá como resultado o resto da divisão.

Para entendermos melhor, vamos a um exemplo:<?php(� ) �,-:�� �� @ �"��� "&����B�� C �"������ � '��� Decho $r; ?>

Quando desejamos somar, subtrair, dividir, multiplicar ou qualquer outra operação com uma variável, e desejamos armazenar este resultado nela mesma, fazemos da seguinte forma:

$a = $a + 4;Essa operação fez somar 4 à variável a e guardou este resultado na própria

variável.A outra forma de fazer a mesma coisa seria:

Page 16: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

10 — PHP e Ajax - Direto ao ponto

$a+=4;

OPERADORES MESMO QUE

+= $a = $a + x;-= $a = $a - x;*= $a = $a * x;/= $a = $a / x;%= $a = ($a%x);

x - Representa um valor qualquer

Sequência de Escape

CÓDIGO SIGNIFICADO

\” Aspas duplas\’ Aspas simples\\ Barra invertida\n Nova linha\r Retorno de carro\t Tabulação\$ Cifrão

Uma vez que você utilize aspas simples para exibir algum texto, não poderá utilizar aspas simples dentro desse texto, pois do contrário, causará erro no script.

Ex:<?phpecho ‘”Não somos apenas o que pensamos ser. Somos mais; somos também o que lembramos e aquilo de que nos esquecemos; somos as palavras que &���"%�'� �' ��E"��' F�� ��%�&�%�'� �' �%G��'�' " F�� ����%�'� �'�% querer’.” Sigmund Freud’;?>

A saída deste script será:Parse error¨��G���$��������$����� ��©%��*¡«���$���������������������

C:\xampp\htdocs\xampp\WebSites\ex1.php on line 3A única forma de utilizar aspas simples dentro deste texto, sem causar erro,

é utilizando a sequência de escape.Toda sequência de escape inicia-se com barra invertida, seguida pelo

caractere que deseja realizar o escape.

Page 17: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 11

Então, para realizar o escape das aspas simples, faremos da seguinte forma:

<?php���� �JKL� '�%�' "G��"' � F�� G��'"%�' '��O �%�' %"�'� '�%�' &"%�Q% � F�� ��%��"%�' � "F���� �� F�� ��' �'F����%�'� '�%�' "' G"�"��"' F�� &���"%�'� �' ��E"��' F�� ��%�&�%�'� �' �%G��'�' " F�� ����%�'� T�'�% F�����T�OJ �E%��� U������?>

A saída deste script será:“Não somos apenas o que pensamos ser. Somos mais, somos também o que

lembramos e aquilo de que nos esquecemos, somos as palavras que trocamos, os enganos que cometemos, os impulsos a que cedemos, ‘sem querer’.” Sigmund Freud

Lógicos

Operando ��������and “e” lógicoor “ou” lógicoxor “ou” exclusivo! “não” (inversão)&& “e” lógico|| “ou” lógico

Os operadores lógicos servem para fazer mais uma comparação lógica ao mesmo tempo dentro de uma condição if, por exemplo.

Comparação

OPERANDO SIGNIFICADO

== Igual!= Diferente< ��������> ��������<= ���������������>= ���������������

0��������!"����:�������������#������������������� ������������������������������������#��������������������<� ���������� ������� �-cionais if/else.

Page 18: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

12 — PHP e Ajax - Direto ao ponto

IMPORTANTE: Nos scripts e nos exemplos do livro, serão utilizados constantemente dois comandos JavaScript: alert e location.replace.

alert É uma janelinha gerada pelo browser�[���� ������� "��� �������������-

�������\��������������������������� ���� ������������ ��������������botão OK.

Vejamos um exemplo:

<html><head><title>Título da página</title></head><body>W'���G& �"�E�"E�)��"�"'���G&�X"���&��@�� '��" ��%Y�����Z��� W�'���G&X</body></html>

Salve como ex1.htmlAo abrir a página, será exibida logo de cara uma mensagem como esta:

Dê um OK para fechar a caixa de mensagem.Este recurso será utilizado para exibir o sucesso de alguma operação ou

falha em alguma execução feita pelo PHP, o que torna o processo mais limpo �������������

Page 19: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 13

location.replace Redireciona automaticamente a página para outra ou para a mesma.������2�2��:���������������� ��A resposta é sim.Contudo, o comando header deve ser chamado antes que qualquer saída

��_������ �����_��������script JavaScript, seja até mesmo linhas em branco, o que limita o seu uso. Por esse motivo, será dada prioridade à utilização de location.replace do JavaScript, já que não há limitação em seu uso.

Exemplo com o uso de header:��� �[���������¨�����¨®®����� ����� ��������#®�\�Vejamos um exemplo com JavaScript:

<html><head><title>Título da página</title></head><body>W'���G& �"�E�"E�)��"�"'���G&�X "���&��@��� �"%�' G"�" � %�� '�&�Z������"&���O��G�"�����&&G[��\\\O�����E�������"O��%O������</script></body></html>

Salve como ex2.htmlAo abrir essa página, a mesma irá direcionar para o endereço proposto:

www.rodrigocordula.com.br.

TRABALHANDO COM FORMULÁRIOSAntes de trabalharmos com formulários, vamos relembrar alguns de seus

conceitos:<form action=”” method=”” enctype=””>

Onde:�� Action: Nome do script que receberá os dados do formulário ao ser

submetido.�� Method:����� �� ������� ��� � ��¨�«������2������ Enctype: Formato em que os dados serão enviados. O default é

������ � ��%����������<�� �������������� ������������ �[���\������preciso utilizar o tipo multipart/form-data.

Diferença entre GET e POSTNo método POST, os dados são incluídos no corpo da mensagem e envia-

dos ocultamente ao servidor para serem processados, ao contrário do método

Page 20: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

14 — PHP e Ajax - Direto ao ponto

«¢����� ����� � ����:�����$� �����K�������� ����������������������Uma requisição por meio do método POST sempre requer que as informa-

!"��� ��#���� ��� ��_��� ������ ��� ���������query string, além de conter ��#�!������� ������������������� ��������������[9������'������\���������-�����[9������'�G��\��

Exemplo de envio de dados pelo método POST:POST /index.html HTTP/1.0Accept: text/html*�'�� ��� '�����¨�%�����¯�M����±�����¨}�¨���«��9������'�G��¨������������®$'���'���'������ � 9������'������¨��¯Nome=Rodrigo&Idade=30&Curso=Computação

Exemplo de envio de dados pelo método GET:http:/ /www.exemplo.php?Nome=Rodrigo&Idade=30&Curso=

ComputaçãoVamos a um pequeno exemplo de como enviar e resgatar dados pelo PHP.

Primeiro, criaremos um formulário, onde haverá dois campos do tipo texto, nome e sobrenome. Perceba que o atributo name é muito importante, pois através dele é que iremos resgatar os dados que serão submetidos.

form.html<html><head><title>Formulário</title></head><body> <form action=”teste.php” method=”post”> K�%�[ W��G�& &]G�)J&��&J �"%�)J��%�J �XW�� �X ������%�[ W��G�& &]G�)J&��&J �"%�)J'������%�J �XW�� �X W��G�& &]G�)�'��%�&� �"���)����"�� �X </form></body></html>

Perceba que $_REQUEST está sendo responsável por resgatar os dados que foram submetidos do formulário para a página teste.php.

teste.php<html><head><title>Formulário</title></head><body><?php

Page 21: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 15

(��%� ) (^_`jkz���%��{� ('������%� ) (^_`jkz�'������%��{� echo ‘Seu nome é ‘.$nome.’ e possuo o sobrenome ‘.$sobrenome;?></body></html>

Nota: Perceba que eu resgato os dados do formulário com $_RESQUEST, com base no valor contido no atributo name do formulário. Para que funcione de forma adequada, devo digitar exatamente como se apresenta no formulário. Desta forma, se eu digitar Rodrigo no campo nome e Cór-dula no campo sobrenome, a saída será:

Seu nome é Rodrigo e possuo o sobrenome Córdula.

Importante: Não utilize valores nos atributos name com espaço ou use caracteres especiais, pois seu uso pode ocasionar falha no resgate dos dados.

$_REQUEST[ ] pode recuperar tanto dados $_POST[ ] como $_GET[ ], mas por motivos de segurança, evite o seu uso. Se eu usar campos normais ou ocultos, tais como produto, valor, desconto (oculto), e enviá-los pelo método ��������� ���� ���������������� �� �������������K����2���$������������método de resgate for $_RESQUEST, será possível colocar 99% de desconto!

Elementos do formulárioTodo elemento do formulário precisa de um valor no atributo name para

ser resgatado. Alguns ainda podem vir com o atributo value já com o valor �� ���� �������������������������������������� �������������������´#�$��radio e hidden.

A tag input é a mais usada, pois a mesma possibilita, com a propriedade �G���� ���� ������ ���������� �� ����������� ����� ����� �� ������ �� ��$���[��$�\�� ��������[������ \��#��"��� ������!:������������$�������[� ��\�� ��seleção múltipla (checkbox), botão para submeter (submit) o formulário, lim-���[����\������������������ ������� ���������[���\��

Campo de texto <input type=”text” name=”CT” value=”texto” maxlength=”15”>

Value - O valor inicial que é apresentado no campo de texto.

Page 22: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

16 — PHP e Ajax - Direto ao ponto

��$�������'�0������� � ����$���� ����������������������������:�� �� ������������������<� ����������<�!:�� ������������ ��� � ���������#�����de dados.

Campo de texto com caracteres não revelados <input type=”password” name=”CT” value=”senha” maxlength=”15”>

Caixa de mensagem <textarea name=”mensagem” >Textarea</textarea>

Caixa de seleção única <select name=”selecao1” > <option value=”atari”> Atari</option> <option value=”Master System”>Master System</option> <option value=”Nitendo”>Nitendo</option> <option value=”Megadrive”>Megadrive</option> <option value=”Super Nitendo”>Super Nitendo</option> W�G&��� �"���)J:}@JX:}@W��G&���X <option value=”Neo Geo”>Neo Geo</option> <option value=”Playstation”>Playstation</option> <option value=”Sarturno”>Sarturno</option> W�G&��� �"���)J�"E�"� ��JX�"E�"� ��W��G&���X <option value=”Nintendo 64”>Nintendo 64</option> <option value=”XBox”>XBox</option> <option value=”Playstation2”>Playstation2</option> <option value=”Nitendo Cube”>Nitendo Cube</option> <option value=”Playstation3”>Playstation3</option> <option value=”XBox 360”>XBox 360</option> <option value=”Wii” selected>Wii</option> </select>

Cada option é uma opção que pode ser selecionada e cada uma possui um ����[����\������������¡������� ����#������������������������������-nado será resgatado pelo nome (name) de select.

Por exemplo, no caso de selecionar Xbox 360, o valor (value) do mesmo será Xbox 360 e no caso de enviar o formulário, esse valor poderá ser resga-tado pelo nome de select, que é selecao1.

Pode-se ainda usar multiple para select, tornando-o uma caixa de seleção múltipla. E ainda é possível controlar a quantidade de campos a serem exibi-dos com a propriedade size.

<select name=”selecao1” multiple size=”5” > <option value=”atari”> Atari</option> <option value=”Master System”>Master System</option> …</select>

Page 23: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 17

Seleção de um arquivo para envio W��G�& &]G�)J���J �"%�)J"�F����J �X

Assemelha-se a um campo de texto com o acréscimo de um botão ao lado, normalmente rotulado de ‘procurar’ no IE (Internet Explorer) e ‘Selecionar 0�����������<�����B����$����������������������������_����������������um arquivo.

����������!����������������<input type=”checkbox” name=”nome” value=”conteúdo a ser enviado” �������X@�

Pode já estar selecionado com o uso de checked ou não, se o mesmo estiver ausente. O valor só poderá ser resgatado se o campo estiver marcado.

Checkbox é de seleção múltipla, podendo marcar ou desmarcar a opção.

Campos de seleção única <input type=”radio” name=”nome” value=”conteúdo a ser enviado” checked>Radio

Funciona da mesma forma que o elemento anterior, contudo sua seleção é única ou exclusiva, obviamente estando todos os elementos de radio partici-pantes com o mesmo nome (name).

L������� ���� �$������ ������� � ���� ���� ��� ���������� ��!"��¨� ���� ���divorciado e solteiro. Ao marcar casado e, em seguida, se o usuário quiser marcar solteiro, o que estava marcado antes será desmarcado, marcando logo �������� ��������������������#��� ����������������#�� �������� ������radios que fazem parte deste grupo devem possuir o mesmo nome (name).

"����#����������M��#��"������ ����������������:���������������������!:�����������

só terá alguma utilidade se estiver atrelado a um script JavaScript, por exemplo.

Todo elemento de botão deve iniciar com <button> e ao terminar de acres-centar o conteúdo ao mesmo, deve ser fechado </button>.

Ex:

<button>@��� �'&� Q �% W�X��&L�W��X<br /><br />Posso colocar quebras de linha nele!<hr />WG '&]��)J�����[�����JX�%"E��'W�GX<img src=”imagem.gif” width=”273” height=”272” alt=””></button>

Page 24: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

18 — PHP e Ajax - Direto ao ponto

Submetendo os dados do formulárioW��G�& &]G�)J'��%�&J �"���)J���"�JX

Cria um botão com o rótulo ‘Enviar’ que, ao ser clicado, submete os dados do formulário.

Resetando os dados do formulário<input type=”Reset” value=”Apagar tudo”>

Cria um botão com o rótulo ‘Apagar tudo’ que, ao ser clicado, limpa os dados do formulário.

Criando formulários com preservação de dadosA preservação de dados é importante, pois ao submeter o formulário, ele

pode retornar um erro porque faltou ainda preencher algo ou algo foi preen-chido de forma incorreta.

Para evitar que o usuário seja obrigado a preencher novamente os campos, será necessário o uso do sistema de preservação de dados, que é bastante simples.

Se eu envio os dados pelo método post para resgatá-lo, utilizo $_POST. Fazemos isso então no atributo value nos campos do formulário e, desta forma, ��� � ��� ��#���� ��� ���:�� ����� ��� ��� ����� ���������� ������� ��formulário.

Nesta última versão do Xampp 1.7.7-VC9, o padrão de depuração de erros tem o E-NOTICE ativado.

O E-NOTICE basicamente alerta que uma variável se encontra vazia; o que em minha opinião, torna-se algo mais incomodo do que uma ajuda ao programador; já que muitas vezes se faz necessário a criação e manipulação de variáveis nulas.

Para retornar ao sistema de depuração padrão do PHP, você pode sim-plesmente acrescentar em seu script:

error_reporting(E_ALL ^ E_NOTICE);Que faz com que reporte todos os erros exceto E_NOTICE.

ImportanteEste é o padrão adotado entre os servidores de hospedagem.Ou simplesmente vá em C:\xampp\php, se instalou no caminho padrão

recomendado na instalação do xampp, e procure pelo arquivo php.ini e na linha 516, altere error_reporting = E_ALL | E_STRICT para error_reporting = E_ALL & ~E_NOTICE

Page 25: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 19

Você também poderá controlar que tipos de mensagens de erros poderão vim a ser exibidas, acrescentado a função error_reporting e listando com a separação de uma barra aqueles que lhe interessam, exemplo:

error_reporting(E_ERROR | E_WARNING | E_PARSE );Ou simplesmente colocar error_reporting(0), no seu script; para que

nenhuma mensagem de erro seja exibida.Para se ter uma lista completa e a explicação da funcionalidade de cada

um, acesse:http://www.php.net/manual/pt_BR/errorfunc.constants.php

Campo de textoNome <input type=”text” name=”nome” value=”<?php

���� (^�@kz���%��{�� �XJ %"����E&�)J�,JX

Campo ocultoEste tipo de campo não aparece no formulário, serve mais para descobrir,

se o formulário foi enviado ou não.Se o campo oculto de nome enviou tiver o valor true é por que os dados do

formulário foram submetidos.

<input type=”hidden” name=”enviou” value=”true” />

����������!���������������No atributo name, coloquei o nome do elemento mais a abertura e fecha-

mento de cochetes ‘[]’, o que o torna este elemento um vetor.Vetor é uma variável, capaz de armazenar mais de um valor. Cada valor que ele armazena oculpa uma posição do vetor.¢���������!"����:�������� ���������������� ��¨�Primeiro valor atribuído se recupera com 0 (zero), segundo valor com 1,

terceiro com 2 e assim por diante.Então se eu criar um vetor da seguinte forma:$rpg [ ] = ‘D&D’;$rpg [ ] = ‘AD&D’;$rpg [ ] = ‘D&D4.0’;E quiser mostrar o valor AD&D. Eu eu escreveria da seguinte forma:echo $rpg[1]; //Saída será AD&D 4��`������ �����������������������������<���0�� �������<�����������!:����©��G������������������������ ���-

minado dado em uma matriz, retornando um valor booleano.O valor booleano retorna sempre TRUE, se uma determinada condição for

� � �������B0�%¢��������� �!:�����������

Page 26: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

20 — PHP e Ajax - Direto ao ponto

Ex:

W�G�G �#�Z�%G&]�(�����'�� �#���^"��"]���"G������� (�����'�� ���� ‘checked’; ?>

M�������������������������������������������:��������������<������������ ��������� � ����[��K¢\����������[B0�%¢\��������������*B�possur uma condição verdadeira, ou seja, a variável $livros possuir algum ������� ��� ������������������������������ ��*B���������������������Papillon����������� �������������������������������������� ����©��G�será TRUE. Sendo TRUE o IF é executado, que nada mais é que acrescentar checked ao input (���� ������������������������� � ������������$��de seleção.

%������������������� ���������������!"���������������������� �����do livro você entenderá melhor.

��K�'&" ����" �� ����G���� � ���%��&� �����'� '�% � �'� �� ������&�'� F�� Q �% ��&�� �� "��"] � "&����� " �"������ (�����'� F�� "�&�%�&��"%��&� &���"Y'� &"%�Q% �% "��"] G"�" ��%G��&"� �' �"��' F�� #��"% ��'E"&"��'O��W�G�G (�����' ) (^�@kz������'�{� �XLivros preferidos foram?<br />

��������� '� �% ��' �"����' ���&���' �" �"������ (�����'� G�''�� � �"��� ����� �� ��"� '� ��U� ��&���"� ����"����� �k_j�� ��&L� ��� "���'���&"� " G��G����"�� ������� �� ��G�& ����� ������������ F�� &�% " #������"���"�� �� %"��"� " �"��" �� '����L�� %"' "�&�' ������� '� " �"������ �����'� G�''�� "�E�% �"���� �� '��"� '� Q ��#����&� �� �"��� �Z�%G&]���W��G�& &]G�)J��������J �"%�)J�����'z{J W�G�G �#�Z�%G&] �(�����'�� �#���^"��"]������� �� ��"�� (�����'�� ���� ���������� �X �"���)J����� �� ��"J �X����� �� ��"W�� �X

//Da mesma forma ocorre com os demaisW��G�& &]G�)J��������J �"%�)J�����'z{J W�G�G �#�Z�%G&] �(�����'�� �#���^"��"]��}�% `����&��� (�����'�� ���� ���������� �X �"���)J}�% `����&�J �X}�% `����&�W�� �XW��G�& &]G�)J��������J �"%�)J�����'z{JW�G�G �#�Z�%G&] �(�����'�� �#���^"��"]���"G������� (�����'�� ���� ���������� �X �"���)J�"G�����J />Papillon<br />

Caixa de seleção única Quantidade de livros que li em minha vida

<select name=’lidos’> <option>Selecione</option> ���"������ ��% � "�&������ ������" '� � ���%��&� ��'E"&"�� �����'� G�''�� � �"��� �Y�� �� '��"� '� Q �E�"� �))�� �"'� "��%"&��� �k_j�� "���'���&" � '����& "� �G&���� � F�� #"� ��% F�� � ���%��&� �F�� selecionado; do contrário não faz nada*/

Page 27: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 21

W�G&��� W�G�G �#�(^�@kz�����'�{))��Y��� ���� �'����&�����X �"���)��Y��X�Y�W��G&���X //Da mesma forma ocorre aos demais W�G&��� W�G�G �#�(^�@kz�����'�{))�,Y���� ���� �'����&�����X �"���)�,Y���X,Y��W��G&���X W�G&��� W�G�G �#�(^�@kz�����'�{))���YD��� ���� �'����&�����X �"���)���YD��X��YD�W��G&���X W�G&��� W�G�G �#�(^�@kz�����'�{))��"�' �� D��� ���� �'����&�����X value=’Mais de 20’>Mais de 20</option></select>

Campos de seleção única Desenho que mais gostei<br />

���"������ ��% � "�&������ ������" '� � ���%��&� ��'E"&"�� ���'����� G�''�� � �"��� �"����" �� }�"EL�� �� '��"� '� Q �E�"� �))�� �"'� "��%"&��� �k_j�� "���'���&" � ������� "� ��G�&� � F�� #"� ��% F�� � ���%��&� �F�� '�������"��� �� ���&����� �L� #"� �"�"�� W��G�& &]G�)J�"���J �"%�)J��'����J W�G�G �#�(^�@kz���'�����{))��"����" �� }�"EL��� ���� ���������� �X �"���)J�"����" �� }�"EL�J �X�"����" �� Dragão<br />W��G�& &]G�)J�"���J �"%�)J��'����J W�G�G �#�(^�@kz���'�����{))�k������ �"&'�� ���� ���������� �X �"���)Jk������ �"&'J �Xk������ �"&'W�� �XW��G�& &]G�)J�"���J �"%�)J��'����J W�G�G �#�(^�@kz���'�����{)) �������"\�'�� ���� ���������� �X �"���)J������"\�'J �X������"\�'W�� />W��G�& &]G�)J�"���J �"%�)J��'����J W�G�G �#�(^�@kz���'�����{))�k��%" �� ��"���� ���\��� ���� ���������� �X �"���)Jk��%" �� ��"���� ���\�J />Turma do Charlie Brown<br />

Caixa de mensagem M#���!"��¨<br />

������ � F�� #�� ��'E"&"��� �" �"��" �� %��'"E�%� F�"��� � #��%������ foi submetido*/W&��&"��" �"%�)J%��'"E�%J ���')�,�� XW�G�G ���� (^�@kz�%��'"E�%�{� ?></textarea>

Digamos que marcamos os campos e desejamos recuperá-los na mesma página; então acrescentamos ainda o seguinte script:

<?php��������" '� �' �"%G�' ��%� � '���" �'&L� G���������'�#�Z�%G&]�(^�@kz���%��{� �� Z�%G&]�(^�@kz�'���"�{��{ (��%� ) (^�@kz���%��{� ('���" ) (^�@kz�'���"�{� (����' ) (^�@kz�����'�{� (��'���� ) (^�@kz���'�����{� (%��'"E�% ) (^�@kz�%��'"E�%�{�

Page 28: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

22 — PHP e Ajax - Direto ao ponto

�� � #�%�L� �%G���� ���&" �' ���%��&�' �� �%" %"&���� '�G"�"���Y�' ��% �B�E��" �G��%���� G"��%�&�� �" #���L����(�����'^G��#�����' ) �%G������� ��(�����'^G��#�����'�� ���� �K�%�[(��%� W�� �X���"[ ('���"W�� �X�����' G��#�����'[ (�����'^G��#�����'W�� �X`�"�&��"�� �� �����' ����'[ (����'W�� �X}�'���� #"����&�[ (��'����W�� �X@�'���"���'[ $mensagem”;}��}� ���&������ ������" '� � #��%������ #�� '��%�&��� ��% �"'� �" existência de algum valor do elemento oculto de nome enviou*/ ��'� �#�Z�%G&]�(^�@kz��������{��{ ���"'� "��%"&���� ����� �%" %��'"E�% "��'"��� '���� � G�����%"�� ���� �W'���G& &]G�)J&��&��"�"'���G&JX"���&��@' �"%G�' ��%� � '���" ����% �'&"� G���������'ZJ�� W�'���G&X ��}?>

K����<����������!:������� �������G������������_������������������ ��um vetor em uma única string (texto).

O primeiro argumento da função é separador, que faz com que os valores ����G������������ ����������������������������� ���������������própria matriz.

$livros = implode(‘, ‘,$livros);No nosso exemplo estamos separando os valores com vírgula e espaço ‘, ‘.Apartir do PHP 4.3.0, o parametro de separação da função implode() é

opcional e seu padrão é uma string em branco(‘’).

Page 29: PHP e Ajaxrakuten.livrariacultura.com.br/imagem/capitulo/42161107.pdf · mente utilizada, sobretudo no ambiente Web; existe a versão PHP - GTK para o ambiente de programação desktop.

PHP — 23

A saída será:Nome:Rodrigo Córdula Senha: 123456���������� ��¨���� �� ��%�����M�B��� ��¡�������M�¡���� ��������

L���&��$�����0�L�����9��� ��� ��L�������� ���� ����������� ��0������¢��µ����� �������0���������������#���������2�������

M#���!"��¨�«������� ���������������������� ��9����� ��L��:�Um exemplo pode ser visto no CD (PHP/ex1 - index.php).

OPERADORES CONDICIONAIS E LOOPSIf/else e else if

Como já foi comentado anteriormente, o if só realizará os comandos per-tencentes ao mesmo se a condição imposta for verdadeira, ou seja, TRUE.

�#�������L�� //Realiza uma ação

Se houver mais de uma linha de comando pertencente a if, então devere-mos utilizar chaves para que se entenda onde inicia e termina o conjunto de �����!"�����������������������

�#�������L��{ ��������&� �� ��'&�����'}

Há ainda o else if (do contrário se). Poderemos colocar vários else if na �������������������������������� �!"���������]����������$����� ������for verdadeira, e as demais serão ignoradas.

4��`���� ���� ����������������� �!:����������������������]������$���-�� ���������� �!:�� ��� ��� ������������������� ������ �!"�������� �����������ventura, venham a existir, também for falsa. Vamos a um exemplo:

<?php�#�(�X��{ echo ‘X é maior do que zero’;}��'� �#�(�W��{ echo ‘X é menor do que zero’;}else{