(Parte 1 de 4)

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

Projeto Supervisionado de Final de Curso

Este apostila de PHP e fruto do Projeto Supervisionado de Final de Curso de

Maurício Vivas de Souza Barreto, tendo o mesmo sido submetido a uma banca examinadora composta pelo Professor Giovanny Lucero, Professora Ana Rosimeri e Professor Leonardo Nogueira Matos, da Universidade Federal de Sergipe, Centro de Ciências Exatas e Tecnologia do Departamento de Estatistica e Informática.

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

1. INTRODUÇÃO5
O QUE É PHP?6
O QUE PODE SER FEITO COM PHP?6
COMO SURGIU A LINGUAGEM PHP?6
2. SINTAXE BÁSICA8
DELIMITANDO O CÓDIGO PHP8
SEPARADOR DE INSTRUÇÕES8
NOMES DE VARIÁVEIS8
COMENTÁRIOS9
Comentários de uma linha:9
Comentários de mais de uma linha:9
3. CRIANDO OS PRIMEIROS SCRIPTS10
PRIMEIRO EXEMPLO10
UTILIZANDO FORMULÁRIOS HTML1
INTERAGINDO COM O BROWSER12
ACESSANDO BANCOS DE DADOS13
Conexão com o servidor13
Seleção do banco de dados13
Execução de queries SQL14
TRATAMENTO DE RESULTADOS DE QUERY SELECT15
4. TIPOS17
TIPOS SUPORTADOS17
Inteiros (integer ou long)17
Strings18
Arrays19
LISTAS19
Objetos20
Booleanos20
TRANSFORMAÇÃO DE TIPOS20
Coerções20
Transformação explícita de tipos21
Com a função settype2
5. CONSTANTES23
CONSTANTES PRÉ-DEFINIDAS23
DEFININDO CONSTANTES23
6. OPERADORES24
ARITMÉTICOS24
DE STRINGS24
DE ATRIBUIÇÃO24
BIT A BIT25
LÓGICOS25
COMPARAÇÃO25
EXPRESSÃO CONDICIONAL26
DE INCREMENTO E DECREMENTO26
ORDEM DE PRECEDÊNCIA DOS OPERADORES27
7. ESTRUTURAS DE CONTROLE28

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

COMANDOS DE SELEÇÃO28
if28
switch30
COMANDOS DE REPETIÇÃO32
while32
dowhile.................................................................................................................... .................................................. 32
for3
QUEBRA DE FLUXO3
Break3
Continue34
8. FUNÇÕES35
DEFININDO FUNÇÕES35
VALOR DE RETORNO35
ARGUMENTOS35
Passagem de parâmetros por referência36
Argumentos com valores pré-definidos (default)37
CONTEXTO37
ESCOPO37
9. VARIÁVEIS39
O MODIFICADOR STATIC39
VARIÁVEIS VARIÁVEIS40
VARIÁVEIS ENVIADAS PELO NAVEGADOR40
URLencode40
VARIÁVEIS DE AMBIENTE41
VERIFICANDO O TIPO DE UMA VARIÁVEL41
Função que retorna o tipo da variável41
Funções que testam o tipo da variável41
DESTRUINDO UMA VARIÁVEL42
VERIFICANDO SE UMA VARIÁVEL POSSUI UM VALOR42
A função isset42
A função empty42
10. CLASSES E OBJETOS43
CLASSE43
OBJETO43
A VARIÁVEL $THIS43
SUBCLASSES4
CONSTRUTORES4
12. CONCLUSÕES46
13. BIBLIOGRAFIA E REFERÊNCIAS47
APÊNDICE 01 - FUNÇÕES PARA TRATAMENTO DE STRINGS48
FUNÇÕES RELACIONADAS A HTML48
htmlspecialchars48
htmlentities48
nl2br48
get_meta_tags49
strip_tags49
urlencode49
urldecode49
FUNÇÕES RELACIONADAS A ARRAYS50
Implode e join50
split50

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

