Sie sind auf Seite 1von 61

Florianpolis SC, outubro de 2000.

Curso de PHP e MySQL

Flvio S. Gonzaga <bim@inf.ufsc.br>


Guilherme Birckan <birckan@inf.ufsc.br>

ndice

1 MySQL..........................................................................................................3

1.1 - Principais Caractersticas ................................................................3

1.2 - A Estrutura ......................................................................................4

1.3 - O Sistema de privilgios..................................................................5

1.4 - O Ambiente MySQL........................................................................6

1.5 - Exemplos.........................................................................................7

2 - PHP...............................................................................................................11

2.1 - Um breve histrico de PHP............................................................13

2.2 - Comentrios....................................................................................14

2.3 Variveis........................................................................................14

2.3.1 Inteiros e ponto flutuante............................................................15

2.3.2 Arrays ........................................................................................15

2.3.3 Strings.........................................................................................16

2.3.4 Variveis de variveis.................................................................17


2.3.5 Type casting................................................................................17

2.3.6 Variveis por referncia no PHP4 ..............................................17

2.4 - Operaes Matemticas..................................................................18

2.5 - Operadores.....................................................................................18

Exemplo.....................................................................................18

Exemplo.....................................................................................19

2.6 - Operaes com strings....................................................................20

2.7 - Controlando o fluxo e LOOPS.......................................................21

2.8 - Tratando formulrios......................................................................22

2.9 Funes.........................................................................................23

2.10 Classes ........................................................................................25

2.11 - Acesso banco de dados..............................................................26

2.12 - FTP e HTTP ................................................................................28

2.13 - Sesses.........................................................................................29

2.14 - Tratamento de Arquivos...............................................................29

2.15 - Tratamento de Erros.....................................................................31

Bibliografia........................................................................................................32

1 MySQL
MySQL um servidor de banco de dados SQL multi-usurio e multi-
threaded. SQL a linguagem de banco de dados mais popular no mundo.
MySQL uma implementao cliente-servidor que consiste de um servidor e
diferentes programas clientes e bibliotecas.
SQL uma linguagem padronizada que torna fcil o armazenamento e
acesso de informaes. Por exemplo, pode-se usar SQL para recuperar
informaes de produtos e armazenar informaes de clientes para um site
Web.
O servidor MySQL tambm rpido e flexvel o suficiente para permitir
armazenar logs e figuras nele. As principais vantagens do MySQL so
velocidade, robustez e facilidade de uso. MySQL foi originalmente desenvolvido
pois a equipe da T.c.X. DataKonsultAB (empresa que desenvolveu MySQL)
precisava de um servidor SQL que pudesse manipular banco de dados grandes
numa ordem de magnitude mais rpida que qualquer banco de dados comercial
pudesse lhes oferecer. A equipe da TcX tem usado MySQL desde 1996 em um
ambiente com mais de 40 banco de dados contendo 10.000 tabelas, das quais
mais de 500 tm mais de 7 milhes de registros. Isto soma aproximadamente
100 Gbytes de dados.

1.1 - Principais Caractersticas

As principais caractersticas do MySQL so:

Manipula um nmero ilimitado de usurios simultneos;


Alta velocidade de execuo;
Possui APIs C, C++, Eiffel, Java, Perl, PHP, Python e TCL;
Trabalha com diferentes plataformas: Unix, Windows etc.;
Disponibiliza diversos tipos de dados: INT (inteiros sinalizados e no-

sinalizados de 1, 2, 3, 4 e 8 bytes), FLOAT, DOUBLE, CHAR, VARCHAR,


TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET e ENUM;
Alta velocidade na execuo de joins usando multi-join otimizado;

Suporte completo a operadores e funes nas clusulas SELECT e WHERE;


Suporte s clusulas GROUP BY e ORDER BY e a funes de grupo
(COUNT(), AVG(), STD(), SUM(), MAX() e MIN()); Suporte a LEFT OUTER
JOIN com a sintaxe ANSI SQL e ODBC; Possibilidade de misturar tabelas de
diferentes bancos de dados na mesma query;
Sistema de privilgios flexvel, simples, eficiente e seguro, que permite
verificao baseada em host.
Suporte a ODBC (Open DataBase Connectivity) para Windows95 e suas
funes. possvel, por exemplo, usar o Access para conectar ao servidor
MySQL;
Tabelas de disco sob a forma B-tree rpidas com compresso de
ndices;
Permite 16 ndices por tabela;
Disponibiliza registros de tamanho fixos e variados;
Manipula grandes bancos de dados com vastos volumes de informaes,
na ordem de 50.000.000 registros;
Escrita em C e C++. Testada com diferentes compiladores;
Possui um sistema de alocao de memria extremamente rpido;
Suporte total ao conjunto de caracteres ISO-8859-1 Latin1, todos os
dados so salvos e ordenados neste formato;
Permite a definio de aliases em colunas e tabelas como no padro
SQL92;
DELETE, INSERT, REPLACE e UPDATE devolvem o nmero de linhas
afetadas pelo comando;
Nomes de funes no entram em conflito com nomes de tabelas ou
colunas;
O servidor pode emitir mensagens de erros em diversas linguagens;
Clientes podem conectar ao servidor MySQL utilizando conexes
TCP/IP, Unix sockets ou sob o Windows NT.
1.2 - A Estrutura

Um banco de dados nada mais do que uma hierarquia de estruturas de


dados complexas. Em MySQL, como em muitos outros bancos de dados, o
conceito da estrutura que mantm os blocos (ou registros) de informaes
chamado de tabela. Estes registros, por sua vez, so constitudos de objetos
menores que podem ser manipulados pelos usurios, conhecidos por tipos de
dados (datatypes). Juntos, um ou mais datatypes, formam um registro
(record). Uma hierarquia de banco de dados pode ser considerada como:
Banco de dados > Tabela > Registro > Tipo de dados. Os tipos de dados
possuem diversas formas e tamanhos, permitindo ao programador criar tabelas
especficas de acordo com suas necessidades. MySQL prov um conjunto bem
grande de tipos de dados, entre eles:

CHAR(M): strings de tamanho fixo entre 1 e 255 caracteres;


VARCHAR(M): strings de tamanho flexvel entre 1 e 255 caracteres.
VARCHAR ocupa sempre o menor espao possvel, no entanto 50% mais
lento que o tipo CHAR;
INT(M) [Unsigned]: nmeros inteiros entre -2147483648 e 2147483647. A
opo "unsigned" pode ser usada na declarao mudando o intervalo para 0
e 4294967295 para inteiros nosinalizados;
FLOAT [(M,D)]: nmeros decimais com D casas decimais;
DATE: armazena informao relativa a datas. O formato default 'YYYY-MM-
DD' e as datas variam entre '0000-00-00' e '9999-12-31'. MySQL prov um
poderoso conjunto de comandos para formatao e manipulao de datas;
TEXT/BLOB: strings entre 255 e 65535 caracteres. A diferena entre TEXT e
BLOB que no primeiro o texto no sensvel ao caso e no segundo sim;
SET: conjunto de valores strings; ENUM: conjunto de
valores strings, difere do SET pois s so armazenados
valores previamente especificados.

Alm dos tipos de dados existem outras opes a serem usadas em


conjunto com os tipos de dados para a criao de tabelas e especificao de
colunas:

Primary Key (Chave Primria): usada para diferenciar um registro do outro.


Cada registro, desta forma, no pode ter a mesma chave primria.
Auto_increment: uma coluna com esta opo automaticamente
incrementada quando da insero de um registro; NOT NULL:
no permite a insero de valores nulos.
1.3 - O Sistema de privilgios

Administrar o servidor MySQL, envolve a manuteno do banco de dados


com as configuraes do servidor (hosts, usurios e bancos de dados), ou seja,
o sistema de privilgios. O conceito do sistema de privilgios simples, pela
atribuio de um conjunto de privilgios, um usurio em determinado host tem
permisso para executar comandos sobre uma base de dados. Estes privilgios
estabelecem um conjunto de regras no qual o servidor MySQL se baseia, e
estas regras podem ser, por exemplo, permisso para inserir, selecionar,
excluir informaes de uma tabela, ou criar, modificar tabelas etc. Portanto, o
sistema de privilgio, se resume em trs tabelas principais: host, user e db
tendo como hierarquia, da mais alta para a mais baixa, a ordem apresentada.

A tabela host determina quais os hosts que esto habilitados a acessar o


servidor MySQL. Sua estrutura de colunas a seguinte: Host, Db,
Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv,
sendo que as duas primeiras colunas estabelecem, de qual host o banco de
dados pode ser acessado e as colunas termindas em priv so privilgios de
acesso especificados com Y ou N (o default N).
A tabela user determina os usurios que podem acessar o servidor e suas
senhas de identificao a partir de um host. Sua estrutura de colunas :
Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv;
A tabela db contm as informaes relativas a qual banco de dados um
usurio de um certo host pode acessar: Host, Db, User, Select_priv,
Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv.

1.4 - O Ambiente MySQL

As tabelas acima funcionam exatamente como tabelas normais MySQL.


Elas podem ser facilmente modificadas usando comandos como INSERT,
UPDATE e DELETE.
Para entrar no ambiente MySQL monitor, ou o programa cliente mysql, e
acessar o servidor MySQL, o comando a ser executado o seguinte:

