Mini Curso PHP On‐Line – Nível Básico – v 1.0 Níível Bá ásico Mini Curso PHP On‐Line – Nível Básico – v 1.0 Índice Índice Apresentação Introdução à programação em PHP Breve história do PHP Tarefas Principais do PHP Funções de correio eletrônico Gestão de bases de dados Gestão de Arquivos Tratamento de Imagens Instalação do PHP no nosso servidor Instalação do PHP e Apache no Windows XP Uso do PHPeditor Introdução à sintaxe PHP Variáveis em PHP Variáveis de sistema em PHP Variáveis superglobais Tabelas ou Arrays em PHP Cadeias (strings) Uso de caracteres espeíficos em strings Exercício 1 Controle do fluxo em PHP: Condições IF Controle do fluxo em PHP: Loops Loop While Loop for Loop foreach Operadores Operadores aritméticos Operadores de comparação Operadores lógicos Operadores de incremento Operadores combinados Passagem de variáveis pela URL Processar variáveis de formulários Autochamada de páginas Carregar uma aplicação PHP ao servidor Como colocar os Arquivos PHP fora do diretório de publicação Exercício Final Conclusão 2 3 3 4 5 5 5 5 5 6 6 6 7 9 10 11 12 13 14 15 16 18 18 20 20 21 21 21 22 22 22 22 24 26 28 29 31 34 Mini Curso PHP On‐Line – Nível Básico – v 1.0 Apresentação Iniciamos aqui nossa primeira etapa do mini-curso On-Line de PHP. Esperamos que todos gostem e venham obter o máximo de conhecimento possível através deste material. Em caso de dúvidas, envie as mesmas para: [email protected] Dos direitos autorais Este material é o resultado de diversas fontes de pesquisa na internet e conhecimentos próprios, porém durante a pesquisa e montagem não me lembrei de colocar as fontes de pesquisa e autores de determinadas partes da apostila, portanto, caso alguém veja conteúdo próprio neste material e não teve seu nome citado favor informar em meu e-mail citado acima qual o conteúdo de sua autoria pois estarei providenciando os méritos neste material. Esta apostila é de uso didático sem fins lucrativos, fazendo parte do projeto de inclusão digital da 4P Soluções. A mesma pode ser distribuída gratuitamente desde que sejam mantidos sua integridade de conteúdo. Montagem e adaptação: Eudson Fonseca – [email protected] Colaboração: Josué Camelo dos Santos – [email protected] Programação em PHP Introdução à programação em PHP PHP é uma das linguagens do lado do servidor (os scripts em PHP sã executados diretamente no servidor hospedeiro, diferentemente do JavaScript que roda direto no browser do cliente) mais utilizadas da Web. Nascida em 1994 trata-se de uma linguagem de criação relativamente crescente que teve uma grande aceitação pela comunidade de Webmasters, sobretudo pela potência e simplicidade que a caracterizam. PHP permite-nos embeber os seus pequenos fragmentos de código dentro da página HTML e realizar determinadas tarefas de uma forma fácil e eficaz sem ter de implementar programas programados na íntegra numa linguagem diferente de HTML. Por outro lado, é aqui que reside o seu maior interesse relativamente às outras linguagens pensadas para os CGI, o PHP oferece inúmeras funções para a exploração de bases de dados de um modo fácil, sem complicações. Poderíamos efetuar a comparação de dizer que PHP e ASP são linguagens parecidas em quanto à potência e dificuldade se bem que a síntese pode diferir sensivelmente. Algumas diferenças principais podem, mesmo assim, mencionar-se: PHP, ainda que multiplataforma, foi desenhado inicialmente para sistemas UNIX e é neste sistema operativo que se pode aproveitar melhor as suas prestações. ASP, sendo uma tecnologia Microsoft, está orientado para sistemas Windows. O ASP realiza numerosas tarefas servindo-se de componentes (objetos) que devem ser comprados (ou programados) pelo servidor a determinadas empresas especializadas. PHP têm uma filosofia totalmente diferente e, com um espírito mais generoso, é construído progressivamente por colaboradores desinteressados que implementam novas funções em novas versões da linguagem. Este manual está destinado a todos os que quiserem começar do zero na aprendizagem desta linguagem e que estejam à procura da sua utilização direta no seu projeto de Site ou no seu Site HTML. Os capítulos são extremamente simples, sem ser simplistas, procurando ser acessíveis à maioria. Eles podem ser complementados posteriormente com outros artigos de maior nível, destinados à gente mais experiente. Mini Curso PHP On‐Line – Nível Básico – v 1.0 A forma como relatamos este manual faz com que este seja acessível a qualquer pessoa não familiarizada com a programação. Mesmo assim, é possível que em determinadas alturas alguém que nunca tenha programado se veja um pouco desorientado. O nosso conselho é de não querer perceber tudo antes de passar ao capítulo seguinte, mas sim de tentar assimilar alguns conceitos e voltar a trás quando surgir uma dúvida ou nos tenhamos esquecido de algum detalhe. Nunca faz mal ler várias vezes o mesmo até que fique bem gravado e assimilado. Esperamos que este manual seja do vosso agrado e que se corresponda às nossas expectativas: O poder aproximar o PHP a todos os amantes do desenvolvimento de Web que querem dar o passo às Webs ¨profissionais¨. Breve história do PHP PHP é uma linguagem criada por uma grande comunidade de pessoas. O sistema foi desenvolvido originalmente no ano 1994 por Rasmus Lerdorf como um CGI escrito em C que permitia a interpretação de um número limitado de comandos. O sistema foi denominado Personal Home Page Tools e adquiriu um relativo êxito pelo que outras pessoas pediram a Rasmus que lhes permitisse utilizar os seus programas nas suas próprias paginas. Devido à aceitação do primeiro PHP e de maneira adicional, o seu criador desenhou um sistema para processar formulários ao qual deu o nome de FI (Form Interpreter) e o conjunto destas duas ferramentas, seria a primeira versão compacta da linguagem: PHP/FI. A seguinte grande contribuição à linguagem foi realizada a meados de 97 quando se voltou a programar o analisador sintático. Acrescentaram-se novas funcionalidades como o suporte de novos protocolos de Internet e o suporte da grande maioria de bases de dados comerciais. Todos estes melhoramentos constituíram a base do PHP versão 3. A versão atual de PHP é a versão 5, que utiliza o motor Zend, desenvolvido com maior meditação para cobrir as necessidades atuais e solucionar alguns inconvenientes da versão anterior. Alguns melhoramentos desta nova versão são a sua rapidez, pois agora primeiro compila-se e depois executa-se, quando antes se executava ao mesmo tempo que se interpretava o código. Outra qualidade é a sua independência do servidor Web, criando versões de PHP nativas para mais plataformas, e também um API mais elaborado e com mais funções. Neste último ano, o número de servidores que utilizam PHP aumentou, conseguindo situar-se perto dos 5 milhões de Sites e 800.000 endereços IP, o que converteu PHP numa tecnologia popular. Isto deve-se, entre outras razões, ao fato de PHP ser o complemento ideal para que o LinuxApache seja compatível com a programação do lado do servidor de sítios Web. Devido à aceitação que conseguiu, e o grande esforço realizado por uma crescente comunidade de colaboradores para tentar conseguir uma implementação ótima, podemos assegurar que a linguagem irá converte-se num standard que compartilhará os êxitos augurados ao conjunto dos sistemas desenvolvidos em código aberto. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Tarefas Principais do PHP Pouco a pouco o PHP vai-se convertendo numa linguagem que nos permite fazer de tudo. Num princípio desenhado para realizar pouco mais do que um contador e um livro de visitas, PHP experimentou em pouco tempo uma verdadeira revolução e, a partir das suas funções, neste momento pode realizar-se um grande número de tarefas úteis para o desenvolvimento Web: Funções de correio eletrônico Podemos com uma facilidade assombrosa enviar um e-mail a uma pessoa ou lista parametrizado toda uma série de aspectos tais como o e-mail de procedência, assunto, pessoa a responder... Outras funções menos freqüentes, mas de indiscutível utilidade para a gestão de correios eletrônicos são incluídas na sua livraria. Gestão de bases de dados Torna-se complicado criar um Site atual, potente e rico em conteúdo que não é gerido por uma base de dados. A linguagem PHP oferece interfaces para o acesso à maioria das bases de dados comerciais e por ODBC a todas as bases de dados possíveis em sistemas Microsoft, a partir das quais poderemos editar o conteúdo do nosso Site com uma simplicidade absoluta. Gestão de Arquivos Criar, apagar, mover, modificar... qualquer tipo de operação mais ou menos razoável de que nos possamos lembrar pode ser realizada a partir de uma ampla livraria de funções para a gestão de Arquivos PHP. Também podemos transferir Arquivos por FTP a partir de comandos no nosso código, protocolo para o qual PHP previu também grande quantidade de funções. Tratamento de Imagens Evidentemente é muito mais simples utilizar Photoshop para o tratamento de uma imagem mas... e se temos de tratar montes de imagens enviadas pelos nossos cibernautas? A verdade é que pode ser chato uniformizar em tamanho e em formato várias imagens recebidas todos os dias. Tudo isto pode ser automatizado eficazmente a través de PHP. Também pode parece útil criar botões dinâmicos, isto é, botões em que utilizamos o mesmo design e só mudamos o texto. Poderemos por exemplo criar um botão fazendo uma única chamada a uma função em que introduzimos um estilo do botão e o texto a introduzir obtendo automaticamente o botão desejado. A partir da livraria de funções gráficas podemos fazer isto e muito mais. Muitas outras funções pensadas para a Internet (tratamento de cookies, acessos restringidos, comercio eletrônico...) ou para propósito geral (funções matemáticas, exploração de cadeias, de datas, correção ortográfica, compressão de Arquivos...) são realizadas por esta linguagem. A esta imensa livraria só resta agregar todas as funções pessoais que vamos criando por necessidades próprias e que logo são reutilizadas noutros Sites e todas aquelas trocadas e obtidas em foros e Sites especializados. Como vemos, as possibilidades que nos oferece são surpreendentes. Só é necessário um pouco de vontade de aprender e um pouco de paciência nos nossos primeiros passos. O resultado pode ser muito satisfatório. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Instalação do PHP no nosso servidor Como todas as linguagem do lado do servidor, PHP requer uma instalação de um servidor no nosso PC para poder trabalhar em local. Este modo de trabalho torna-se mais pratico do que colocar os Arquivos por FTP no servidor e executá-los a partir da Internet. Desta maneira, antes de começar a criar os nossos programas em PHP é necessário: Transformar o nosso computador num servidor. Isto faz-se instalando um dos vários servidores disponíveis para o sistema operativo da nossa máquina. Introduzir no nosso servidor os Arquivos que lhe permitem a compreensão do PHP. Estes Arquivos podem ser obtidos, na sua versão mais atual, na página oficial do PHP. Para ficar a conhecer a forma de instalar PHP sobre cada servidor de cada sistema operativo podemos ir ao apartado de documentação da página oficial de PHP onde podemos consultar um manual em HTML de rápida consulta e um enorme manual em PDF de quase 1000 páginas que explica de minuciosamente entre outras coisas, os passos a seguir para cada caso particular. De qualquer forma, nós vamos oferecer algumas ajudas para configurar PHP nos sistemas mais comuns. A eleição do nosso programa servidor terá muito que ver com o sistema operativo que tenhas a funcionar no teu computador. Estas seriam algumas possibilidades de sistemas operativos e soluções que funcionam bem. Instalação do PHP e Apache no Windows XP Como vimos anteriormente o PHP é uma linguagem que roda direto no servidor, portanto, para que possamos estudar os recursos desta poderá linguagem precisamos de um servidor WEB que pode ser um servidor profissional ou então seu próprio computador, que é a maneira que estaremos estudando, ou seja, seu computador se tornará um servidor WEB, não para uso profissional, mas para fins de desenvolvimento e aprendizado. Veja o tutorial completo para instalação do Apache + PHP + MySQL + PHPMyadmin: www.kaizeninformatica.com/index.php?mod=dicas1 Uso do PHPeditor Para a edição de nossos arquivos em PHP recomendamos o uso de um software gratuito, o PHPeditor que é muito eficiente na programação. Clique no link abaixo para download do mesmo: www.phpgratis.com.br/editores/php-editor-gratis Mini Curso PHP On‐Line – Nível Básico – v 1.0 Introdução à sintaxe PHP PHP escreve-se dentro da própria página Web, junto ao código HTML e como para qualquer outro tipo de linguagem incluído num código HTML, em PHP necessitamos de especificar quais são as partes constituintes do código escritas nesta linguagem. Isto faz-se, como em outros casos, delimitando o nosso código por etiquetas. Podemos utilizar diversos modelos de etiquetas em função das nossas preferências e costumes. Há que ter em conta que não necessariamente todas estão configuradas inicialmente e que outras só estão disponíveis a partir de uma determinada versão (3.0.4). A maneira de abrir e fechar as etiquetas são: <? ?> <?php ?> <script languaje="php"> Este último modo está principalmente aconselhado a todos aqueles que tenham a coragem de trabalhar com o Front Page, pois usando qualquer outra etiqueta corremos o risco que a aplicação no-la apague sem mais nem menos pois trata-se de um código incompreensível para ela. O modo de funcionamento de uma página PHP, a grandes rasgos, não difere do clássico de uma página dinâmica do lado do servidor: O servidor vai reconhecer a extensão correspondente a página PHP (phtml, php, php4,...) e antes de enviá-la ao navegador vai encarregar-se de interpretar e executar tudo aquilo que se encontre entre as etiquetas correspondentes a linguagem PHP. O resto, vai enviá-lo tal qual, posto que assumirá que se trata de código HTML absolutamente compreensível para o navegador. Outra característica geral dos scipts em PHP é a forma na qual se separam umas sentenças das outras. Para faze-lo, temos de acabar cada sentença com um ponto e virgula ";". Para a ultima sentença, a que vai mesmo antes do etiqueta de fecho, não seria necessário. Incluímos também neste capitulo a sintaxe de comentários. Um comentário, para aqueles que não o saibam, é uma frase ou palavra que nós incluímos no código para compreende-lo mais facilmente ao voltar a lê-lo um tempo mais tarde e por suposto, o computador tem de ignorar pois não vai dirigido a ele, se não a nós mesmos. Os comentários tem uma grande utilidade pois é muito fácil esquecer-se do funcionamento se um script programado faz algum tempo sendo muito útil se queremos fazer rapidamente compreensível o nosso código a outra pessoa. Pois bem, a forma de incluir estes comentários varia conforme o tamanho do comentário, isto é se queres escrever uma linha ou mais. Vejamos um primeiro exemplo de script em PHP: Na pasta raiz crie um arquivo chamado comentario.php e insira o seguinte conteúdo no mesmo. <HTML> <HEAD> <TITLE>SCRIPT EM PHP</TITLE> </HEAD> <BODY> <? $mensagem="Meu primeiro script em PHP"; //Comentário de uma linha echo $mensagem; #Este comentario também é de uma linha /*Neste caso o meu comentário ocupa varias linhas, estás a ver? */ ?> </BODY> </HTML> Mini Curso PHP On‐Line – Nível Básico – v 1.0 Logo depois de inserir o código usando o PHPeditor, o mesmo estará semelhante ao mostrado abaixo: Veja o resultado abrindo seu browser e digitando o seguinte endereço: http://localhost/comentario.php Observe bem o código e guarde os padrões, sempre que for iniciar um novo arquivo, clique em arquivo > novo no PHPeditor que o mesmo inicia os padrões HTML automaticamente, pois a partir de agora passaremos somente o código PHP. Se usarmos dupla barra (//) ou o símbolo # podemos introduzir comentários de uma linha. Mediante /* e */ criamos comentários multilinha. Claro que, nada nos impede de usar os últimos com uma só linha. Não te preocupes se não compreendes o texto contido nas etiquetas, tudo chegará. Adiantamos que as variáveis em PHP definem-se antepondo um símbolo de dólar ($): Exemplos de variaveis em PHP: $nome, $valor, $total... A instrução echo serve para sacar pelo ecrã o que está escrito a continuação, ou seja, ela escreve algo na tela, no nosso exemplo foi escrito o conteúdo armazenado na variável $mensagem. Lembramos que todo o texto introduzido em forma de comentário é completamente ignorado pelo servidor. É importante acostumar-se a deixar comentários, pois com o tempo, você pode precisar fazer correções no código e nesses momentos os comentários são muito úteis. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Variáveis em PHP A variável é uma parte que fica reservada para armazenamento de informações que variam (mudam constantemente) durante a execução do script. Vamos imaginar uma página de cadastro de clientes, você abre esta página e tem um campo nome, com certeza nesta páginas serão cadastrados vários clientes cada um com seu nome, é aí que entra o papel da variável. Podemos, portante, criar uma variável chamada $nome que irá armazenar os nomes digitados. Em PHP, as variáveis são definidas inserindo o símbolo dólar ($) antes do nome da variável que estamos a definir. O tipo da variável irá depender do tipo de informação que a mesma irá armazenar. Variáveis numéricas: São as que armazenam números. Inteiros: São variáveis que armazenam números sem casas decimais: $inteiro= 2007; Real: São variáveis que armazenam números com casas decimais: $real= 3,14159; Variáveis alfanuméricas: São as que armazenam textos compostos de letras e números. Este tipo de variável armazena tudo em forma de texto (strings), ou seja, “5”, por exemplo, é o número cinco e não um valor numérico 5. $mensagem= “Texto ou número qualquer aqui”; Existem diversos outros tipos de variáveis, porém iremos nos reter só as numéricas e alfanuméricas por enquanto, já que para início iremos trabalhar mais só com estes dois tipos. Para quem deseja se aprofundar mais nos tipos de variaveis em PHP, vale dar uma parada por aqui e dar uma olhadinha no manual do PHP na sessão de variáveis. Diferente das outras linguagens, o PHP tem uma grande flexibilidade a hora de operar com variáveis. De fato, quando definimos uma variável dando-lhe um valor, o computador atribui-lhe um tipo. Por exemplo, se definirmos uma variável entre aspas, a variável será considerada de tipo string (de caracteres): $variavel= "5"; //isto é uma string $variavel= 5; //isto é um número Não devemos preocupar-nos com nada, pois o PHP encarrega-se durante a execução de interpretar o tipo de variável necessário para o bom funcionamento do programa, ou seja, não é necessário informar ao PHP que aquela variável que você declarou é do tipo numérica ou alfanumérica, pois o PHP já entende isso observando o valor dado à variável, ou seja, se a variável está entre aspas (" ") ele já sabe que esta é uma variável alfanumérica, se não ele já sabe que a variável é do tipo numérica. Mesmo assim, em contraste, temos de ter cuidado para não mudar maiúsculas por minúsculas, pois neste sentido, PHP é sensível, ou seja, pro PHP Kaizen – kaizen – KAIZEN são valores diferentes. Convém pois trabalhar sempre em maiúsculas ou sempre em minúsculas para evitar este tipo de malentendidos às vezes muito difíceis de localizar. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Variáveis de sistema em PHP Dada a sua natureza de linguagem do lado do servidor, PHP é capaz de nos dar acesso a toda uma série de variáveis para que o cliente envie ou receba dados do servidor. A informação destas variáveis é atribuída pelo servidor e em nenhum caso nos é possível modificar os seus valores diretamente mediante o script. Para fazê-lo é necessário influir sobre a propriedade que definem. Existem várias variáveis deste tipo, algumas sem utilidade aparente e outras realmente interessantes e com uma aplicação direita para o nosso Site. Aqui enumeramos algumas destas variáveis e a informação que nos oferecem: Variável $HTTP_USER_AGENT $HTTP_ACCEPT_LANGUAGE $HTTP_REFERER $PHP_SELF $HTTP_GET_VARS $HTTP_POST_VARS $HTTP_COOKIES_VARS $PHP_AUTH_USER $PHP_AUTH_PW $REMOTE_ADDR $DOCUMENT_ROOT $PHPSESSID Descrição Informa-nos principalmente sobre o sistema operativo e tipo e versão do navegador utilizado pelo cibernauta. A sua principal utilidade radica em que, a partir desta informação, podemos redirecionar os nossos usuários a páginas otimizadas para o seu navegador ou realizar qualquer outro tipo de ação no contexto de um navegador determinado. Retorna-nos a ou as abreviações da língua considerada como principal pelo navegador. Esta língua ou línguas principais podem ser escolhidas no menu de opções do navegador. Esta variável torna-se também extremamente útil para enviar o cibernauta às páginas na sua língua, se é que existem. Indica-nos a URL com a qual o cibernauta teve acesso a página. Muito interessante para gerar botões de "atrás" dinâmicos ou para criar os nossos próprios sistemas estatísticos. Retorna-nos uma cadeia com a URL do script que está a ser executado. Muito interessante para criar botões para recarregar a página. Trata-se de um array que armazena os nomes e os conteúdos das variáveis enviadas ao script por URL ou por formulários GET. Trata-se de um array que armazena os nomes e os conteúdos das variáveis enviadas ao script por meio de um formulário POST. Trata-se de um array que armazena os nomes o os conteúdos das cookies. Veremos o que são mais tarde. Armazena a variável usuário quando se efetua a entrada a páginas de acesso restringido. Combinado com $PHP_AUTH_PW é ideal para controlar o acesso às páginas internas do Site. Armazena a variável password quando se efetua a entrada a páginas de acesso restringido. Combinado com $PHP_AUTH_USER é ideal para controlar o acesso às páginas internas do Site. Mostra o endereço IP do visitante. Retorna-nos o path físico no qual se encontra alojada a página no servidor. Guarda o identificador da sessão do usuário. Veremos mais à frente o que são as sessões. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Nem todas as variáveis estão disponíveis na totalidade dos servidores ou em determinadas versões dum mesmo servidor. Ademais, algumas delas tem de ser previamente ativadas ou definidas por meio de algum evento. Assim, por exemplo, a variável $HTTP_REFERER não está definida a menos que o cibernauta aceda ao script a partir de um link desde outra página. Variáveis superglobais A partir de PHP 4.1.0, dispõem-se de um conjunto de variáveis de tipo array que mantêm informação do sistema, chamadas superglobais porque se definem automaticamente num âmbito global. Estas variáveis fazem referência ás mesmas que se acediam antes por meio dos arrays do tipo $HTTP_*_VARS. Estas ainda existem, ainda que a partir de PHP 5.0.0 podem-se desativar com a diretiva register_long_arrays. A lista destas variáveis, extraída diretamente da documentação de PHP é a seguinte: $GLOBALS Contem uma referência a cada variável disponível no espectro das variáveis do script. As chaves desta matriz são os nomes das variáveis globais. $GLOBALS existe desde PHP 3. $_SERVER Variáveis definidas pelo servidor Web ou diretamente relacionadas com o entorno onde se está a executar.Análoga a antiga matriz $HTTP_SERVER_VARS (a qual ainda está disponível, ainda que não se utilize). $_GET Variáveis proporcionadas ao script por meio de HTTP GET. $HTTP_GET_VARS (que ainda está disponível, ainda que não se utilize). Análoga a antiga matriz $_POST Variáveis proporcionadas ao script por meio de HTTP POST. Análoga a antiga matriz $HTTP_POST_VARS (que ainda está disponível, ainda que não se utilize). $_COOKIE Variáveis proporcionadas ao script por meio de HTTP cookies. Análoga a antiga matriz $HTTP_COOKIE_VARS (que ainda está disponível, ainda que não se utilize). $_FILES Variáveis proporcionadas ao script por meio da subida de Arquivos via HTTP. Análoga a antiga matriz $HTTP_POST_FILES (que ainda está disponível, ainda que não se utilize). $_ENV Variáveis proporcionadas ao script por meio do entorno. $HTTP_ENV_VARS (que ainda está disponível, ainda que não se utilize). Análoga a antiga matriz Mini Curso PHP On‐Line – Nível Básico – v 1.0 $_REQUEST Variáveis proporcionadas ao script por meio de qualquer mecanismo de entrada do usuário e portanto não se pode confiar nelas. A presença e a ordem em que aparecem as variáveis nesta matriz são definidas pela diretiva de configuração variables_order. Esta matriz não tem um análogo em versões anteriores a PHP 4.1.0. Veja também import_request_variables(). $_SESSION Variáveis registradas na sessão do script. Análoga a antiga matriz $HTTP_SESSION_VARS (que ainda está disponível, ainda que não se utilize). Tabelas ou Arrays em PHP Um tipo de variável que pode ser relativamente complicado de assimilar em relação à maioria, são os arrays. Um array é uma variável que está formada de vários elementos, cada um deles catalogado dentro dele mesmo por meio de uma chave. <? $sentido[1]="ver"; $sentido[2]="tocar"; $sentido[3]="ouvir"; $sentido[4]="gosto"; $sentido[5]="cheirar"; ?> Este array é como se imaginássemos uma tabela na horizontal com cinco quadros e cada quadro fosse uma posição, veja: [1] [2] ver tocar array $sentido de 5 posições: [3] [4] ouvir gosto [5] cheirar Neste caso este array cataloga os seus elementos, normalmente chamados valores, por número. Os números do 1 ao 5 são por conseguinte chaves e os sentidos são os valores associados, ou seja, temos um array de 5 posições chamado de $sentido, portanto, a posição [1] recebe a string “ver”, a posição [2] recebe a string “tocar”, a posição [3] recebe a string “ouvir”, a posição [4] recebe a string “gosto ” e a posição [5] recebe a string “cheirar”. Nada nos impede de utilizar nomes (strings) para classificá-los. A única coisa que temos de fazer é colocá-los entre aspas, no exemplo abaixo, temos um array chamado $moeda de três posições, onde cada posição informa um país, e nesta posição é armazenada a moeda deste país: <? $moeda["espanha"]="Peseta"; $moeda["Portugal"]="Escudo"; $moeda["usa"]="Dolar"; ?> ["espanha"] "Peseta" array $moeda de três posições: ["Portugal"] "Escudo" ["usa"] "Dolar" Mini Curso PHP On‐Line – Nível Básico – v 1.0 Outra forma de definir identicamente este mesmo array e que nos pode ajudar na criação de arrays mais complexos é a seguinte sentença. <? $moeda=array("espanha"=> "Peseta", "portugal" => "Escudo", "usa" => "Dolar"); ?> De início não nos interessa aprofundar em arrays, pois o uso do mesmo é um pouco complexo para aqueles que estão iniciando com o PHP, porém guarde bem os conceitos dados até agora, pois iremos usá-los posteriormente. Cadeias (strings) Uma das variáveis mais frequentes as que teremos que fazer frente na maioria dos nossos scripts são as cadeias, ou então as chamadas “strings”, que não são mais que informação de carácteres não numérico (textos, por exemplo). Para atribuir a uma variável um conteúdo deste tipo, escrevemo-lo entre aspas dando lugar a declarações deste tipo: $cadeia= "Esta é a informação da minha variável"; Se queremos ver no browser o valor de uma variável ou uma mensagem qualquer usaremos o comando echo como já dissemos anteriormente: echo $cadeia; //Mostra no browser o texto informado na variável cadeia echo " Esta é a informação da minha variável "; //daria o mesmo resultado Podemos concatenar várias cadeias pondo um ponto entre elas, vamos a mais um exemplo prático: Crie um novo arquivo no PHPeditor chamado cadeias.php e insira o seguinte conteúdo no espaço do código PHP. <? $cadeia1= "Cão"; $cadeia2= " morde"; $cadeia3= $cadeia1.$cadeia2; echo $cadeia3 //O resultado é: "Cão morde" ?> Salve o arquivo, abra o browser e digite o seguinte endereço: http://localhost/cadeias.php No browser você verá: Cão morde Neste exemplo temos três variáveis: $cadeia1 recebe a string Cão $cadeia2 recebe a string morde $cadeia3 recebe o valor de $cadeia1 e junta com o valor de $cadeia2 Logo depois temos a função echo exibindo o conteúdo da variável $cadeia3. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Também podemos introduzir variáveis dentro da nossa cadeia o qual nos pode ajudar muito a desenvolver os nossos scripts. O que veremos não é o nome, mas sim o valor da variável. <? $a=55; $mensagem="Tenho $a anos"; echo $mensagem //O resultado é: "Tenho 55 anos" ?> Uso de caracteres espeíficos em strings Existem momentos em que necessitamos de usar caracteres especiais nas stings, por exemplo, desejo escrever no browser: O celular custa R$ 200,00. Pode-se observar que nessa string temos um caractere especial que é o $. Pois bem, pra colocar este e outros caracteres utilizados pela linguagem dentro de cadeias e não confundi-las, temos que escrever uma contra barra (\) a frente, veja: \$ = Insere o caractere reservado $ na string \” = Insere o caractere reservado “ na string \\ = Insere o caractere reservado \ na string \8/2 = Escreve 8/2 e não 4 na string Também existem outras utilidades de esta contra barra que nos permitem introduzir no nosso documento HTML determinados eventos, por exemplo: \t = Insere tabulação na string \n = Muda de linha \r = Salto de linha Estas mudanças de linha e tabulações têm unicamente efeito no código e no texto executado pelo navegador. Noutras palavras, se queremos que o nosso texto seja executado e no meio da execução mude de linha de linha temos de introduzir um echo "" e não echo"\n" pois este ultimo só muda de linha no arquivo HTML criado ao enviar ao navegador quando a página seja executada no servidor. A diferença entre estes dois elementos pode ser facilmente compreendida observando o código fonte produzido ao executar o script: <? echo "Olá, \n continuo na mesma linha executada mas não no código fonte.<br>Agora mudo de linha executada mas continuo na mesma no código fonte."; ?> Mini Curso PHP On‐Line – Nível Básico – v 1.0 Exercício 1 Vamos a um exemplo simples porém didático pra treinarmos o que aprendemos até agora. Abra o PHPeditor e crie um novo arquivo e salve-o como exercicio1.php e na parte de PHP insira o seguinte código: <? //Anuncio echo "Minha primeira página tabajara!"; echo "<br>"; //Informativo //Data $datahoje = date("d") . '-' . date("m") . '-' . date("Y"); echo "Hoje, dia '$datahoje' estamos inaugurando nossa primeira página tabajara!"; echo "<br>"; //Boas vindas com o IP echo "Você está concectado ao nosso sistema através do seguinte IP:"; echo $_SERVER['REMOTE_ADDR']; echo "<br>"; //Calculadora tabajara //Variaveis $num1= 5; $num2= 10; echo "Veja as funcionalidades de nossa mega power, bower, seilaoquewer calculadora tabajara!"; echo "<br>"; echo "Com apenas dois números: '$num1' e '$num2' ela é capaz de fazer:"; $soma= $num1+$num2; $subtrai= $num1-$num2; $divide= $num2/$num1; $multiplica= $num1*$num2; echo "Somar: '$soma' <br>"; echo "Subtrair: $subtrai <br>"; echo "Dividir: $divide <br>"; echo "Multiplicar: $multiplica <br>"; echo "Isto é uma revolução,<br>Tecnologia,<br>Inovação,Isto é TABAJARA!"; ?> Salve este arquivo e abra seu browser digitando o seguinte endereço: http://localhost/exercicio1.php Neste primeiro exercício vimos muitas coisas das quais estudamos anteriormente, de início criamos um anúncio, informando uma data. Esta data é a retirada do servidor, o PHP usa a função date para capturar a hora local do servidor, portanto se o servidor (que neste caso é seu próprio computador), estiver com a data errada, no browser, consequentemente a data também estará errada. Logo depois usamos a variavel &_SERVER para adquirirmos o seu IP, e por fim realizamos algumas operações matemáticas com dois números armazenados em variáveis diferentes, treinamos também o uso da função echo junto com recursos HTML <br> para saltar as linhas. Para memorizar bem o que foi aprendido faça modificações gerais neste script salve e atuaize seu browser para visualizar o resultado das alterações e treine bastante, pois o conteúdo apresentado até agora será essencial para um bom aprendizado até o final de nossos estudos. Não passe adiante sem ter certeza que o conteúdo anterior foi bem assimilado. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Controle do fluxo em PHP: Condições IF A programação exige em muitas ocasiões a repetição de ações sucessivas ou a escolha de uma determinada sequência e não de outra dependendo das condições especificas da execução. Como exemplo, podíamos fazer alusão a um script que execute uma sequência diferente em função do dia da semana no que nos encontramos. Este tipo de ações podem ser levadas a cabo graças a um conjunto de instruções presentes na maioria das linguagens. Nesta etapa de nossos estudos vamos descrever algumas delas propostas por PHP e que tem uma utilidade evidente. Para evitar complicar o texto, vamos limitar-nos a introduzir as mais importantes deixando de lado outras que poderão ser facilmente assimiláveis a partir de exemplos práticos. As condições if Quando queremos que o programa, chegado um certo ponto, tome um caminho concreto em determinados casos e outro diferente se as condições de execução diferem, partimos do conjunto de instruções if, else e elseif. A estrutura de base para este tipo de instruções é a seguinte: if (condição) { Instrução 1; Instrução 2; ... } else { Instrução A; Instrução B; ... } Chegados a este ponto, o programa verificará o cumprimento ou não da condição. Se a condição é certa as instruções 1 e 2 serão executadas. Do contrario (else), as instruções A y B serão levadas a cabo. Esta estrutura de base pode complicar-se um pouco mais se tivermos em conta que nem tudo é necessariamente preto no branco e que existem muita possibilidades. É por isso que outras condições se podem questionar dentro de uma condição principal. Falamos pois de condições aninhadas que teriam uma estrutura do seguinte tipo: if (condição1) { Instrução 1; Instrução 2; ... } else { if (condição2) { Instrução A; Instrução B; ... } else { Instrução X ... } } Mini Curso PHP On‐Line – Nível Básico – v 1.0 Deste modo, poderíamos introduzir o número de condições que quisermos dentro de uma condição principal. É de grande ajuda a instrução elseif que nos permite numa só linha introduzir uma condição adicional. Este tipo de instrução simplifica ligeiramente a sintaxe que acabamos de ver. if (condição1) { Instrução 1; Instrução 2; ... } elseif (condição2) { Instrução A; Instrução B; ... } else { Instrução X ... } Vamos treinar um pouco. O uso desta ferramenta é claro com um pouco de prática. Utilizemos um exemplo simples de utilização de condições. O seguinte programa permitiria detectar a língua empregue pelo navegador e visualizar uma mensagem nessa língua. Crie um novo arquivo no PHPeditor e chame-o de linguas.php e insira o seguinte conteúdo na parte de PHP: <? //Antes de nada introduzimos mensagens em forma de variáveis $portugues= "Ola"; $ingles= "Hello"; $frances= "Bonjour"; //Agora lemos do navegador qual é a sua língua oficial $idioma= substr($HTTP_ACCEPT_LANGUAGE,0,2); //Formulamos as possibilidades que se podem dar if ($idioma == "pt") { echo "$portugues <br>"; echo "O idioma padrão atual de seu navegador é o Português"; } elseif ($idioma == "fr") { echo "$frances <br>"; echo "O idioma padrão atual de seu navegador é o Francês"; }else{ echo "$ingles <br>"; echo "O idioma padrão atual de seu navegador é o Inglês"; } ?> Salve o arquivo, abra seu browser e digite o seguinte endereço: http://localhost/linguas.php Para poder ver o funcionamento deste script é necessário mudar o idioma preferido o qual pode ser realizado a partir do menu de opções do navegador. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Para ler a língua aceite pelo navegador o que fazemos é definir uma variável ($idioma) e, mediante a função substr, recolhemos as duas primeiras letras do código correspondente ao idioma aceitado pelo navegador ($HTTP_ACCEPT_LANGUAGE). A terceira parte do script encarrega-se de ver se o navegador está em português (pt), francês (fr) ou em qualquer outro idioma que não seja nenhum destes dois e de imprimir a mensagem que proceda em cada caso. Temos de destacar que, quando se trata de comparar variáveis, pomos um duplo igual "==" em lugar de um simples "=". Este último fica reservado exclusivamente para atribuir valores às variáveis. Controle do fluxo em PHP: Loops Os computadores, como qualquer máquina, estão desenhados para realizar tarefas repetitivas. É por isso que os nossos programas se podem aproveitar desse princípio para realizar uma determinada sequência de instruções um certo numero de vezes. Para isso utilizamos as estruturas chamadas em loop que nos ajudam a, usando poucas linhas, realizar uma tarefa incluída dentro dum loop um certo número de vezes definido por nós mesmos. PHP propõe vários tipos de loops, cada um com umas características especificas: Loop While Sem dúvida o loop mais utilizado e mais simples. Usamo-lo para executar as instruções contidas no seu interior sempre que a condição definida seja verdadeira. A estrutura sintática é a seguinte: while (condição) { instrução1; instrução2; ... } Um exemplo simples é este loop que aumenta o tamanho da fonte numa unidade em cada passagem: <? $size=1; While ($size<=6) { echo"<font size=$size>Tamanho $size</font><br>\n"; $size++; } ?> Como explicação, diremos que, antes de mais, temos de definir o valor da variável que vamos avaliar na condição. Algo absolutamente óbvio mas fácil de esquecer. Neste caso atribuímos-lhe o valor 1 que corresponde a letra mais pequena. O passo seguinte é criar o loop no qual impomos a condição que a variável não exceda o valor 6. A instrução a executar será imprimir no nosso documento um código HTML em que a etiqueta font e a mensagem que contém variam à medida que $size muda o seu valor. Seguidamente, devemos incrementar numa unidade o valor de $size. Isto pode-se fazer com uma expressão como a mostrada no loop ($size++) que na realidade é sinônimo de: $size=$size+1 Mini Curso PHP On‐Line – Nível Básico – v 1.0 Portanto, neste exemplo temos: $size inicia com o valor 1 Começa o loop: Enquanto a variável $size for menor ou igual a 6 entao o tamanho da fonte recebe o valor armazenado na variavel $size. $size recebe o seu valor acrescido de 1 Entra no loop novamente e verifica se $size é menor ou igual a 6, como neste momento $size estará valendo 2 então a condição é satisfeita e o processo novamente é repetido. Assim sucessivamente até que $size tenha o valor 6 onde o loop então é interrompido. Outro exemplo do loop While O loop while costuma utilizar-se quando não se sabe exatamente quantas iterações se devem realizar antes de acabar. Utilizamo-lo num outro exemplo, no qual temos de recorrer uma cadeia até encontrar um carácter dado. Se o encontra, escrever a sua posição. Se não, escrever que não se encontrou. Nota: Para fazer este exercício necessitamos de conhecer a função de cadeia strlen(), que obtém a longitude da cadeia que se passa por parâmetro. int strlen (string cad) Retorna um inteiro igual ao tamanho da cadeia. Exercício: Crie um novo arquivo no PHPeditor e chame-o de while.php e insira o seguinte conteúdo na parte de PHP: <? $cadeia = "Ola a todo o mundo"; //recorro a cadeia até encontrar uma "m" $i=0; while ($cadeia[$i]!="m" && $i< strlen($cadeia)) { $i++; } if ($i==strlen($cadeia)) echo "A letra procurada não se encontra..."; else echo "A letra procurada está na posição $i"; ?> Neste exercício começamos criando uma variável chamada $cadeia e inserimos na mesma a seguinte string: “Olá a todo mundo”. Logo depois criamos uma variável chamada $i e iniciamos a mesma com o valor zero, esta variável estará responsável por informar a posição atual do loop. No fim do loop while, se saímos do loop é porque se encontrou o carácter "m", a variável $i terá como valor um número menor que o tamanho da cadeia. Se saiu do loop por chegar ao fim da cadeia, a variável $i terá um valor igual ao do tamanho da cadeia, e por tanto, obtemos que não se achou o carácter passado por parâmetro. Para realizar o teste, abra seu browser e digite o seguinte endereço: http://localhost/while.php Mini Curso PHP On‐Line – Nível Básico – v 1.0 Loop for PHP tem outros tipos de loops que também são muito práticos em determinadas situações. O mais popular é o loop for que, como nos casos anteriores, se encarrega de executar instruções entre chaves. A diferença para com os anteriores radica na forma como se especifica a condição de finalização do loop. Para esclarecer o seu funcionamento vamos expressar o exemplo do loop while visto no capítulo anterior em forma de loop for: <? For ($size=1;$size<=6;$size++) { echo"<font size=$size>Tamanho $size</font><br>\n"; } ?> As expressões dentro do parêntese definem respectivamente: Inicialização da variável. Valida para o primeiro recorrido do loop. Condição de avaliação em cada recorrido. Se for certa, o loop continua. A realizar no final de cada recorrido do loop. Loop foreach Este loop, implementado nas versões 4 do PHP, ajuda-nos a recorrer os valores de um array o que pode ser muito útil para, por exemplo, efetuar uma leitura rápida do mesmo. Recordamos que um array és uma variável que guarda um conjunto de elementos (valores) catalogados por chaves. A estrutura geral é a seguinte: Foreach ($array as $chave=>$valor) { instrução1; instrução2; ... } Um exemplo prático é a leitura de um array que se poderia fazer do seguinte modo: <? $moeda=array("Espanha"=> "Peseta","Portugal" => "Escudo","USA" => "Dolar"); Foreach ($moeda as $chave=>$valor) { echo "Pais: $chave Moeda: $valor<br>"; } ?> Mini Curso PHP On‐Line – Nível Básico – v 1.0 Este script encarrega-se de nos mostrar pelo browser o conteúdo do array $moeda. Não seria má idéia criar uma função própria baseada neste loop que nos permitisse visualizar arrays unidimensionais e armazená-la na nossa livraria. Esta função poderia ser definida desta forma: Function mostrar_array ($array) { Foreach ($array as $chave=>$valor) { echo "$chave=>$valor<br>"; } } Break e Continue Estas duas instruções introduzem-se dentro da estrutura e servem-nos respectivamente para sair do loop e para saltar a seguinte iteração. Podem ser muito úteis em algumas situações. Operadores As variáveis, como base da informação de uma linguagem, podem ser criadas, modificadas e comparadas com outras por meio dos chamados operadores. Nos capítulos anteriores utilizamos nos nossos exemplos alguns deles. Neste capítulo pretendemos dar a conhecer os mais importantes para os usar em futuros exemplos. Operadores aritméticos Permitem-nos realizar operações numéricas com as nossas variáveis. + --> Soma - --> Subtração * --> Multiplicação / --> Divisão % --> Retorna o resto da divisão. Operadores de comparação Utilizam-se principalmente, nas nossas condições, para comparar duas variáveis e verificar se cumprem ou não a propriedade do operador. == --> Igualdade != --> Desigualdade < --> Menor que <= --> Menor ou igual que > --> Maior que >= --> Maior ou igual que Mini Curso PHP On‐Line – Nível Básico – v 1.0 Operadores lógicos Usam-se em combinação com os operadores de comparação quando a expressão da condição assim o requer. And --> E Or --> Ou ! --> Não Operadores de incremento Servem para aumentar ou diminuir numa unidade o valor de uma variável ++$variavel --> Aumenta em 1 o valor de $variavel --$variavel --> Diminui em 1 o valor de $variavel Operadores combinados Uma forma habitual de modificar o valor das variáveis é através dos operadores combinados: $variavel += 10 $variavel += 10 $variavel = “acrescento” --> Soma 10 à $variavel --> Subtrai 10 à $variavel --> Concatena (junta) as strings $variavel e “acrescento” Este tipo de expressões não são mais do que abreviações de outras formas mais clássicas: $variavel += 10 é o mesmo que: $variavel = $variavel +10 Passagem de variáveis pela URL Loops e condições são úteis para processar os dados dentro de um mesmo script. Mas, num sítio de internet, as páginas visitadas e os scripts utilizados são numerosos. Frequentemente precisamos que os nossos scripts estejam conectados uns com os outros e que utilizem variáveis comuns. Por outro lado, o usuário interage por meio de formulários cujos campos têm de ser processados para poder dar resposta. Todo este tipo de fatores dinâmicos têm de ser eficazmente regulados por uma linguagem como PHP. É possível que se tenham apercebido que as variáveis de um script têm uma validez exclusiva para o script e que se torna impossível conservar o seu valor quando executamos outro arquivo diferente ainda que ambos estejam ligados. Existem várias formas de enviar as variáveis de uma página a outra de maneira que a página destino reconheça o valor atribuído pelo script de origem: Para passar as variáveis de uma página a outra podemos fazê-lo introduzindo a variável dentro do link hipertexto da página destino. A sintaxe seria a seguinte: <a href="destino.php?variavel=valor1&variavel2=valor2&...">Meu link</a> Podem observar que estas variáveis não possuem o símbolo $ à frente. Isto é por que, na realidade, este modo de passar variáveis não é específico de PHP, sendo utilizado por outras linguagens. Agora a nossa variável pertence também ao entorno da página destino.php e está pronta para a sua utilização. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Nota: Nem sempre se definem automaticamente as variáveis recebidas por parâmetro nas páginas Web, depende de una variável de configuração de PHP: register_globals, que tem de estar ativada para que assim seja. Ver comentários do artigo ao final da página para mais informação. Para resolver possíveis dúvidas, vejamos isto em forma de exemplo. Teremos, pois duas páginas, origem.html (não é necessário dar-lhe extensão PHP pois não há nenhum tipo de código) e destino.php: <HTML> <HEAD> <TITLE>origem.html</TITLE> </HEAD> <BODY> <a href="destino.php?comprimento=ola&texto=Isto é uma variável de texto">Passo variáveis comprimento e texto à página destino.php</a> </BODY> </HTML> <HTML> <HEAD> <TITLE>destino.php</TITLE> </HEAD> <BODY> <? echo "Variável \$comprimento: $comprimento <br>\n"; echo "Variável \$texto: $texto <br>\n" ?> </BODY> </HTML> $_GET Relembramos que é possível compilar numa só variável tipo array o conjunto de variáveis que foram enviadas ao script por este método a partir da variável de sistema $_GET, que é um array associativo. Utilizando-o ficaria assim: <? echo "Variável \$comprimento: $_GET_["comprimento"] <br>\n"; echo "Variável \$texto: $_GET["texto"] <br>\n" ?> Nota: Ainda que possamos recolher variáveis com este array associativo ou utilizar directamente as variáveis que se definem na nossa página, é mais seguro utilizar $_GET por duas razões, a primeira é que assim temos a certeza que essa variável vem realmente da URL e a segunda, que assim o nosso código será mais claro quando o quisermos ler, porque ficará especificado que estamos a receber essa variável pela URL. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Processar variáveis de formulários Este tipo de transferência é de uma grande utilidade pois permite-nos interagir diretamente com o usuário. Este processo é similar ao explicado para as URLs. Em primeiro lugar, apresentamos uma primeira página com o formulário clássico para preencher e as variáveis são recolhidas numa segunda página que as processa: Nota: Nem sempre se definem automaticamente as variáveis recebidas por parâmetro nas páginas Web, depende de uma variável de configuração de PHP: register_globals, que tem de estar ativada para que assim seja. Ver comentários do artigo ao final da página para mais informação. <HTML> <HEAD> <TITLE>formulario.html</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="destino2.php"> Nome<br> <INPUT TYPE="TEXT" NAME="nome"><br> Apelidos<br> <INPUT TYPE="TEXT" NAME="apelidos"><br> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> <HTML> <HEAD> <TITLE>destino2.php</TITLE> </HEAD> <BODY> <? echo "Variável \$nome: $nome <br>\n"; echo "Variável \$apelidos: $apelidos <br>\n" ?> </BODY> </HTML> $_POST Relembramos que é possível compilar numa só variável tipo array o conjunto de variáveis que foram enviadas ao script por este método a partir da variável de sistema $_POST: echo "Variável \$nome: " . $_POST["nome"] . "<br>\n"; Nota: Ainda que possamos recolher variáveis com este array associativo ou utilizar diretamente as variáveis que se definem na nossa página, torna-se mais seguro utilizar $_POST por duas razões, a primeira é que assim temos a certeza que essa variável vem realmente de um formulário e a segunda, que assim o nosso código será menos confuso quando queiramos lê-lo, porque ficará especificado que estamos a receber essa variável através de um formulário. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Exemplo de restrição de acesso por idade Para continuar com exemplos de uso de formulários vamos realizar uma página que mostra e solicita a idade do visitante e, dependendo da sua idade, permite ou não visualizar o conteúdo da Web. A maiores de 18 anos é-lhes permitido ver a página e a menores não. O exemplo é muito simples e não seria correto para utilizá-lo tal e qual a modo de uma verdadeira barreira de acesso. Só nos serve para saber como obter dados de um formulário e como tratá-los para realizar uma ou outra ação, dependendo do seu valor. A página do formulário, à qual demos o nome idade.php, teria o seguinte aspecto: <html> <head> <title>Restringir por idade</title> </head> <body> <form action="idade2.php" method="post"> Escreve a tua idade: <input type="text" name="idade" size="2"> <input type="submit" value="Entrar"> </form> </body> </html> Esta é uma página sem nenhum código PHP, simplesmente tem um formulário. Se repararmos no action do formulário, que está dirigido a uma página chamada idade2.php, que é a que receberá o valor da idade e mostrará um conteúdo ou outro dependendo desse valor. O seu código seria o seguinte: <html> <head> <title>Restringir por idade</title> </head> <body> <? $idade = $_POST["idade"]; echo "Tua idade: $idade<p>"; if ($idade < 18) { echo "Não podes entrar"; }else{ echo "Bemvindo"; } ?> </body> </html> Esperamos que este outro código também não seja estranho. Simplesmente o formulário recebe a idade, utilizando o array $_POST. A seguir, mostra-se a idade e executa-se uma expressão condicional em função de que a idade seja menor que 18. Em caso positivo (idade menor que 18), mostra-se uma mensagem que informa que não se pode acessar à página. Em caso negativo (maior ou igual a 18) mostra-se uma mensagem de Boas-vindas. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Autochamada de páginas Ao incluir um formulário numa página deve-se indicar, através do atributo action, o nome do arquivo PHP ao que enviaremos os dados escritos no formulário. Desta maneira, para um esquema de envio de dados por formulário, podem participar duas páginas: uma que contém o formulário e outra que recebe os dados de dito formulário. O mesmo acontece quando enviamos variáveis pela URL. Temos uma página que conterá o link e outra página que receberá e tratará esses dados para mostrar uns resultados. Neste artigo vamos ver como se pode enviar e receber dados de um formulário com uma única página. Também veremos como na mesma página podemos ter links com passagem de variáveis pela URL e podemos recolher e tratar esses dados com a mesma página. A este efeito podemos chamar-lhe "autochamada de páginas", mas também é normal dar-lhe o nome de "formulários reentrantes" ou términos similares. É muito interessante conhecer o modo de funcionamento destes scripts, porque serão muito habituais nas nossas páginas PHP e ajudam muito a ter os códigos ordenados. Em ambos casos, para formulários o envio de dados pela URL, deve-se seguir um esquema como este: Comprovar se recebo dados pela URL ou pelo formulário Se não recebo dados O Mostro o formulário e os links que pasma as variáveis Se recebo dados O Tenho de processar o formulário ou as variáveis da URL Para um formulário Vejamos a continuação como seria o código de um formulário reentrante. <html> <head> <title>Chamo-me a mim mesmo...</title> </head> <body> <? if (!$_POST){ ?> <form action="auto-chamada.php" method="post"> Nome: <input type="text" name="nome" size="30"> <br> Empresa: <input type="text" name="empresa" size="30"> <br> Telefone: <input type="text" name="telefone" size=14 value="+351 " > <br> <input type="submit" value="Enviar"> </form> <? }else{ echo "<br>Seu nome: " . $_POST["nome"]; echo "<br>Sua empresa: " . $_POST["empresa"]; echo "<br>Seu Telefone: " . $_POST["telefone"]; } ?> </body> </html> No exemplo, o primeiro passo é conhecer se se estão a receber ou não os dados através de um formulário. Pra isso comprova-se com um enunciado if se existe ou não uma variável $_POST. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Em concreto if (!$_POST) quer dizer algo assim como "Se não existem dados provenientes de um formulário". No caso de que não existam, mostro o formulário. Em caso de que efetivamente existam, recolho os dados e imprimo-os na página. Pode-se ver o exemplo em funcionamento noutra página. Para passagem de variáveis pela URL A idéia é a mesma. Verificar com um enunciado if se os dados são recebidos desde uma URL. Vejamos o código a continuação. Trata-se de uma página que mostra uma serie de links para ver as tabuadas do 1 ao 10. Cada um dos links mostra uma tabuada. Pressionando o primeiro link podemos ver a tabuada do 1, no segundo a tabuada do 2, etc. Recordemos que a página chama-se a si mesma. Para compreende-la mais facilmente é interessante ve-la em funcionamento. <html> <head> <title>Tabuadas</title> </head> <body> <? if (!$_GET){ for ($i=1;$i<=10;$i++){ echo "<br><a href='ver_tabuada.php?tabuada=$i'>Ver a tabuada do $i</a>\n"; } } else { $tabuada=$_GET["tabuada"]; ?> <table align=center border=1 cellpadding="1"> <? for ($i=0;$i<=10;$i++){ echo "<tr><td>$tabuada X $i</td><td>=</td><td>" . $tabuada * $i . "</td></tr>\n"; } ?> </table> <? } ?> </body> </html> Este código é um pouco mais complicado, porque faz bastantes mais coisas que o anterior, mas para o assunto que nos preocupa que é a autochamada de páginas, tudo continua igual de simples. Temos de reparar que o if verifica se recebemos dados pela URL: if (¡$_GET), que quer dizer algo como "Se não se recebem variáveis pela URL". Em caso positivo (não se recebem dados pela URL) mostram-se os links para ver cada uma das tabuadas e em caso de receber dados, mostra-se a tabuada do número que se está a receber na URL. Para mostrar os links e as tabuadas utilizam-se loops for, que esperamos que não resultem desconhecidos para o leitor. Pode ficar-se a conhecer mais sobre loops for em Controle de fluxo em PHP: Loops II. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Carregar uma aplicação PHP ao servidor Uma vez pediram-me que escrevesse sobre um tema que até agora não tínhamos tocado demasiado, que consiste em por uma aplicação a funcionar, programada em local, no nosso servidor de hosting, isto é, na transferência de todos os Arquivos PHP e a base de dados ao nosso espaço no servidor contratado num provedor de alojamento. Espero que o assunto vos seja familiar a todos os que lêem os nossos artigos, pois provavelmente já tenham tido que passar por essa etapa em alguma ocasião, ainda que pretendo dar algumas dicas que podem ajudar a todos, tenham ou não experiência neste assunto. Carregar os Arquivos O nosso servidor deve ter um diretório para a publicação das páginas. Esse seria o lugar onde haveríamos de carregar os Arquivos .php. Dependendo do provedor com o que estamos a trabalhar, o diretório de publicação pode variar. Normalmente, quando contratamos um serviço de hospedagem, proporcionam-nos uma conta de FTP para nos poder conectar ao servidor e transferir os Arquivos do nosso Site, para além de uns dados para a conexão, que serão o nome do servidor e o usuário e password para o acesso ao FTP. Ao acessarmos o servidor com os dados do FTP, que devem ser proporcionados pelo nosso provedor, somos setados a um diretório. Este diretório poderia ser o de publicação, ainda que normalmente não é assim, é muito comum ser um subdiretório chamado "HTML" ou "docs" ou algo similar. Como estava a dizer, este diretório pode ter nomes diferentes em provedores diferentes, mas em qualquer caso, com uma simples pergunta ao nosso provedor resolvemos essa dúvida. Os Arquivos devem ser carregados ao diretório de publicação, ou a qualquer subdiretório deste. Concluindo, que teremos de hospedá-los por ai dentro e para acessá-los bastaria com escrever o nome do domínio ou URL do nosso servidor de hospedagem, seguido do nome do arquivo. Se tivéssemos um arquivo chamado ola.php e o nosso servidor de hospedagem tivesse sido contratado para o domínio www.meudominio.com, deveríamos de carregar esse arquivo ao diretório de publicação e acessaríamos ao arquivo escrevendo: http://www.meudominio.com/ola.php Se criarmos subdiretórios dentro do diretório de publicação poderemos carrega-los escrevendo o nome do domínio ou URL do nosso Servidor de Hospedagem, seguido do nome do diretório e do nome do arquivo. Por exemplo, se criamos um subdiretório chamado paginas e temos dentro um arquivo chamado pag1.php, poderíamos acessa-lo da seguinte forma: http://www.meudominio.com/paginas/pag1.php Mini Curso PHP On‐Line – Nível Básico – v 1.0 Como colocar os Arquivos PHP fora do diretório de publicação É importante lembra que tudo o que pusermos fora do diretório de publicação não poderá ser acessado através do navegador. Isto é, se criamos um diretório que se chame funcoes_php ao mesmo nível que o diretório de publicação (fora do diretório de publicação) não seria possível acessar os arquivos pelo navegados. Isto é assim porque a URL de inicio do nosso servidor de hospedagem corresponde com esse diretório e não podemos mover-nos para um diretório que se encontra no mesmo nível do diretório de publicação com as URLs, que são a maneira de especificar ao navegador os recursos os quais desejamos acessar. Não seria possível sair do diretório de publicação com uma URL como esta, por muito que utilizemos o operador. (que serve para acessar ao diretório pai). http://www.meudominio.com/../funcoes_php/arquivo_inalcancavel.php De todos os modos, colocar alguns Arquivos fora do diretório de publicação pode ser muito útil. Por exemplo, poderíamos colocar ali copias de segurança de alguns Arquivos ou documentos que simplesmente queremos guardar no servidor para acessar a eles desde qualquer parte e com o nosso programa de FTP. Há outra utilidade mais interessante sobre colocar Arquivos fora do diretório de publicação. Muitas vezes utilizamos nos nossos programas bocados de código repetidamente, por exemplo, para abrir e fechar bases de dados, para mostrar o cabeçalho do nosso portal, para verificar que um e-mail escrito num formulário é correto, etc. É muito útil separar estes bocados de código num arquivo à parte e chamar este arquivo com as funções PHP include() ou require(). Deste modo, se um dia modificamos o cabeçalho do nosso portal, só temos que modificar um arquivo ou se muda a base de dados que utilizamos só teríamos que modificar o arquivo que faz a ligação à base de dados em vez de ir alterando todas as páginas PHP que faziam uma apertura da base de dados. Estes Arquivos não são páginas independentes, mas sim fragmentos. Provavelmente se os executamos por separado não mostrariam nenhum resultado válido, inclusive poderiam dar mensagens de erro. Por esta razão vale a pena colocá-los num lugar onde ninguém pudesse ter acesso: fora do diretório de publicação. Com PHP poderemos acessar a este diretório para incluir estes Arquivos. Somente deveríamos utilizar as funções PHP include() ou require() indicando o path para acessar aos Arquivos. No caso de ter uma página chamada ola.php no diretório de publicação e um arquivo, que chama abre_base_dados.php, no diretório funcoes_php, que está fora do diretório de publicação, se quiséssemos acessar (desde ola.php) ao arquivo que abre a base de dados fazemos da seguinte maneira: include("../funcoes_php/abre_base_dados.php") Desde PHP sim podemos acessar aos Arquivos que se encontram fora do diretório de publicação. Para isso especificamos o path adequado, na que utilizamos o operador .. Para descer ao diretório pai. Não há nada mais a dizer sobre a colocação dos Arquivos: uma vez situados no diretório de publicação pode-se acessar a Arquivos com o nosso navegador e deveria-se poder executar perfeitamente. Temos de ter em conta que, tanto PHP como o servidor onde trabalhamos, podem ter configurações diferentes e pode que algum detalhe de programação das nossas páginas não funcione corretamente. Por exemplo, o nosso PHP pode declarar ou não automaticamente as variáveis que chegam através dum formulário. Se em local estava configurado para fazer isso e em remoto não, deveríamos localizar os lugares onde recolhemos as variáveis e utilizar as variáveis corretas (ver artigo sobre Processar variáveis em formulários e os comentários para saber mais sobre esta possível fonte de erros). Mesmo não sendo um caso habitual, poderíamos entrar em contantos com o nosso Provedor de Hospedagem ver se haveria a possibilidade de nos ajudar com a configuração do sistema ou se podem nos indicar os passos a seguir para resolver o assunto nos nossos scripts. Mini Curso PHP On‐Line – Nível Básico – v 1.0 Comentário: O seguinte script calcula o nível de diretório dos scripts que queremos incluir na página atual. // Achamos o nível do diretório onde se encontra a página 1. Contamos os caracteres que contem o nome do script atual. $Chars = count_chars($PHP_SELF,1); 2. Exploramos a tabela dos caracteres retornados procurando o carácter ('/' Código 47 ) de diretório (pasta) que retorna Apache. foreach ($Chars as $Char=>$nChars){ if ($Char==47) {$n=$nChars;break;} } 3. Geramos uma cadeia de n-1 vezes com a subcadeia "../" que nos da o nível de diretório no que se encontra o script. if ($n==0) $PathString=""; else $PathString=str_pad("",($n-1)*3,"../"); Mini Curso PHP On‐Line – Nível Básico – v 1.0 Exercício Final: Este script é apenas didático, não devendo ser usado comercialmente, porém nada lhe impede de usar as funções aqui apresentadas em seus projetos comerciais. A idéia deste script é a seguinte: Temos vários campos que devem ser preenchidos e que serão validados ao se clicar em validar. A validação ocorre em PHP mesmo. Não é de nosso interesse explicar o funcionamento deste script, cabe a você usar dos conhecimentos adquiridos neste mini curso e comentar cada linha do script informando o que a mesma faz. Aos que tentarem comentar as linhas deste script e quiserem ter as mesmas divulgadas na versão 2.0 desta apostila favor enviar o script para [email protected] com o seguinte assunto: Comentários exercício final PHP básico. O script melhor comentado será divulgado na versão 2.0 da apostila. Caso os campos passem pela validação, é exibido um texto com as informações que foram preenchidas nos campos. Repare uma opção interessante que caso a informação não seja válida, os campos não perdem o que foram preenchidos. <? if ($_POST['validar']) { $nome= $_POST['nome']; $endereco= $_POST['endereco']; $cep= $_POST['cep']; $telefone= $_POST['telefone']; $email= $_POST['email']; $site= $_POST['site']; switch (true) { case empty($nome); echo "<script>alert('O Nome deve ser informado!')</script>"; break; case empty($endereco); echo "<script>alert('O Endereço deve ser informado!')</script>"; break; case empty($cep); echo "<script>alert('O CEP deve ser informado!')</script>"; break; case empty($telefone); echo "<script>alert('O Telefone deve ser informado!')</script>"; break; case empty($email); echo "<script>alert('O E-Mail deve ser informado!')</script>"; break; case empty($site); echo "<script>alert('O Site deve ser informado!')</script>"; break; default; if (strlen($nome) < 10) { echo "<script>alert('O Nome informado não é válido, por favor insira seu nome completo!')</script>"; }elseif (strlen($endereco) < 10) { echo "<script>alert('O Endereço informado não é válido!')</script>"; }elseif ( (strlen($cep) < 8) or ( ! (substr_count($cep,"-") = 1)) or (ereg("[a-zA-Z]",$cep)) ) { echo "<script>alert('O CEP informado não é válido. Ex.: #####-###')</script>"; }elseif ( (strlen($telefone) < 10) or ( ! (substr_count($telefone,"-") = 2)) or (ereg("[a-zAZ]",$telefone)) ) { echo "<script>alert('O Telefone informado não é válido. Ex.: ##-###-####!')</script>"; }elseif ( ( ! (substr_count($email,"@") = 1)) or (substr_count($email,".") < 1) or (strlen($email) < 5) or (substr_count($email, "\\") > 0) ) { echo "<script>alert('O E-Mail informado não é válido. Ex.:usuario@dominio ')</script>"; }elseif ( (substr_count($site,"@") > 0) or (substr_count($site,".") < 2) or (strlen($site) < 5) ) { echo "<script>alert('O site informado não é válido. Ex,: www.dominio!')</script>"; } } $informacoes = "Informaões sobre: $nome: <br><br>"; $informacoes .= "Localiza-se na: $endereco, CEP: $cep. <br>"; $informacoes .= "Contato pelo fone: $telefone, <br>"; $informacoes .= "ou correio eletrônico: $email <br><br>"; Mini Curso PHP On‐Line – Nível Básico – v 1.0 $informacoes .= "Visite o site de $nome --> $site <br>"; }else{ $hora = date("H"); if ($hora >= 0 && $hora < 6){ echo "<script>alert('Já é de madrugada!!!')</script>"; }elseif ($hora >= 6 && $hora < 12){ echo "<script>alert('Tenha um excelente dia!!!')</script>"; }elseif ($hora >= 12 && $hora < 18){ echo "<script>alert('Boa tarde!!!')</script>"; }else{ echo "<script>alert('Uma boa noite!!!')</script>"; } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Exercício Final PHP</title> </head> <body> <form id="form1" name="form1" method="post" action=""> <table width="100%" border="0"> <tr> <th colspan="2" scope="col">Validação de campos com PHP </th> </tr> <tr> <td width="50%"> </td> <td width="50%" align="right">Seu IP: <? echo $_SERVER['REMOTE_ADDR']; ?></td> </tr> <tr> <td align="right">Nome:</td> <td><div align="left"> <input name="nome" type="text" id="nome" value="<? echo "$nome" ?>" /> </div></td> </tr> <tr> <td align="right">Endereço:</td> <td><input name="endereco" type="text" id="endereco" value="<? echo "$endereco" ?>" /></td> </tr> <tr> <td align="right">CEP:</td> <td><input name="cep" type="text" id="cep" value="<? echo "$cep" ?>" /></td> </tr> <tr> <td align="right">Telefone:</td> <td><input name="telefone" type="text" id="telefone" value="<? echo "$telefone" ?>" /></td> </tr> <tr> <td align="right">E-mail:</td> <td><input name="email" type="text" id="email" value="<? echo "$email" ?>" /></td> </tr> <tr> <td align="right">Site:</td> <td><input name="site" type="text" id="site" value="<? echo "$site" ?>" /></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td colspan="2" align="center"><input name="validar" type="submit" id="validar" value="Validar" /></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td align="right"> </td> <td align="left"><? echo $informacoes ?></td> </tr> <tr> <td> </td> <td> </td> </tr> </table> </form> </body> </html> Mini Curso PHP On‐Line – Nível Básico – v 1.0 Conclusão Como qualquer outro curso, principalmente On-Line são os próprios alunos que fazem a diferença, os resultados vem do esforço e dedicação de cada um, nós da equipe da 4P Soluções estamos muito honrados em lhe repassar um pouco do que sabemos, e esperamos que com esse pouco você possa fazer muito. Com os conhecimentos adquiridos aqui você já estará apto a iniciar seus próprios projetos em PHP, porém não se esqueça que o conteúdo proposto aqui é só o início, há muito o que estudar e aprender ainda até que você se torne um programador(a) profissional. Porém quem quer consegue, sabemos que não é fácil e a caminhada é longa, mas a recompensa é garantida. Ajude-nos a manter nosso mini-curso sempre com uma boa qualidade de aprendizado, envie-nos sua opinião, reclamação ou sugestão para [email protected] Muito obrigado, Eudson Fonseca.