COMPARAÇÕES ENTRE STRINGS51
similar_text51
strcasecmp51
strcmp51
strstr51
stristr52
strpos52
strrpos52
FUNÇÕES PARA EDIÇÃO DE STRINGS52
chop52
ltrim52
trim53
strrev53
strtolower53
strtoupper53
ucfirst54
ucwords54
str_replace54
FUNÇÕES DIVERSAS54
chr54
ord54
echo5
print5
strlen5
APÊNDICE 02 - FUNÇÕES PARA TRATAMENTO DE ARRAYS56
FUNÇÕES GENÉRICAS56
Array56
range56
shuffle57
sizeof57
FUNÇÕES DE “NAVEGAÇÃO”57
reset57
end57
next57
prev57
pos58
key58
each58
FUNÇÕES DE ORDENAÇÃO58
sort59
rsort59
asort59
arsort59
ksort59
usort59
uasort60
uksort60
SOBRE O AUTOR DA APOSTILA61
*18 )5(( '2&80(17$7,21 /,&(16(62

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

O que é PHP?

PHP é uma linguagem que permite criar sites WEB dinâmicos, possibilitando uma interação com o usuário através de formulários, parâmetros da URL e links. A diferença de PHP com relação a linguagens semelhantes a Javascript é que o código PHP é executado no servidor, sendo enviado para o cliente apenas html puro. Desta maneira é possível interagir com bancos de dados e aplicações existentes no servidor, com a vantagem de não expor o código fonte para o cliente. Isso pode ser útil quando o programa está lidando com senhas ou qualquer tipo de informação confidencial.

O que diferencia PHP de um script CGI escrito em C ou Perl é que o código PHP fica embutido no próprio HTML, enquanto no outro caso é necessário que o script CGI gere todo o código HTML, ou leia de um outro arquivo.

O que pode ser feito com PHP?

Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita também com PHP, como coletar dados de um formulário, gerar páginas dinamicamente ou enviar e receber cookies.

PHP também tem como uma das características mais importantes o suporte a um grande número de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vários outros. Construir uma página baseada em um banco de dados torna-se uma tarefa extremamente simples com PHP.

Além disso, PHP tem suporte a outros serviços através de protocolos como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda é possível abrir sockets e interagir com outros protocolos.

Como surgiu a linguagem PHP?

A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As primeiras versões não foram disponibilizadas, tendo sido utilizadas em sua home-page apenas para que ele pudesse ter informações sobre as visitas que estavam sendo feitas. A primeira versão utilizada por outras pessoas foi disponibilizada em 1995, e ficou conhecida como “Personal Home Page Tools” (ferramentas para página pessoal). Era composta por um sistema bastante simples que interpretava algumas macros e alguns utilitários que rodavam “por trás” das home-pages: um livro de visitas, um contador e algumas outras coisas.

Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o “FI” veio de um outro pacote escrito por Rasmus que interpretava dados de formulários HTML (Form Interpreter). Ele combinou os scripts do pacote Personal Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o PHP/FI, que cresceu bastante, e as pessoas passaram a contribuir com o projeto.

Estima-se que em 1996 PHP/FI estava sendo usado por cerca de 15.0 sites pelo mundo, e em meados de 1997 esse número subiu para mais de 50.0. Nessa época houve uma mudança no desenvolvimento do PHP. Ele

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$ deixou de ser um projeto de Rasmus com contribuições de outras pessoas para ter uma equipe de desenvolvimento mais organizada. O interpretador foi reescrito por Zeev Suraski e Andi Gutmans, e esse novo interpretador foi a base para a versão 3.

Atualmente o uso do PHP3 vem crescendo numa velocidade incrível, e já está sendo desenvolvida a versão 4 do PHP.

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

2. Sintaxe Básica

Delimitando o código PHP

O código PHP fica embutido no próprio HTML. O interpretador identifica quando um código é PHP pelas seguintes tags:

<?php comandos ?>

<script language=”php”> comandos </script>

O tipo de tags mais utilizado é o terceiro, que consiste em uma “abreviação” do primeiro. Para utilizá-lo, é necessário habilitar a opção short-tags na configuração do PHP. O último tipo serve para facilitar o uso por programadores acostumados à sintaxe de ASP. Para utilizá-lo também é necessário habilitá-lo no PHP, através do arquivo de configuração php.ini.

Separador de instruções

Entre cada instrução em PHP é preciso utilizar o ponto-e-vírgula, assim como em C, Perl e outras linguagens mais conhecidas. Na última instrução do bloco de script não é necessário o uso do ponto-e-vírgula, mas por questões estéticas recomenda-se o uso sempre.

Nomes de variáveis

Toda variável em PHP tem seu nome composto pelo caracter $ e uma string, que deve iniciar por uma letra ou o caracter “_”. PHP é case sensitive, ou seja, as variáveis $vivas e $VIVAS são diferentes. Por isso é preciso ter muito cuidado ao definir os nomes das variáveis. É bom evitar os nomes em maiúsculas, pois como veremos mais adiante, o PHP já possui alguma variáveis pré-definidas cujos nomes são formados por letras maiúsculas.

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

Comentários Há dois tipos de comentários em código PHP:

Comentários de uma linha:

Marca como comentário até o final da linha ou até o final do bloco de código PHP – o que vier antes. Pode ser delimitado pelo caracter “#” ou por duas barras ( // ).

Exemplo: <? echo “teste”; #isto é um teste ?>

<? echo “teste”; //este teste é similar ao anterior ?>

Comentários de mais de uma linha:

Tem como delimitadores os caracteres “/*” para o início do bloco e “*/” para o final do comentário.

Se o delimitador de final de código PHP ( ?> ) estiver dentro de um comentário, não será reconhecido pelo interpretador.

Exemplos:

<? echo “teste”; /* Isto é um comentário com mais de uma linha, mas não funciona corretamente ?> */

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

3. Criando os primeiros scripts

Primeiro Exemplo

Neste exemplo, criaremos um script com uma saída simples, que servirá para testar se a instalação foi feita corretamente:

<html> <head><title>Aprendendo PHP</title></head>

<body>

<?php echo "Primeiro Script"; ?>

</body> </html>

Salve o arquivo como “primeiro.php3” no diretorio de documentos do Apache (ou o Web Server escolhido). Abra uma janela do navegador e digite o endereço “http://localhost/primeiro.php3”.

Verificando o código fonte da página exibida, temos o seguinte:

<html> <head><title>Aprendendo PHP</title></head>

<body>

Primeiro Script

</body> </html>

Isso mostra como o PHP funciona. O script é executado no servidor, ficando disponível para o usuário apenas o resultado. Agora vamos escrever um script que produza exatamente o mesmo resultado utilizando uma variável:

<html> <head><title>Aprendendo PHP</title></head>

<body>

<?php $texto = "Primeiro Script"; echo $texto; ?>

</body> </html>

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

Utilizando formulários HTML

Ao clicar num botão “Submit” em um formulário HTML as informações dos campos serão enviadas ao servidor especificado para que possa ser produzida uma resposta. O PHP trata esses valores como variáveis, cujo nome é o nome do campo definido no formulário. O exemplo a seguir mostra isso, e mostra também como o código PHP pode ser inserido em qualquer parte do código HTML:

<html> <head><title>Aprendendo PHP</title></head>

<body>

<?php if ($texto != "") echo "Você digitou \"$texto\"<br><br>"; ?>

<form method=post action="<? echo $PATH_INFO; ?>"> <input type="text" name="texto" value="" size=10>

<br>

<input type="submit" name="sub" value="Enviar!">

</form>

</body> </html>

Ao salvar o arquivo acima e carregá-lo no browser, o usuário verá apenas um formulário que contém um espaço para digitar o texto, como visto na figura 01. Ao digitar um texto qualquer e submeter o formulário, a resposta, que é o mesmo arquivo PHP (indicado pela constante $PATH_INFO, que retorna o nome do arquivo) será como na figura 02:

[Imagem16] [Imagem17] figura 01figura 02

Isso ocorre porque o código PHP testa o conteúdo da variável $texto. Inicialmente ele é uma string vazia, e por isso nada é impresso na primeira parte. Quando algum texto é digitado no formulário e submetido, o PHP passa a tratá-lo como uma variável. Como no formulário o campo possui o nome “texto”, a variável com seu conteúdo será $texto. Assim, no próximo teste o valor da variável será diferente de uma string vazia, e o PHP imprime um texto antes do formulário.

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

Interagindo com o browser

PHP também permite interagir com informações do browser automaticamente. Por exemplo, o script a seguir mostra informações sobre o browser do usuário. As figuras 03 e 04 mostram o resultado visto no Netscape

Communicator e o Microsoft Internet Explorer, respectivamente.

<html> <head><title>Aprendendo PHP</title></head>

<body>

<? echo $HTTP_USER_AGENT; ?>

</body> </html>

[Imagem18] [Imagem19] figura 03figura 04

Observe que o resultado mostra características de cada browser, como a versão, e no caso do

Communicator até o idioma (“en”). Com isso, se você criar uma página com recursos disponíveis somente no Internet Explorer, por exemplo, pode esconder o código dos outros browsers, com um código semelhante ao seguinte:

<html> <head><title>Aprendendo PHP</title></head>

<body>

<? if (strpos($HTTP_USER_AGENT,"MSIE 5") != 0) { echo "Você usa Internet Explorer"; } else { echo "Você não usa Internet Explorer"; } ?>

</body> </html>

Neste exemplo, será apenas exibido um texto informando se está sendo utilizado o Microsoft Internet

Explorer ou não, mas para outras funções poderia ser utilizado algo semelhante.

É bom notar o surgimento de mais uma função no código anterior: strpos(string1,string2).

Essa função retorna a posição da primeira aparição de string2 em string1, contando a partir de zero, e não retorna valor algum se não ocorrer. Assim, para testar se a string $HTTP_USER_AGENT contém a string “MSIE”, basta testar se strpos devolve algum valor.

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

Acessando Bancos de Dados

Neste documento todos os exemplos referentes a acesso de bancos de dados utilizarão o gerenciador de banco de dados MySQL, que pode ser copiado gratuitamente no site http://www.mysql.org

Para interagir com uma base de dados SQL existem três comandos básicos que devem ser utilizados: um que faz a conexão com o servidor de banco de dados, um que seleciona a base de dados a ser utilizada e um terceiro que executa uma “query” SQL.

Conexão com o servidor

A conexão com o servidor de banco de dados mySQL em PHP é feita através do comando mysql_connect, que tem a seguinte sintaxe:

int mysql_connect(string /*host [:porta]*/ , string /*login*/ , string /*senha*/ );

Os parâmetros são bastante simples: o endereço do servidor(host), o nome do usuário (login) e a senha para a conexão. A função retorna um valor inteiro, que é o identificador da conexão estabelecida e deverá ser armazenado numa variável para ser utilizado depois. No nosso exemplo, temos como servidor de banco de dados a mesma máquina que roda o servidor http, como login o usuário “root” e senha “phppwd”:

$conexao = mysql_connect(“localhost”, “root”, “phppwd”);

Assim, se a conexão for bem sucedida (existir um servidor no endereço especificado que possua o usuário com a senha fornecida), o identificador da conexão fica armazenado na variável $conexão.

Seleção do banco de dados

Uma vez conectado, é preciso selecionar o banco de dados existente no servidor com o qual desejamos trabalhar. Isso é feito através da função int mysql_select_db, que possui a seguinte sintaxe:

int mysql_select_db(string /*nome_base*/, int /*conexao*/ );

O valor de retorno é 0 se o comando falhar, e 1 em caso de sucesso. O nome da base de dados a selecionar é o primeiro parâmetro fornecido, seguido pelo identificador da conexão. Se este for omitido, o interpretador PHP tentará utilizar a última conexão estabelecida. Recomenda-se sempre explicitar esse valor, para facilitar a legibilidade do código. No nosso exemplo, a base de dados a ser selecionada possui o nome “ged”:

mysql_select_db(“ged”, $conexao);

&RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR ± &,36*$

Após a execução desse comando qualquer consulta executada para aquela conexão utilizará a base de dados selecionada.

Execução de queries SQL

Após estabelecida a conexão e selecionada a base de dados a ser utilizada, quase toda a interação com o servidor mySQL pode ser feita através de consultas escritas em SQL (Structured Query Language), com o comando mysql_query, que utiliza a seguinte sintaxe: int mysql_query(string consulta, int [conexao] );

O valor de retorno é 0 se falhar ou 1 em caso de sucesso. Sucesso aqui significa que a consulta está sintaticamente correta e foi executada no servidor. Nenhuma informação sobre o resultado é retornada deste comando, ou até mesmo se o resultado é o esperado. No caso da consulta ser um comando SELECT, o valor de retorno é um valor interno que identifica o resultado, que poderá ser tratado com a função mysql_result() e outras. A string query não deve conter ponto-e-vírgula no final do comando, e o identificador da conexão é opcional. Vamos criar uma tabela como exemplo:

$cria = “CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50))”; mysql_query($cria, $conexao);

Agora vejamos como ficou o código completo para executar uma query SQL numa base de dados mySQL, com um exemplo que cria uma tabela chamada exemplo e adiciona alguns dados:

$conexao = mysql_connect(“localhost”, “root”, “phppwd”); mysql_select_db(“ged”, $conexao);

$cria = “CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50))”;

$insere1 = “INSERT INTO exemplo (nome,email) VALUES (“Mauricio Vivas”,”vivas@usa.net”);

$insere2 = “INSERT INTO exemplo (nome,email) VALUES (“Jose da Silva”,”jose@teste.com”);

$insere3 = “INSERT INTO exemplo (nome,email) VALUES (“Fernando Henrique Cardoso”,”fhc@planalto.gov.br”);

$insere4 = “INSERT INTO exemplo (nome,email) VALUES (“Bill Clinton”,”president@whitehouse.gov”); mysql_query($cria, $conexao); mysql_query($insere1, $conexao); mysql_query($insere2, $conexao); mysql_query($insere3, $conexao); mysql_query($insere4, $conexao);

(Parte 1 de 4)

Comentários