shell> mysql h host u username p databasename

A opo -h host significa especificar o nome do host, u username


significa especificar o nome do usurio que est acessando, -p solicita um
pedido de senha e o databasename o nome do banco de dados que se deseja
acessar. A resposta a este comando o pedido de identificao do usurio
atravs da senha e em seguida a apresentao e o prompt do ambiente a
espera de comandos:

Enterpassword:******
WelcometotheMySQLmonitor.Commandsendwith;or\g.

Your MySQL connection id is 459 to server version: 3.22.20alog

Type 'help' for help.

mysql>

A partir do momento que se est conectado ao servidor, possvel


realizar vrios comandos sobre os bancos de dados que se tem permisso,
como selecionar um banco de dados (use db_name;), buscar de dados em
tabelas atravs de queries (consultas do tipo select
* from uma_tabela;), inserir valores em uma tabela (insert into uma_tabela
values(1,2);), criar bancos de dados (create uma_bd;), criar tabelas
(create table teste(id int, descricao varchar(50));), mostrar tabelas do
banco de dados selecionado (show tables;), descrever a estrutura de uma
tabela (describe uma_tabela; ou show columns from uma_tabela;),
remover tabelas (drop table teste;) e outros comandos SQL comuns
manipulao e controle de bancos de dados. O comando para desconectar-
se do ambiente quit.

1.5 - Exemplos

[shell]$mysqluroot

WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis2toserverversion:3.22.25

Type'help'forhelp.

mysql>showdatabases;
++
|Database|
++
|mysql|
|test|
++
2rowsinset(0.00sec)
mysql>createdatabaseCurso;
QueryOK,1rowaffected(0.00sec)

mysql>showdatabases;
++
|Database|
++

|Curso |
|mysql |
|test |

+----------+
3 rows in set (0.00 sec)

mysql> use Curso;


Database changed

mysql> create table Aluno (


-> ID int not null auto_increment primary key,
-> Nome varchar(40),
-> Email varchar(30),
-> DataNasc date,
-> Matricula char(9) );

Query OK, 0 rows affected (0.00 sec)

mysql> show tables;

+-----------------+
| Tables in Curso |
+-----------------+
| Aluno |
+-----------------+
1 row in set (0.00 sec)

mysql> desc Aluno;


+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+

|ID |int(11) | |PRI|0 |auto_increment|


|Nome |varchar(40)|YES | |NULL | |
|Email |varchar(30)|YES | |NULL | |
| |date |YES | |NULL | |
DataNasc
|Matricula|
|YES | |NULL | |
varchar(9)

+-----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> alter table Aluno drop Email;


Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table Aluno add Endereco varchar(100) after Nome;


Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc Aluno;


+++++++
|Field|Type|Null|Key|Default|Extra|
+++++++
|ID|int(11)||PRI|0|auto_increment|
|Nome|varchar(40)|YES||NULL||
|Endereco|varchar(100)|YES||NULL||
|DataNasc|date|YES||NULL||
|Matricula|varchar(9)|YES||NULL||
+++++++
5rowsinset(0.00sec)

mysql>insertintoAlunovalues(NULL,'Guilherme','Rua
Pirineus,43','19791118','97232203');
QueryOK,1rowaffected(0.00sec)

mysql>insertintoAlunovalues(NULL,'Fulano','RuaPigmeus,
69','19801024','97232999');
QueryOK,1rowaffected(0.01sec)

mysql>select*fromAluno;
++++++
|ID|Nome|Endereco|DataNasc|Matricula|
++++++
|1|Guilherme|RuaPirineus,43|19791118|97232203|
|2|Fulano|RuaPigmeus,69|19801024|97232999|
++++++
2rowsinset(0.00sec)
mysql>selectID,NomefromAlunowhereID<10;

+++
|ID|Nome|
+++
|1|Guilherme|
|2|Fulano|
+++
2rowsinset(0.00sec)

mysql>deletefromAlunowhereID=2;
QueryOK,1rowaffected(0.00sec)

mysql>updateAlunosetNome='GuilhermeBirckan'whereID=1;
QueryOK,1rowaffected(0.00sec)
Rowsmatched:1Changed:1Warnings:0

mysql>select*fromAluno;
++++++
|ID|Nome|Endereco|DataNasc|Matricula|
++++++
|1|GuilhermeBirckan|RuaPirineus,43|19791118|97232203|
++++++
1rowinset(0.00sec)

mysql>grantallprivilegesonCurso.*tovisitante@localhost
identifiedbysenha2000;
QueryOK,0rowsaffected(0.02sec)

mysql>quit
Bye

[shell]$mysqluvisitante;

WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis3toserverversion:3.22.25

Type'help'forhelp.

mysql>useCurso;
Readingtableinformationforcompletionoftableandcolumnnames
YoucanturnoffthisfeaturetogetaquickerstartupwithA
Databasechanged
mysql>showtables;
++
|TablesinCurso|
++
|Aluno|
++
1rowinset(0.00sec)

mysql>select*fromAluno;
++++++
|ID|Nome|Endereco|DataNasc|Matricula|
++++++
|1|GuilhermeBirckan|RuaPirineus,43|19791118|97232203|
++++++
1rowinset(0.00sec)

mysql>droptableAluno;
QueryOK,0rowsaffected(0.00sec)

mysql>dropdatabaseCurso;
QueryOK,0rowsaffected(0.00sec)

mysql>showdatabases;

++
|Database|
++
|mysql|
|test|
++
2rowsinset(0.00sec)

mysql>quit
Bye

2 - PHP
PHP uma linguagem de script no lado do servidor (server-side)
embutida no HTML, portanto necessrio instalar o interpretador da linguagem
no servidor de Web. PHP, assim como MySQL, esto disponveis para download
para sistemas UNIX, mas para o sistema operacional Windows precisam de
uma licena.
PHP diferente de um script CGI escrito em linguagens como Perl ou C
pois, ao invs de escrever um programa com muitos comandos para sada em
HTML, voc escreve um script HTML com um cdigo embutido para fazer a
mesma coisa. O cdigo PHP encapsulado em tags especiais de incio e fim
que permitem voc alternar para dentro e fora do modo PHP.
O que distingue PHP de algo como um Javascript no lado do cliente que
o cdigo executado no servidor. Se voc tivesse um script PHP em seu
servidor, o cliente iria receber os resultados da execuo deste script, e de
maneira alguma poderia determinar qual o cdigo que est por baixo desta
execuo. possvel configurar um servidor Web para processar todos os
arquivos HTML com cdigo PHP, e ento realmente no h maneira de os
usurios perceberem que existe cdigo embutido na pgina HTML.
No nvel mais bsico, PHP pode fazer qualquer outra coisa que um
programa CGI pode fazer, tal como coletar dados de um formulrio, gerar
contedo de pginas dinmicas, ou enviar e receber cookies.
Talvez a maior e mais significante caracterstica em PHP seu suporte a
uma faixa muito ampla de bancos de dados. Escrever uma pgina Web baseada
em um banco de dados muito simples. Os seguintes bancos de dados so
atualmente suportados: Adabas D, Interbase, Solid, Dbase, mSQL, Sybase,
Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL.
PHP tambm tem suporte a comunicao para outros servios usando
protocolos tais como IMAP, SNMP, NNTP, POP3, ou mesmo HTTP. Voc pode
tambm abrir sockets de rede e interagir usando outros protocolos.
Um exemplo de um script dinmico que imprime a data atual est a
seguir:

<HTML>

<HEAD>

<TITLE>Scriptdeexemplo</TITLE></HEAD>

<BODY>

<CENTER>Bemvindo ao script de exemplo:</CENTER>

<?php

/* "<?" acima indica o incio do script PHP */

$hoje = date("Ymd");

print "<BR><BR>Hoje : $hoje.";

# o sinal "?>" seguinte indica o fim do script

?>
</BODY>
</HTML>

Assumindo que hoje dia 06 de maio de 2000, a sada do script acima


seria:

Bemvindoaoscriptdeexemplo:

Hoje:20000506.

Alguns pontos a considerar:

1 Todos os comandos PHP3.0 devem ser envolvidos pelas tags <? e ?>.
Uma segunda maneira de denotar comandos PHP envolvendo-os nas tags <?
php e ?>;
2 Todas as sentenas de sada para a tela devem ser envolvidas por aspas
() e conduzidas pelos comandos print ou echo;
3 Quase todos os comandos PHP3.0 terminam com um ponto-e-vrgula;
4 Todo comando HTML dentro do comando print ser executado
normalmente pelo browser e desempenhar sua funo usual;
5 Documentos incluindo cdigo PHP devem ser salvos com a extenso .php
ou .php3, isto informar ao interpretador PHP3.0 para executar os comandos
encontrados dentro das tags <? e ?>. possvel tambm utilizar extenses
diferentes do padro, mas isso acarretar

o uso das tags <?php e ?> no sentido de informar ao servidor Web que o
interpretador PHP3.0 que se encarregar de executar o script, j que isto
no pode ser identificado pela extenso do arquivo;
6. A funo date apresentada no script acima uma das milhares de funes
que o PHP disponibiliza, ela tem o formato: string date (string formato, int
timestamp);, ou seja, retorna um string e aceita dois parmetros: o tipo de
1
formato a ser aprensentado e um valor timestamp de data opcional (quando omitido,
como no nosso caso, considera a data atual).
Uma grande caracterstica de PHP3.0 a capacidade de construo de templates HTML, que so muito teis
quando se est desenvolvendo um site com muitas pginas. Isso possvel atravs do comando include que permite a
insero de cdigo, provindo de um arquivo separado, dentro de um documento HTML. Desta maneira possvel
estabelecer, por exemplo, um arquivo de rodap num arquivo chamado rodape.txt que aparecer em vrias pginas
sem precisar reescrever o cdigo, apenas utilizando o comando include, como segue:

1
Timestamp um formato especial de data, geralmente usado em sistemas UNIX, ele
armazena sob a forma de um nmero inteiro, os segundos, minutos, horas, dia, ms e
ano de uma data. Sendo que a cada segundo ele incrementa o seu valor, tornando
simples a manipulao de data a partir de operadores como soma, subtrao etc.
<? include("rodape.txt"); ?>
Um outro aspecto importante de PHP a capacidade de modificar
variveis passadas de formulrios HTML, tornando possvel a realizao de
vrias tarefas como: envio de um e-mail (atravs da funo mail()) baseado
em informaes de uma pgina, impresso de pginas personalizadas,
passagem e armazenamento de informaes em um banco de dados etc.
Existem vrias outras caractersticas interessantes a destacar sobre PHP,
entre elas pode-se citar: Suporte ao modelo de orientao a objetos, Interao
com bancos de dados, Criao de imagens GIF, Autenticao HTTP,
Manipulao de erros, Manipulao de cookies, Suporte para upload de
arquivos, Conexes persistentes de bancos de dados, Manipulao de arquivos
remotos entre muitas outras.
Para se ter uma idia algumas classes de funes disponveis no PHP3.0
so listadas a seguir: funes de suporte a bancos de dados, especficas ao
Apache (servidor de Web), de array, matemticas, calendrio, data, diretrios,
execuo de programas, HTTP, imagem, filesystem, hashes, Rede, NIS, PDF,
Perl, expresses regulares, strings, URL, compresso, XML etc.

2.1 - Um breve histrico de PHP

PHP foi concebido num dia do outono de 1994 por Rasmus Lerdof. A
primeira verso utilizada ficou disponvel no incio de 1995 e foi conhecida
como Personal Home Page Tools. Ele consistia de um analisador muito simples
que entendia somente algumas macros e um nmero de utilidades que
estavam em uso comum nas home pages at ento, um livro de visitantes
(Guestbook), um contador e algumas outras coisas. O analisador foi escrito em
meados de 1995 e foi chamado de PHP/FI verso 2. Rasmus combinou os
scripts do Personal Home Page Tools com o Form Interpreter e adicionou
suporte a mSQL. PHP/FI cresceu e as pessoas comearam a contribuir com o
seu cdigo.
difcil dar estatsticas, mas estima-se que, no fim de 1996, PHP/FI
estava em uso em pelo menos 15.000 sites pelo mundo. Na metade de 1997
este nmero cresceu para mais de 50.000 e nesta poca ocorreram mudanas
no desenvolvimento do PHP. O analisador foi reescrito por Zeev Suraski e Andi
Gutmans e o novo analisador deles formou a base do PHP verso 3.
2.2 - Comentrios

Todo programa deve possuir comentrios, visando o entendimento do


cdigo em consultas posteriores. No PHP, existem trs tipos de marcadores de
comentrio, que so:

// e # para comentrio de uma linha. Por exemplo:

//atribuionomevarivel
$nome="GuilhermeBirckan";
$email="birckan@inf.ufsc.br";#atribuioEmailvarivel

e para comentrios que ocupem mais de uma linha, usamos os


marcadores /* */.

/*
Naslinhasabaixo,atribuiremososvalores
Donomeedoemailsrespectivasvariveis
*/
$nome="GuilhermeBirckan";
$email="birckan@inf.ufsc.br";

2.3 Variveis

Para comear, vamos ver como o PHP trata suas variveis (ou
constantes), que podem ser variveis escalares ou no-escalares. As variveis
escalares so aquelas que podem ser retrabalhadas, ou "divididas em pedaos
menores", enquanto as no escalares so as arrays (matrizes) e os objetos.
A identificao de uma varivel, independente do seu tipo pelo sinal $
colocado como primeiro caractere, como abaixo:

$nome="GuilhermeBirckan";
$matricula=97232203;

A primeira varivel do tipo string, e a segunda, inteiro (ambas


escalares). Vale lembrar que, como a linguagem C, as variveis $nome e $Nome
so consideradas diferentes, pois o PHP as trata como sensveis ao caso.
2.3.1 Inteiros e ponto flutuante

As variveis inteiras so bastante simples de ser usadas, sem nenhuma


diferena das demais linguagens que voc est habituado a usar. Segue as
sintaxes abaixo:

$a = 123; $b =
-123;

As variveis em ponto flutuante tambm so bem simples, lembrando


que no lugar da vrgula devemos usar um ponto (.):

$a = 1.23; // a recebe 1,23 $a =


1.2e3;
2.3.2 Arrays

PHP suporta arrays simples e mltiplas dimenses (tambm chamadas de


matrizes). Usa-se uma varivel simples indexada para denotar um array. Esta
indexao pode ser feita por nmeros ou mesmo por strings usando colchetes:

$a[1] = abc; $a[1]


= def; $b[a] =
15;

Para se adicionar valores no final do array voc pode simplesmente usar


esta sintaxe:

$c[] = abc; // $c[0] == abc $c[]


= def; // $c[1] == def

Existem funes j implementadas de ordenamento de vetores, tais


como: sort()

$fruits = array ("lemon", "orange", "banana", "apple"); sort


($fruits);

Os arrays multidimensionais so usados quase que da mesma forma que


os arrays simples:

$a[1][2] = $f; $b[1][bola] = $f // Voc pode misturar ndices $b[bar][5]


[mesa][2] = $f; //array de 4 dimenses Em PHP3 temos um problema de
referenciar arrays

multidimencionais dentro de strings. O exemplo a seguir no funciona:


$a[1][5] = $f;
echo Isto no vai funcionar: $a[1][5];

Mas voc pode fazer isso usando a concatenao: echo

Agora funciona: . $a[1][5];

2.3.3 Strings

Significad
o
\
Nova linha
n
Tab
\t
horizontal
Contra
\\
barra
\
Dollar
$

Atribuies e concatenaes:

$str = Abacate; $str = $str . grande; //concatena grande na string


$str .= e madura; // concatena e madura na string

Pegando um caracter dentro de uma string:

$primeiro = $str[0];
$ultimo = $str[ strlen($str) 1 ];

Alguns exemplos de converso de strings:

$a = 1 + "10.5"; // $a um double (11.5) $b = 1 + "10 Small Pigs";


// $b um inteiro (11) $c = 1 + "10 Little Piggies"; // $c um inteiro
(11) $d = "10.0 ratos " + 1; // $d um inteiro (11) $e = "10.0
ratos " + 1.0; // $e um double (11)
2.3.4 Variveis de variveis

Algumas vezes conveniente voc utilizar valores de variveis como


nomes de outras variveis, utilizando assim variveis de forma dinmica. Isto
possvel em PHP!

$a = hello; // Isto uma varivel simples $$a =


world; /* Acabamos de criar uma varivel $hello com o
contedo world */

Voc tambm pode imprimir estas variveis de forma dinmica:

echo $a ${$a};

Ter como resultado: hello world

2.3.5 Type casting

Type casting em PHP funciona


praticamente como em C:
$a = 10; # $a um inteiro $b = (double) $a; #
$b um double

Converte para
(int), (integer)
inteiro
(real), (double), Converte para
(float) double
Converte para
(string)
string
Converte para
(array)
array
Converte para
(object)
objeto

2.3.6 Variveis por referncia no PHP4

Na verso 4 do PHP, as variveis podem receber valor por referncia. Isto


significa que ao para atribuir o valor a uma varivel no usamos um valor, mas
um "ponteiro" para o valor em questo. Na verdade, este "ponteiro" uma
outra varivel:

$nome = "Guilherme Birckan";


$identificacao = &$nome;

Deste modo, a varivel $identificacao recebe o valor de $nome e, se


uma das duas for atualizada, a outra tambm ser, mantendo o mesmo valor
em ambas.
2.4 - Operaes Matemticas

As operaes no PHP tambm seguem o padro das outras linguagens


(+, -, *, /, %[modulo da diviso], sin(), cos()). Alm destas,
o PHP tem um completo conjunto de operaes matemticas, que podem ser
consultadas nesta pgina:

http://br.php.net/manual/ref.math.php3

Um exemplo para calcular o valor lquido de um preo, depois de aplicar


10% de desconto sobre o preo bruto:

$valorbruto=10;
$desconto=10*$valorbruto/100;
$valorliquido=$valorbruto$desconto;
2.5 - Operadores

Operadores aritmticos:

Exempl
Nome
o
$a + $b Adio
$a - $b Subtrao
$a * $b Multiplicao
$a / $b Diviso
Modulo da
$a % $b
diviso

Operador de atribuio:

Exemplo
Nome

$a = $b

Atribuio

$a = ($b = 4) + 5; // $b recebe 4 e $a recebe 9


Operadores lgicos:

Exempl
Operad
o
or
$a and
E
$b
$a &&
E
$a
$a or
OU
$b
$a || $b OU
$a xor
XOR
$b
!$a NOT

Operadores de comparao:

Exemplo Nome
$a == $b Igual
$a === $b Idntico
$a != $b No igual
$a < $b Menor que
$a > $b Maior que
$a <= $b Menor ou igual
$a >= $b Maior ou igual

Operadores de execuo:

$output = `ls l`; echo <pre>$output</pre>;

Operadores de incremento/decremento:

Exemplo Nome Efeito


Pr- Incrementa $a, depois retorna seu
++$a
incremento valor
Ps- Retorna o valor de $a, depois
$a++
incremento incrementa
Pr- Decrementa $a, depois retorna seu
--$a
decremento valor
Ps- Retorna o valor de $a, depois
$a--
decremento decrementa

2.6 - Operaes com strings

Operaes com strings so uma das caractersticas mais desenvolvidas


do PHP. Para concatenar-se dois strings, usamos o operador . - Dentre as
funes mais importantes esto:

strlen(), que permite saber quantos caracteres possui a string:

echo "A palavra 'internet' possui " . strlen("internet") .


" caracteres ";

substr(), que devolve uma substring da string informada:

echo substr("abcde", 2 , 2); // Esta linha ir exibir os


caracteres "cd";

ucwords (string), converte os primeiros caracteres de strings em


maisculo.
Exemplo:

$nome=ucwords("valdirhenriquediasleite");
echo($nome);//EstalinhaexibirValdirHenriqueDiasLeite

strpos (), para saber se determinado caractere (ou substring) est


contida em uma string:

if strpos ($email, "@") {

echo("Seu email parece estar correto!\n");


} else {

echo("O email est invlido\n");


}

No exemplo acima, verificamos se o caractere "@" est contida em uma


varivel $email. Se estiver, exibe a primeira mensagem. Do contrrio, exibe a
segunda.
Outras funes relacionadas operaes com strings podem ser
encontradas em

http://br.php.net/manual/ref.strings.html
2.7 - Controlando o fluxo e LOOPS

As funes usadas para controlar o fluxo do programa e execuo de


"loops" so:

if ... else ... else if, que segue o padro da linguagem C:

if($sexo=="m"){
echo"Vocdosexo
Masculino\n";
}elseif($sexo=="f"){
echo"Vocdosexo
Feminino\n";
}else{
echo"Porfavor,informe
corretamenteseusexo\n";
}

switch, uma maneira de controlar o fluxo onde a varivel de controle do


fluxo pode ter vrias opes de valores. Este tipo de controle poderia ser feito
com uma seqncia de "ifs" e "elseifs", mas o uso do switch torna o cdigo
mais legvel e faz com que seja executado mais rapidamente, pois a verificao
da varivel "$sexo" s feita uma vez e depois comparada com as opes de
cada "case". Se no estiver em nenhuma delas, executado o bloco sob o
"default". J com o "elseif", a comparao feita novamente a cada sentena.
Neste exemplo, a diferena no to grande, mas quando o tipo de verificao
vai ficando mais complexo a velocidade comea a ser sentida. Na maioria dos
casos, vale a pena optar pelo switch.

switch($sexo){

case"m":
echo"VocdosexoMasculino\n";
break;

case"f"
echo"VocdosexoFeminino\n";
break;

casedefault:
echo"Porfavor,informe
corretamenteseusexo\n";
break;
}

Sempre inclua o comando break no final do case. Caso contrrio, a execuo


continuar at encontrar o final do switch (ou a instruo break), fazendo com
que as instrues de mais de um case sejam executadas.

while, que permite repetir o cdigo enquanto uma condio for verdadeira:
while ($contador > 0) {

$contador = $contador 2;
}

for, para execuo de um loop determinada quantidade de vezes:

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

echo "$i\n";
}

2.8 - Tratando formulrios


Vamos fazer, passo-a-passo, um script para receber os dados de um
formulrio, consistir as informaes e enviar o resultado por e-mail. Este
formulrio possui campos para digitao do nome, e-mail e telefone. Todos os
campos so obrigatrios e a consistncia do campo e-mail deve ser feita
apenas verificando a existncia do caractere @, para facilitar as coisas. J o
campo telefone deve ter sete ou oito caracteres. Tendo este cenrio, mos a
obra!

<?php

$erro = "";

if($nome==""){
$erro.="DigiteseuNome\n";}

if ((strlen($telefone) > 8) or (strlen($telefone) < 7)) {

$erro.="Onmerodotelefonedeveterseteouoito
caracteres\n";
}

if strpos ($email, "@") = 0 {

$erro .= "O email digitado no vlido\n"


}

Esta primeira parte faz a consistncia dos dados e altera o valor da


varivel $erro, caso alguma das condies no seja satisfeita. Para prosseguir,
devemos verificar a ocorrncia de erros e ento enviar o e-mail se erros no
tiverem ocorrido ou enviar uma tela de resposta informando qual o erro
aconteceu. Como o valor de $erro antes da verificao dos campos "", basta
testar se a varivel ainda tem este valor para saber se aconteceu ou no um
erro. Vamos continuar:
echo("<html><title>Envieoformulrio
abaixo</title><body><center>\n");#Cabealhoderesposta.

if($erro==""){//Nohouvenenhumerronopreenchimento
mail("birckan@inf.ufsc.br","DadosdoFormulrio","Nome:
$nome\nEmail:$email\nTelefone:$telefone\n","From:
$email\nDate:$date\n");

echo("Obrigadoporenviaresteformulrio!\n");
}else
echo("Nofoipossvelenviaroformulrio!<br>Verifiqueas
mensagensabaixo<br><br><b>$erro\n");
}
echo("</center></body></html>\n");

Pronto!

A novidades neste script :

e-mail. Sua sintaxe a seguinte: mail(Destinatrio, Assunto,


Mensagem, Informaes_Adicionais);

Depois do script que envia e-mail, vamos fazer um outro que guarde as
informaes de um formulrio HTML em um banco de dados.

2.9 Funes

As funes no PHP no diferem muito das outras linguagens.


Algumas caractersticas das funes:

Devem ser declaradas antes de serem usadas.


Podem receber parmetros por valor ou por referncia.
Podem ter quantidade varivel de parmetros (Apenas a partir da verso
4).
Os parmetros podem ser declarados com um valor default.
Uma vez definida, uma funo no poder ser "redefinida".

Alguns exemplos de funes:

/*
EstafunoretornaTRUEouFALSE,dependendodavalidadeou
nodoemailinformado.
*/
functionverifica_email($email){

ifstrpos($email,
"@")=0{
returnfalse;
}else{
returntrue;
}
}
/*
Nesteexemplocalculamosovalorlquido,tendoovalorbruto
eodescontoaseraplicado.Seodescontonoforinformado,
utilizaremos10%comopadro.
*/
functionvalor_liquido($valor_bruto,$desconto=10){

return($valor_bruto($valor_bruto*$desconto/100));
}

Os dois exemplos acima receberam seus parmetros por valor. Isso


significa que as alteraes de variveis realizadas dentro da funo s tero
efeito no contexto da funo, e estas mudanas no refletiro no resto do
script. Em alguns casos pode ser interessante que os valores dos parmetros
sejam alterados pela funo, e que seus novos valores reflitam no script como
um todo. Para conseguir isto, usamos a tcnica de passagem de parmetro por
referncia. Vamos ver um exemplo:
functioncompletaURL(&$mv_URL){
$mv_URL.="http://".$mv_URL;
}

$URL="www.inf.ufsc.br";
completaURL($URL);

echo"AURLcompletaficaassim:$URL\n";

2.10 Classes

Como no poderia deixar de ter, PHP tambm possui suporte a criao de


classes e objetos de forma simples:

class carro {

var $estado; // Estado do carro: ligado ou desligado

function liga() {
if ($this->estado != ligado) {
$this->estado = ligado;
return true;

} else { return
false; } }
}
$carro1 = new carro;
$carro1->liga();

O mtodo construtor da classe (mtodo que executado quando a classe


criada) uma funo com o mesmo nome da classe:

class Pessoa { var $idade;


function Pessoa() {
$idade = 0; //Todo objeto desta
classe criado com 0 anos } }

As classes podem herdar caractersticas de outras classes. Criando uma


classe derivada de uma outra classe, como no exemplo a seguir da criao da
classe Aluno, derivada da classe Pessoa:

class Pessoa { var $nome;


var $endereo;
}

class Aluno extends Pessoa


{ var $matricula; }
Todas as caractersticas da classe me so herdadas pela classe filha. A
herana mltipla no suportada pelo PHP.

2.11 - Acesso banco de dados

Como foi dito na apresentao do PHP, o acesso banco de dados um


dos pontos fortes desta linguagem. Ele possui acesso nativo a ADABAS,
ORACLE, SYBASE, SQL SERVER, DBASE, INFORMIX, mSQL, MySQL,
POSTGRESQL, alm de suportar ODBC, fazendo com que o PHP possa trabalhar
praticamente com todos os bancos de dados existentes.

Neste mdulo vamos ver apenas as apenas as funes relativas ao banco


MySQL, pois esta dupla PHP/MySQL est sendo preferida por uma boa parte
dos desenvolvedores, particularmente no ambiente Linux/Apache.
O MySQL um servidor SQL e portanto devemos seguir alguns
procedimentos e regras para acesso aos seus dados. Se voc est acostumado
com o Oracle ou SQL Server no ter dificuldades, mas se voc usa somente
bancos de dados do tipo Access ou DBF, poder ter dificuldades em entender o
mecanismo usado pelo MySQL.
A primeira regra ter um banco de dados cadastrado e um usurio com
acesso este banco de dados. Vale lembrar que o MySQL no um banco de
dados, e sim um servidor de dados. Tenha isto em mente para entender o
exemplo.
Digamos que temos um banco de dados Curso com o usurio visitante e
senha temp99. O primeiro passo "logar" ao servidor. Para isso usamos a
funo mysql_connect e informamos ao servidor login (usurio) e senha. Veja
abaixo:

$conn = mysql_connect ("localhost", "visitante", "temp99");

Este comando abrir uma conexo com o MySQL da mquina local


(localhost), usando o usurio visitante cuja senha temp99. Uma referncia a
esta conexo ser gravada na varivel $conn.
Depois de conectados ao servidor, devemos conectar ao banco de dados
propriamente dito, usando o comando mysql_select_db, que precisa de dois
parmetros: O nome do banco de dados e a conexo. Caso a conexo no seja
informada, ele tentar usar a ltima criada. Em nossos exemplos, iremos
sempre informar os dois parmetros.

$db = mysql_select_db("", $conn);


Neste ponto j temos uma conexo com o servidor e j criamos um link
com o banco de dados. Agora podemos enviar os comandos SQL que
desejarmos. Se voc no souber SQL, aprenda :-)
Agora segue nosso exemplo prtico: Vamos usar o script do mdulo
passado e alter-lo de modo que os dados digitados no formulrio sejam
gravados no banco de dados Curso antes de enviar o e-mail.

<?php

$erro = "";

# Verificar se o campo NOME est vazio. if


($nome == "") {
erro .= "Digite seu Nome\n"; }

# Verificar a quantidade de caracteres no campo TELEFONE. if


((strlen($telefone) > 8) or (strlen($telefone) < 7)) { $erro .= "O
nmero do telefone deve ter 7 ou 8 caracteres\n"; }

# Testar vamor do campo E-mail, verificando o caracter "@" if


strpos ($email, "@") = 0 {
$erro .= "O e-mail digitado no vlido\n"; }

# Cabealho de resposta.
echo("\n");
echo("<center>\n");

if ($erro == "") {
$conn = mysql_connect("localhost", "visitante", "temp99");
$db = mysql_select_db("Curso", $conn);
$sql = mysql_query("insert into Aluno (Nome, Email, Telefone) values
('".addslashes($nome). "','".addslashes($email)."', '".addslashes($email)."')"
or die ("No foi possvel atualizar a tabela");
mysql_close($conn);
mail("birckan@inf.ufsc.br", "Dados do Formulrio"," Nome: $nome\n
E-mail: $email\n Telefone: $telefone\n","From: $email\nDate: $date\n");
echo("Obrigado por enviar este formulrio!\n"); }
else {
echo("No foi possvel enviar o formulrio!
Verifique as mensagens abaixo:

\n");
echo("<b>$erro </b>\n");
echo("<br><br><a
href=form.htm>Voltar\n"); }
echo("</center>");

Este o procedimento padro para usar servidores de banco de dados


com o PHP:

Conectar ao servidor
Abrir o banco de dados (um servidor SQL pode ter mais de um banco de
dados)
Enviar os comandos SQL
Desconectar do servidor

A novidade deste exemplo fica por conta do comando die que finaliza o script
caso a funo que o precede no possa ser executada.

2.12 - FTP e HTTP

Algumas vezes pode ser til que nosso script execute um outro script ou
ento transfira um arquivo para outro servidor. Para isso, podemos executar
comandos HTTP e FTP de dentro do PHP. Veja os exemplos:

HTTP: Podemos fazer, dentro do script PHP, uma chamada a outro script ou
programa CGI hospedado em outro servidor. Isto muito til quando
queremos consultar algum dado em um servidor remoto, ou at mesmo para
abrir uma pgina, usando o protocolo HTTP. Para isso, basta chamar a funo
Header("location: pagina.htm") para redirecionar para uma pgina especfica
ou ento o usar o comando abaixo para executar um CGI passando parmetros
via URL:

header("location: http://server/cgi/script.pl?p=" . $param);


Onde $param uma varivel que pode vir de uma consulta a banco de
dados ou mesmo de um formulrio.
Outra funo HTTP importante o uso de "cookies" para gravar alguma
informao no browser de quem estiver visitando sua pgina. Para gravar um
"cookie", usamos a funo setcookie(), como mostrado abaixo:

setcookie("Visitou", "Sim", time()+3600);

O comando acima gravar um cookie chamado "Visitou" com o valor


"sim", com apenas uma hora de durao. Note que o 3600 o nmero de
segundos alm do horrio atual que o cookie deve ficar ativo. Se no lugar de
3600, usssemos 36000, o cookie seria ativo por 10 horas.

FTP: A seqncia de tarefas para uso do protocolo FTP Conectar ao Servidor,


Identificar-se (Login e Senha), Enviar/Buscar arquivo(s), Desconectar. Os
comandos para cada uma destas tarefas so:

$conn=ftp_connect(ftp.inf.ufsc.br);
$log=ftp_login($conn,'login','pass');
ftp_put($con,'arquivo_remoto','arquivo_local',
FTP_ASCII/FTP_BINARY);
ftp_quit($conn);

2.13 - Sesses

Sesses HTTP servem para preservar dados em acessos subseqentes,


atravs de registros de variveis de sesso. Usamos basicamente trs funes:

session_start();
session_register( VARIVEL" );
session_destroy();

Exemplo:

<?php
session_start();
session_register("VARIAVEL");
if(!isset($VARIAVEL)){

header("Location:error.php");

exit();
}
print"Passou!!";
?>

2.14 - Tratamento de Arquivos

O PHP possui vrias funes para o tratamento de arquivos a fim de


facilitar sua manipulao. A primeira coisa que se tem que saber que para
se manipular arquivos, tem-se que abrir e fechar o arquivo. O PHP possui as
seguintes funes para se abrir e fechar arquivos:

fopen( nome_do_arquivo, mode, [diretrio] ) Abre o arquivo


fclose( fp ) - Fecha o arquivo

Estes modos de abrir o arquivo podem ser os seguintes:

r somente leitura; posiciona-se no incio do arquivo.

r+ leitura e escrita; posiciona-se no incio do arquivo.

w somente escrita; posiciona-se no incio do arquivo e o trunca para


tamanho zero. Caso o arquivo no exista o PHP tenta cri-lo.

w+ leitura e escrita; posiciona-se no incio do arquivo e o trunca para


tamanho zero. Caso o arquivo no exista o PHP tenta cri-lo.

a somente escrita; posiciona-se no final do arquivo. Caso o arquivo no


exista o PHP tenta cri-lo.

a+ leitura e escrita; posiciona-se no final do arquivo. Caso o arquivo no


exista o PHP tenta cri-lo.

Aps abrir um arquivo, pode-se ler o contedo ou escrever em seu


contedo, de acordo com a forma que se abriu o arquivo.

fread( fp, tamanho )


fgets( fp, tamanho )
fwrite( fp, string, [tamanho] )

Exemplos:

$nomedoarquivo = "/tmp/teste.txt";
$fp = fopen ($nomedoarquivo, "r");
$contents = fread ($fd, filesize ($nomedoarquivo));
fclose ($fp);
$fp = fopen(/tmp/teste.txt, a);
fwrite($fp, bla bla bla \n); fclose($fp);

$fp = fopen ("/tmp/teste.txt", "r");


while ( !feof($fp) ) { $buffer =
fgets($fp, 4096); echo $buffer
<br>;
} fclose ($fp);
Neste ltimo exemplo, pega-se linha a linha de um arquivo e
imprime em HTML separando as linhas pela tag <br>.

2.15 - Tratamento de Erros

O PHP tem um esquema especial de "debugging" (tratamento e


verificao de erros), que acessado por uma porta TCP, que permite
acompanhar a execuo dos scripts e ver quaisquer erros que estiverem
acontecendo.

Alm disso o tratamento de erros pode ser feito no prprio script,


conforme explicado abaixo:

O PHP possui 4 nveis de erros e avisos, que so:

1 - Erros de normais de Funes 2 - Avisos Normais 4 - Erro de interpretao 8


- Avisos que voc pode ignorar, mas que podem causar danos execuo
normal do script.

O padro do PHP o nvel 7 (1 + 2 + 4), mas este nvel pode ser


alterado tanto no arquivo de configurao quanto em tempo de execuo,
chamando a funoerror_reporting($nivel) com o nvel desejado.
Se usarmos o valor 0 (zero) nenhum aviso ou mensagem de erro ser
gerada em tempo de execuo. Neste caso, podemos usar uma varivel
especial ($php_errormsg) que conter o ltimo erro gerado pelo script, para
que possamos criar rotinas especficas para tratamento de erros. Podemos
fazer uma analogia ao comando on error resume next do ASP, tcnica muito
til para personalizarmos mensagens de erro para o usurio, entre outras
coisas.
Bibliografia
http://www.ibestmasters.com.br
http://www.weberdev.com
http://www.php.net
http://www.webmonkey.com
http://www.devshed.com
http://www.mysql.com
http://www.phpbuilder.com

TRIDAPALI, Graziela W. & SANTANNA, Juliana S. Trabalho de Concluso de Curso


Construindo uma aplicao de Comrcio Eletrnico

PHP Search Toolbar


RSS Feeds

WeberDev.com - Latest PHP Code Examples


WeberDev.com - Latest PHP Articles and Tutorials
WeberDev.com - Latest Jobs
WeberDev.com - Latest Project Matching
WeberBlogs.com - Latest Web Logs

Posts
WeberForums.com - PHP General Latest Weber Sites
WeberForums.com - MySQL General Latest Posts
Web Site Templates

Web Development WeberForums.com - Apache General Latest


Resources
Posts

Learn PHP playing Trivia

WeberForums.com - Java Script GeneralPHP Web Logs (BLogs)



PHP & MySQL Forums Web Development Index Web Development Content
Latest Posts

What is My IP? 2006-05-05 2006-05-18 PHP 101 (part


Web Site Uptime Monitor
Secure URL $_GET 11): Sinfully

Simple
2006-05-18
Yahoo! Messenger Friend List PHPClasses
2006-04-16
2006-05-17
Using Codewalkers
Transactions In
Dynamic Dropdown for Country PHP Editor
MySQL (part 2)
and City List PHP Jobs
2006-04-03 PHP Resources 2006-
05-09 PHP 101 (part Form Validation Using PHP to
Ajax Tutorials 10): A Session
highlight non valid fields PHP Programming Help
In The Cookie

Web
WeberDev WeberForums

Think you are smart? Prove it!. Try your skills with these questions :
MySQL client programs
use default values for any connection parameter option that you do not specify, the default
hostname is localhost. (MySQL)
a The \"fdisk -l\" command

displays the partition and the size of the partition in KB on the hard disk. (Linux)

2006-05-08 Jar The JavaScript Quick SQL Row Selection

Ant
holog
y:
101
2006-03-22 Essential Tips, Tricks
& 2006-05-08 Using Adobe's Data Retrieve from mailbox and
Hacks
Flex Builder
this is the most complete
generate the SQL Syntax tool to connect a question-and-
answer book
PHP backend to on JavaScript. It's
a 2006-05-05 the front end collection of over 100 A Complete
thoroughly-tested, table(ADD,EDIT,VIEW,DELETE)2006-03-18
customizable and elegant management System Using solutions that
will show
PHP,MYSQL, JAVASCRIPT Transactions In you how to add
usable MySQL (part 1) and
accessible

2006-05-05
inte
ract
ivit
y to
you
r
site:
NewExamplesRSS 12% from slick drop-down
PHP Mysql Paging System Adwords 5%

More Articles menus, to


style sheet & Tutorials...
switchers, to AJAX
2006-05-04

applications, and much


MyYahoo 4% Extract keywords from a string more.
Overture 4%
having
words in " " count as one phpn.org 4%
string.
Mo
re
Sa
mpl
e
Cha
pter
s
NewArticlesRSS 3%
2006-05-01
phpclasses 3%
Data
Retrieve from
Mysql using
OSContent 2%
AJAX with PHP
SearchBox 1%
Learning
Management
Programmer
20
06-
04-
27
F
r
o
n
t

E
n
d

E
n
g
i
n
e
e
r

S
m
a
l
l

B
u
s
i
n
e
s
s

Sub
mit a
Job
More jobs and freelance Zero-day Word flaw used Storing lists in mysql
projects... in attack

Hosting Domain Names


Latest News Latest Forums Threads
webmaster
forums
2006-05-19 2006-05-22 03:12:59

2006-05-21 13:39:04 Web design


forum 2006-05-19 MySQL Schema
Skype bug may expose
Submit Site
user data 2006-05-21 03:48:55
Best Web Hosting CHMOD Not
changing Reviews 2006-05-12
Free
Apple flaws put both
Domain Names
Macs and PCs
2006-05-20 16:46:26
at risk Real Estate -
&#9679; &#9679;
Real Estate
&#9679; &#9679;
Listings 2006-05-11
Dimension Se
Ballmer: Google wants Green Card - Green Card
special treatment in IE

Lottery Application 2006-05-20 00:13:21 Service


2006-05-10 Help with Mysql online casino Google
has its eye on Database
Free Casino Games Vista search
More Info

Great Information Quick Seek


Yellow Pages Free Ebay Marketing Ebooks

the web developer's resource


HOW-TO LIBRARY Authoring Design Multimedia E-Business Programming Backend Jobs

About Us QUICK REFERENCE JavaScript Code Library HTML Cheatsheet Special Characters Color Codes Browser Chart

Stylesheets Guide Unix Guide Glossary Domain Registries


Sign up for our weekly newsletter, Elbow Grease.

Lycos Worldwide Copyright 2005, Lycos, Inc. All Rights Reserved. Lycos is a registered trademark of Carnegie Mellon University.

About Terra Lycos | Help | Feedback | Jobs | Advertise | Business Development

Your use of this website constitutes acceptance of the Lycos Network Privacy Policy and Terms & Conditions.

[an error occurred while processing this directive]

http://www.webmonkey.com/ [21/05/2006 22:42:06]

The world's most popular open source database


Login / Register

MySQL.com
MySQL Network
Developer Zone
Partners
Online Shop
Products
Training
Consulting
Support
OEM
News & Events
Customers
Why MySQL?
1 How to Buy News
Unisys to Deliver New Services for MySQL Open Source Database Software
MySQL AB Sees Increased Growth & Momentum in EMEA
UN's FAO Selects MySQL as its

Open
Source DB
Standard Articles
Advanced MySQL Replication Techniques
MySQL 5.1 New Features:
MySQL Powers the World's MySQL Events
Products
Most Popular Web sites!
MySQL 5.0 New!
Learn how leading organizations are saving over $1 million MySQL Cluster using
commodity hardware and open source software. Migration Toolkit
Downloads Learn More Documentation
Industries
Retail
Case Studies
Telecom
Case Studies
Travel
Case Studies
Embedded
Case Studies
Web Seminars
Embedding and Bundling MySQL Best Practices
Register Now

Cost-Effective Database Scale-Out Using MySQL (replay)


Register Now MySQL Training
MySQL 5.0 In-depth
Jun 27: Detroit Jul 25: San Francisco Jul 18: London
MySQL 5.0 New Features
Jun 27: Frankfurt Aug 28: Washington DC Sep 25: London
White Papers Developer Zone Jobs at MySQL
A Guide to High Availability VOIP

About MySQL
Careers
Site Map
Contact Us

Privacy Policy
Legal

Login To PHPBuilder User Name: Password:


Join Up!
74847 members and counting!
Linux Today Enterprise Linux Today Apache Today JustLinux.com Linux Planet PHPBuilder All
Linux Devices Hiermenus DatabaseJournal jobs.linuxtoday.com
Developer International Internet Lists Internet News Internet Resources IT Linux/Open
Source Personal Technology Small Business Windows Technology xSP Resources
Search internet.com Advertise Corporate Info Newsletters Tech Jobs E-mail Offers
Covalent Extends Apache 2.0 to Microsoft ASP.NET ShopWorX - Support for Windows PHP
Security Advisory: Vulnerability in PHP versions 4.2.0 and

4.2.1 Network Risk Assessment Full-Featured, Java-Based Apache GUI

Partners & Affiliates

1 Installing PHP under Xitami Using cURL With PHP Shell Scripting w/PHP Optimizing
Postgresql PHP Web Blog - Part 3
HOME
Community
Articles
Code Library
People
Mail Archive
My Account
Contribute
Open Source Database Feature Comparison Matrix
Try Declarative Programming with Annotations and Aspects
Locate All Stored Procedures and Their Objects/SQL Tables
Building a Stored Procedure Generator
Making Tables Read-only in Oracle
24-hour Support Daily Backup Dedicated Servers JSP/Java Servlets PHP MySQL
Streaming Audio/Video Telnet/SSH Unix Hosting 24-hour Support

visualEdit Now Available for Free -ActiveCampaign, Inc. Roadsend PHP Compiler v2.0 Released

-Shannon Weyrick PHPKB Professional Edition 1.5 Launched -Knowledgebase-Script.com Symfony 0.6.2

Released : AJAX Getting Easier for PHP Devs -Francois Zaninotto phpYellow Pro Edition 6.06

Launched -Rob TYPO3 -- Version 4.0 Launched; Setting a New Standard in Appearance and Fun

-Michelle Heizer NuSphere PhpED 4.5 is released -Natalie [Show All]

In Case You Missed It...The Week of May 15th, 2006


By Elizabeth Naramore
This busy week Elizabeth brings us news about security patches for PHP4 and PHP5, free PHP accounts at
Dotgeek, OSCON's Lightning Talks, a new blog from PHP IDE Eclipse, the release of phpMyAdmin 2.8.0.4,
the latest PEAR/PECL releases and much more!

In Case You Missed It...The Week of May 8th, 2006


By Elizabeth Naramore
This week Elizabeth brings us news on the release of PHP 5.1.3, the announcement of Code Challenge 2006
and the upcoming
An Introduction to Graphs Using PEAR's Image_Graph Package
By Ian Gilfillan
At some point, most developers find a need to create graphs for their projects. This article looks at PEAR's
Image_Graph package, which is released under the Lesser GPL. Find out how you can create highly
customizable graphs with this useful package!

In Case You Missed It...The Week of May 1st, 2006


By Elizabeth Naramore
Our reporter Elizabeth brings us news this week from Zend on their change to a BSD license framework,
Jim Plush's blog about the recent PHP boom, a new CEO for Zend, the latest PEAR/PECL releases and
much more!

Using XML, a PHP Developer's Primer: XML-RPC, PHP and Javascript, Part 2
By Adam Delves
This is the second half of an article that began last week on XML-RPC and PHP. This week we put together
the PHP RPC server and learn more about the emailValidator_validate function!
In Case You Missed It...The Week of April 24, 2006
By Elizabeth Naramore
This week Elizabeth brings us news of the upcoming PHP Vikinger code-fest, PHP Gotchas for the
"Newb", PHP as an Official Mentor for Summer of Code, the latest PEAR/PECL releases and much
more!

In Case You Missed It...The Week of April 17, 2006


By Elizabeth Naramore
This week Elizabeth brings us news of the release of Zend Guard 4, Davey Shafik's PHP
Thinktank, a security alert for phpMyAdmin, an announcement about Google's Summer of
Code, the latest PEAR/PECL releases and much more!

Using XML, a PHP Developer's Primer, Part 4: XML-RPC, PHP and Javascript
By Adam Delves
In this article we will demonstrate how PHP can be used to call upon web services provided by third part
sites via an XML-RPC server. We will also show you how to create your own XML-RPC and use client-
side Javascript to invoke procedures in your PHP scripts.

HOT THREADS

Topic By Replies Updated


word association game jamesm87 2580 Today 10:57 AM Editor used for PHP Bunkermaster 287 5-17-
2006 05:00 PM New Projects : Announce here Bunkermaster 93 5-12-2006 05:30 PM New to PHP
FatStratCat 44 5-16-2006 02:58 PM Treasury Dept. announces new $20 bill.... dalecosp 36 5-12-2006
02:26 PM Problem with file paths Howard007 35 Yesterday 08:00 AM Ah!! Dell Looks like Apple!! Ahh!!
bpat1434 29 5-19-2006 12:26 PM Building a LAMP server FatStratCat 25 5-15-2006 03:08 PM
SESSIONS..just dont get it.. deezzer 20 5-17-2006 03:47 PM By the way of xhtml validator and GET
whisher06 20 5-17-2006 11:10 AM
NEW THREADS

Topic By Replies Updated

getimagesize unable to open file... workaround? krotkruton 0 Never Install PHP5 & Apache2.2.2 Homecat
1 Today 10:05 PM

Question about Arrays FatStratCat 1 Today 10:01 PM


Caching Dynamic Pages Help. Rodney H. 0 Never
What is needed in HTTP header to output a picture Mgccl 0 Never
PHP5 speed tests... vaaaska 3 Today 09:01 PM
[RESOLVED] Outside htdoc NeedaCart 3 Today 06:22 PM
Advice on passwording folders please Andy-T 0 Never
[RESOLVED] chmod() question. shank 8 Today 07:28 PM
session file appears "locked" - can't call two pages @once sfullman 0 Never

To start viewing messages, select the topic that you want to visit from the selection above.

Columns / Articles | Tips / Quickies | News | News Linking and RSS Feeds | Shared Code Library
Mail Archives | Support / Discussion Forums | Get Started! Links | Contribute! | Docs
JupiterWeb networks:

Search JupiterWeb:

Jupitermedia Corporation has two divisions:


Jupiterimages and JupiterWeb

Copyright 2005-2006 Jupitermedia Corporation All Rights Reserved.


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Jupitermedia Corporate Info | Newsletters | Tech Jobs | Shopping | E-mail Offers

What is PHP?
PHP is a widely-used general-purpose scripting language that is especially suited for Web
development and can be embedded into HTML. If you are new to PHP and want to get some
idea of how it works, try the introductory tutorial. After that,
check out the online manual, and the example archive sites and some of the other resources
available in the links section.
Ever wondered how popular PHP is? see the Netcraft Survey.

Thanks To
easyDNS
Directi
pair Networks
EV1Servers
Server Central
Hosted Solutions
Spry VPS Hosting
eZ systems / HiT
OSU Open Source Lab
Emini A/S
Yahoo! Inc.

Related sites
Apache
MySQL

Call to speaker for Paris "Forum


PHP 2006"
[17-May-2006] The AFUP, Association Franaise des Utilisateurs de PHP, is proud to
announce the upcoming conference
"Forum PHP 2006". For this unique event in France, we are looking for the best French
speaking experts, who want to share their know-how and enthusiasm. This two day
conference features one technical day, with the most advanced PHP techniques and a
business day, with case studies and examples of successful projects.
Date and location: the "Forum PHP 2006" will take place in Paris, at the SNHF
(Socit Nationale d'Horticulture), on Thursday and Friday the 9th and 10th of
November 2006.

Upcoming Events

May
[add]
User Group Events
21. PHP Cairo Meeting 25. PHP Beer - Quebec
23. New York 29. Long Island PHP Users Group
23. AzPHP
31. Munich
23. San Antonio PHP Meetup
25. Arabic PHP Group Meeting Conferences
25. Malaysia PHP User Group Meet Up
27. Caminhos Certificacao PHP / Zend

22. Formation PHP-MySQL


Training 1 Formation PHP - Mysql (Montreal)
2 UK PHP Training
1 AlefBrain PHP Training 2006
2 PHP w/MySQL Bootcamp
23. Formation LAMP Rimouski
25. PHP Brasil - Training
-USA

PostgreSQL NYPHPCon
Zend Technologies
2006 Program
Community
Announced
LinuxFund.org
OSTG [16-May-2006] We are pleased to
announce the speaker, tutorial and
Syndication keynote program for NYPHPCon 2006.
The New York PHP
You can grab our news as an RSS feed via a Conference & Expo 2006 is taking place in
daily dump in a file named news.rss . New York City, at the historic New Yorker
Hotel, June 14-16, 2006. There will be
three full days of sessions, tutorials,
exhibits, and networking events.
We are also pleased to host the IBM Mashup
Contest and Oracle PHPFest, and a special
PHP Training package at this event.
NYPHPCon 2006 focuses on the The PHP
Business Community, with two featured
parallel tracks plus tutorials:
Business Strategy and Technical Solutions.
Over 400 are expected to attend, including
business and
technical professionals from around the
world.
PHP 5.1.4
Released
[04-May-2006] A critical bug with $_POST
array handling as well as the FastCGI sapi
have been discovered in
29. PHP/MySQL/Apache/IIS in San Fran
29. PHP/MySQL Training in San Fran.
29. Formation LAMP a Montreal June

1. Manchester UK - PHP Group


User Group Events 1. EdPUG - Edinburgh PHP User Group
1. Sydney PHP Group meetings
1. SDPHP (San Diego, CA)
1. PHP UG Meetup Auckland
1. Hannover
1. PHP Quebec - Montreal
1. Meetup Day
1 Orange County PHP User Group
1. Omaha PHP Users Group Meetup 2 Kln/Bonn
1. PHP London 3 Encuentro PHP en Cceres (SPAIN)
1. The Houston PHP Users Group 4 PHP meeting online in China
1. Boston PHP Meetup
1. Melbourne PHP User Group 6. SW Florida Linux Users Group
1. The West Palm Beach PHP Group 1 PDXPHP monthly meeting
1. Atlanta PHP User Group 2 Central Iowa PHP Users

PHP 5.1.3. A new PHP release 5.1.4 is now PHP 5.1.3


available to address these issues. All PHP
users are encouraged to upgrade to this Released
release as soon as possible.
Further details about this release can
be found in the release announcement and
the full list of changes is available in the [01-May-2006] The PHP development
PHP 5 ChangeLog. team is proud to announce the release of
The tarballs were updated to PHP 5.1.3.
include the PEAR's phar file, This release combines small number of
previously missing from the feature enhancements with a significant
release. amount of bug fixes and resolves a number
of security issues. Some of the key
changes of PHP
5.1.3 include:
Disallow certain characters in
session names.
Fixed a buffer overflow inside the Enforce safe_mode for the source
wordwrap() function. parameter of the copy() function.
Prevent jumps to parent directory via Fixed cross-site scripting inside the
the 2nd parameter of the tempnam() phpinfo() function.
function.
Fixed offset/length parameter function.
validation inside the substr_compare()
Fixed a heap corruption inside
17. Los Angeles LAMP SIG
Group 17. Miami Linux Users Group
8. Meeting usergroup Dortmund 17. Twin Cities PHP
8. PHP Usergroup 1 Madison PHP User's Group
Frankfurt/Main 2 Miami PHP User Group
8. AproPHP Lille
10. PHP User Group Nanaimo, BC/CA 21. Broward Php Usergroup
13. Hamburg 21. Chicago PHP User Group
13. Dallas PHP/MySQL Users Group 21. Nashville PHP Users Group
13. Dallas PHP Users Group (DPUG) 1 Long Island PHP Users Group
2 New York
13. Austin PHP Meetup
1 OKC PHP Meetup
2 Wash DC PHP Developers Group 27. AzPHP
3 TriPUG 1 San Antonio PHP Meetup
2 Munich
3 Arabic PHP Group Meeting
15. OINK-PUG (Cincinnati, Ohio)
15. Utah PHP Users Group Meeting
29. Malaysia PHP User Group Meet Up
17. Kansas City

the session extension.

Fixed a bug that would allow variable Upgraded bundled PCRE library to
to survive unset(). version 6.6
Fixed a number of crashes in the
DOM, SOAP and PDO extensions.
The use of the var keyword to declare E_STRICT.
properties no longer raises a deprecation
FastCGI interface was completely
reimplemented.
Multitude of improvements to the SPL, extensions.
SimpleXML, GD, CURL and Reflection
Over 120 various bug fixes.
Further details about this release can
be found in the release announcement and PHP 5 ChangeLog.
the full list of changes is available in the

Code
Summer of
have listed a couple of ideas, but we
would
encourage you to submit a proposal for
any part of PHP you are interested in. If
[01-May-2006] Proposals are now being
your project is accepted we will match
accepted for Google's Summer
you up with a mentor and try to provide
of Code program. If you qualify and you are
you with as much support as possible. To
interested in working on a PHP-related project
get started, read the FAQ and then go to
this summer, please consider applying. We
Step 1.
14. NYPHPCon 2006
Conferences
2 PHP Vikinger Community Event
1 PHP@Strasbourg Journees du Libr
30. WebTech 2006
24. PHP at FrOSCon

Training
1. Curso de PHP Avanzado en Bilbao
1 Ahmedabad PHP Group Training
1. Web Programming Using PHP/MySQL. 2 MySQL Spain
1. PHP/MySQL Training in San Fran.
1. Formation LAMP a Montreal 5. Curso PHP Madrid
5. Curso on-line ActionScript / PHP
5. PHP E-Learning/Germany 5. PHP & MySQL Training in Kassel
MX
5. PHP & MySQL com Dreamweaver 5. Curso on-line de PHP
5. Formation LAMP a Quebec
WebSites
5. PHP & MYSQL-Construindo
1 Malaysia : Advanced PHP &
MySQL
Curso on-line de PHP-MySQL

6. EVERY TUESDAY: PHP Class (FREE!)


8. Intro to PHP
PHP at FrOSCon Call for Papers
[24-Apr-2006] The faculty for Computer Science of the college of higher education Bonn-
Rhein-Sieg celebrates the first conference about free software in cooperation with the
LUUSA and the FrOSCon e.V. 2006.
The event takes place on June 24th/25th in Bonn, Germany and is organized completely
free and open.
The PHP user groups Kln/Bonn and Dortmund take part in the conference and organize a
professional PHP track for both days. The call for papers is currently open
and every interesting talk is highly appreciated.

PHP Vikinger 12. PHP & MySQL Training / Frankfurt


12. PHP para Expertos Curso on-line
1 Curso PHP y MySQL
[24-Apr-2006] The PHP Vikinger is a 2 PHP Training Philippines
community-driven PHP event that will be held
1 PHP & MySQL Training /
in Skien, Norway from June 24th to 25th. Like
Gieen
the famous 2 Cursos de PHP en Bilbao
Foo Camp and Bar Camp, the people who attend
get to choose and present the sessions at the
22. PHP Brasil - Training
event.
22. Intro to MySQL
The event is meant to be affordable: registration 26. PHP/MySQL/Apache/IIS in San
is 20 Euros, and simple food and a place to sleep Fran
are provided for both days of the event. The 26. PHP and MySQL
major expense for most attendees will be the cost
of traveling to Norway. 50 invitations have been Bootcamp Training
sent to various 26. Advanced PHP w/MySQL
PEAR and PHP contributors. General registration -USA
for the event opens on 27. UK PHP Training May 1st.

International PHP Conference


2006 Call for Papers
[24-Apr-2006] The Call for Papers for the International PHP Conference 2006, 5th to 8th
November 2009 at Frankfurt/Main Germany, has been
started. The Conference features two days full with six hours PowerWorkshops and two
days main conference with sessions.
The main focus of the conference will be Security through an own security track. Like last
year, we'll provide a Management Day for businesses utilizing PHP or evaluating PHP.
The Call for Papers will end at May, 21th.

php|tek 2006
[02-Mar-2006] The php|tek 2006 conference will take place in Orlando, Florida, April 25-28.
This year's speaker roster features many well-known PHP and open-source experts,
including Rasmus Lerdorf, IBM's Rod Smith and Zend's Andi Gutmans, speaking on a
variety of topics that highlight PHP's scalability, robustness and future.

PHP Quebec 2006


[26-Feb-2006] The PHP Quebec team
is pleased to announce the 4th edition of the PHP Quebec Conference. This year, the
conference will be held at
the Montreal Plaza Hotel from March 29th to 31st. It features 2 days of technical learning
and an additional day of workshop. Among the speakers, the well known PHP Experts such
has Rasmus Lerdorf, Andrei Zmeivski, Derick Rethans and Ilia Alshanetsky.
The conference will have three distinct tracks of session: Advanced Techniques, Professional
Development and Databases. With over 31 sessions, including workshops, the PHP
Qubec Conference is great opportunity to learn about the latest PHP techniques and
professional development techniques to help you build high quality PHP software. The
conference will also present the various storage solutions available such has IBM DB2,
PostgreSQL, SQLite and MySQL.

Early bird pricing are available until march 3rd. Learn more about this exciting conference.

NYPHPCon 2006
[02-Feb-2006] The New York PHP Conference & Expo 2006 is taking place in New York
City, at the
historic New Yorker Hotel, June 14-16, 2006. There will be three full days of sessions,
tutorials, exhibits, and networking events.
NYPHPCon 2006 focuses on the The PHP Business Community, with two featured parallel
tracks: Business
Strategy and Technical Solutions. Over 400 are expected to attend, including business and
technical professionals from around the world.
We invite everyone - whether technical or non-technical - to participate in our Call For
Papers.

An early-bird discount is available until March 1st.

WebTech 2006

Third Bulgarian PHP


Conference
http://www.php.net/ (8 of 12) [21/05/2006 22:43:29]
[19-Jan-2006] The third Web Technology conference and Expo in Bulgaria will be held in
June 2006 in
the city of Sofia. Within its framework, the Third Bulgarian PHP Conference will be held.
The event will take place on the 30th of June and the 1st of July at the conference area of
the Kempinski Hotel Zografski.
The purpose of this meeting is to discuss the new tendencies in this direction and to
popularize the internet technologies in the spheres of business, education, and services. The
range of subjects includes technologies like PHP, Perl, business systems through web,
education through the internet, and others.

FrOSCon 2006

-Call for
Papers

[19-Jan-2006] The first Free and Open Source Conference "FrOSCon" takes place on 24th
and 25th June 2006 in St. Augustin, near Bonn, Germany. Organized by a commited team, it
aims to become a significant event for free software in the Rhineland. The conference is
hosted by the faculty of computer science of the University of Applied Sciences Bonn-
Rhein-Sieg in collaboration with the student body and the Linux/Unix User Group St.
Augustin.
In a Call for Papers, the organizers ask for submission of contributions. A broad variety of
topics concerning free and open source software is
desired. Particularly welcome are contributions about programming languages, free software
on the desktop, security, systems administration and networks. Aspects of free software in
business and industry are also a focus of the conference.
Contributions can be submitted in English or German and should summarize the intended
talk concisely and succinctly; talks should range from 45 to 60 minutes in length. Deadline
for submission is 15th March 2006.
UK PHP Conference 2006

UK PHP Conference 2006


[17-Jan-2006] The first UK PHP Conference is going to be held on February 10th 2006,
organized by the
PHP London user group. This is a one day event at South Bank University, plus networking
events. The list of speakers: Derick Rethans, Pawel Kozlowski, Harry Fuecks, Chris Kunz
and Matt Zandstra. Not bad for 50 quid.

PHP 4.4.2
Released

[13-Jan-2006] The PHP development


team is proud to announce the release
of PHP 4.4.2. This release address a few small security issues, and also corrects some
regressions that occurred in PHP 4.4.1. All PHP 4 users are encouraged to upgrade to this
release. Some of the key changes of PHP 4.4.2 include:
HTTP Response Splitting has been addressed in the header() function.
An XSS problem inside the error reporting functionality has been removed.
Apache 2 regression with sub-request handling on non-Linux systems has been fixed.
A regression with the key() and current() functions have been fixed.
Over 30 various bug fixes.

Further details about this release can


be found in the release announcement and the full list of changes is available in the PHP 4
ChangeLog.

PHP 5.1.2
Released
[12-Jan-2006] The PHP development team is proud to announce the release of PHP 5.1.2.
This release combines
small feature enhancements with a fair number of bug fixes and addresses three security
issues. All PHP 5 users are encouraged to upgrade to this release. Some of the key changes
of PHP 5.1.2 include:
HTTP Response Splitting has been addressed in ext/session and in the header()
function.
Fixed format string vulnerability in ext/mysqli.
Fixed possible cross-site scripting problems in certain error conditions.
Hash & XMLWriter extensions added and enabled by default.
Upgraded OCI8 extension.
Over 85 various bug fixes.

Further details about this release can


be found in the release announcement and the full list of changes is available in the PHP 5
ChangeLog.

News Archive

Copyright 2001-2006 The PHP Group This mirror generously provided by: Yahoo! Inc.
All rights reserved. Last updated: Sun May 21 18:20:41 2006 PDT