Anda di halaman 1dari 57

Florianópolis – SC, outubro de 2000.

Curso de PHP e MySQL

Flávio S. Gonzaga <bim@inf.ufsc.br>


Guilherme Birckan <birckan@inf.ufsc.br>
Índice
1 – MySQL ............................................................................................................................. 3
1.1 - Principais Características ........................................................................................... 3
1.2 - A Estrutura ................................................................................................................. 4
1.3 - O Sistema de privilégios............................................................................................. 5
1.4 - O Ambiente MySQL .................................................................................................. 6
1.5 - Exemplos .................................................................................................................... 7
2 - PHP.................................................................................................................................. 11
2.1 - Um breve histórico de PHP ...................................................................................... 13
2.2 - Comentários.............................................................................................................. 14
2.3 – Variáveis .................................................................................................................. 14
2.3.1 – Inteiros e ponto flutuante .................................................................................. 15
2.3.2 – Arrays ............................................................................................................... 15
2.3.3 – Strings ............................................................................................................... 16
2.3.4 – Variáveis de variáveis....................................................................................... 17
2.3.5 – Type casting...................................................................................................... 17
2.3.6 – Variáveis por referência no PHP4 .................................................................... 17
2.4 - Operações Matemáticas............................................................................................ 18
2.5 - Operadores................................................................................................................ 18
Exemplo........................................................................................................................ 18
Exemplo........................................................................................................................ 19
2.6 - Operações com strings.............................................................................................. 20
2.7 - Controlando o fluxo e LOOPS ................................................................................. 21
2.8 - Tratando formulários................................................................................................ 22
2.9 – Funções .................................................................................................................... 23
2.10 – Classes ................................................................................................................... 25
2.11 - Acesso à banco de dados ........................................................................................ 26
2.12 - FTP e HTTP ........................................................................................................... 28
2.13 - Sessões.................................................................................................................... 29
2.14 - Tratamento de Arquivos......................................................................................... 29
2.15 - Tratamento de Erros ............................................................................................... 31
Bibliografia ........................................................................................................................... 32

2
1 – MySQL
MySQL é um servidor de banco de dados SQL multi-usuário e
multi-threaded. SQL é a linguagem de banco de dados mais popular no
mundo. MySQL é uma implementação cliente-servidor que consiste de
um servidor e diferentes programas clientes e bibliotecas.
SQL é uma linguagem padronizada que torna fácil o
armazenamento e acesso de informações. Por exemplo, pode-se usar
SQL para recuperar informações de produtos e armazenar informações
de clientes para um site Web.
O servidor MySQL é também rápido e flexível o suficiente para
permitir armazenar logs e figuras nele. As principais vantagens do
MySQL são 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 rápida 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 têm mais de 7 milhões de registros. Isto soma
aproximadamente 100 Gbytes de dados.

1.1 - Principais Características

As principais características do MySQL são:

!" Manipula um número ilimitado de usuários simultâneos;


!" Alta velocidade de execução;
!" 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 não-
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 execução de joins usando multi-join otimizado;
!" Suporte completo a operadores e funções nas cláusulas SELECT e

WHERE;
!" Suporte às cláusulas GROUP BY e ORDER BY e a funções 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;

3
!" Sistema de privilégios flexível, simples, eficiente e seguro, que
permite verificação baseada em host.
!" Suporte a ODBC (Open DataBase Connectivity) para Windows95 e
suas funções. É possível, por exemplo, usar o Access para conectar
ao servidor MySQL;
!" Tabelas de disco sob a forma B-tree rápidas com compressão de
índices;
!" Permite 16 índices por tabela;
!" Disponibiliza registros de tamanho fixos e variados;
!" Manipula grandes bancos de dados com vastos volumes de
informações, na ordem de 50.000.000 registros;
!" Escrita em C e C++. Testada com diferentes compiladores;
!" Possui um sistema de alocação de memória extremamente rápido;
!" Suporte total ao conjunto de caracteres ISO-8859-1 Latin1, todos os
dados são salvos e ordenados neste formato;
!" Permite a definição de aliases em colunas e tabelas como no padrão
SQL92;
!" DELETE, INSERT, REPLACE e UPDATE devolvem o número de linhas
afetadas pelo comando;
!" Nomes de funções não 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 conexões
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 mantém os blocos (ou
registros) de informações é chamado de tabela. Estes registros, por sua
vez, são constituídos de objetos menores que podem ser manipulados
pelos usuários, 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 específicas 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 flexível entre 1 e 255 caracteres.
VARCHAR ocupa sempre o menor espaço possível, no entanto é 50%
mais lento que o tipo CHAR;

4
!" INT(M) [Unsigned]: números inteiros entre -2147483648 e
2147483647. A opção "unsigned" pode ser usada na declaração
mudando o intervalo para 0 e 4294967295 para inteiros não-
sinalizados;
!" FLOAT [(M,D)]: números decimais com D casas decimais;
!" DATE: armazena informação 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 formatação e
manipulação de datas;
!" TEXT/BLOB: strings entre 255 e 65535 caracteres. A diferença entre
TEXT e BLOB é que no primeiro o texto não é sensível ao caso e no
segundo sim;
!" SET: conjunto de valores strings;
!" ENUM: conjunto de valores strings, difere do SET pois só são
armazenados valores previamente especificados.

Além dos tipos de dados existem outras opções a serem usadas


em conjunto com os tipos de dados para a criação de tabelas e
especificação de colunas:

!" Primary Key (Chave Primária): usada para diferenciar um registro do


outro. Cada registro, desta forma, não pode ter a mesma chave
primária.
!" Auto_increment: uma coluna com esta opção é automaticamente
incrementada quando da inserção de um registro;
!" NOT NULL: não permite a inserção de valores nulos.

1.3 - O Sistema de privilégios

Administrar o servidor MySQL, envolve a manutenção do banco de


dados com as configurações do servidor (hosts, usuários e bancos de
dados), ou seja, o sistema de privilégios. O conceito do sistema de
privilégios é simples, pela atribuição de um conjunto de privilégios, um
usuário em determinado host tem permissão para executar comandos
sobre uma base de dados. Estes privilégios estabelecem um conjunto de
regras no qual o servidor MySQL se baseia, e estas regras podem ser,
por exemplo, permissão para inserir, selecionar, excluir informações de
uma tabela, ou criar, modificar tabelas etc. Portanto, o sistema de
privilégio, se resume em três 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 estão habilitados a


acessar o servidor MySQL. Sua estrutura de colunas é a seguinte:
Host, Db, Select_priv, Insert_priv, Update_priv, Delete_priv,

5
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 são privilégios de acesso especificados
com Y ou N (o default é N).
!" A tabela user determina os usuários que podem acessar o servidor e
suas senhas de identificação 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 contém as informações relativas a qual banco de dados
um usuário 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 opção -h host significa especificar o nome do host, –u username


significa especificar o nome do usuário 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
identificação do usuário através da senha e em seguida a apresentação
e o prompt do ambiente a espera de comandos:

Enter password: ******


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 459 to server version: 3.22.20a-log
Type 'help' for help.
mysql>

A partir do momento que se está conectado ao servidor, é possível


realizar vários comandos sobre os bancos de dados que se tem
permissão, como selecionar um banco de dados (“use db_name;”),
buscar de dados em tabelas através de queries (consultas do tipo “select
* from uma_tabela;”), inserir valores em uma tabela (“insert into

6
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 à manipulação e controle de bancos de
dados. O comando para desconectar-se do ambiente é “quit”.

1.5 - Exemplos

[shell]$ mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.


Your MySQL connection id is 2 to server version: 3.22.25

Type 'help' for help.

mysql> show databases;


+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)

mysql> create database Curso;


Query OK, 1 row affected (0.00 sec)

mysql> show databases;


+----------+
| 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;

7
+-----------------+
| 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 | |
| DataNasc | date | YES | | NULL | |
| Matricula | varchar(9) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
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 | |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> insert into Aluno values( NULL, 'Guilherme', 'Rua


Pirineus, 43', '1979-11-18', '9723220-3' );
Query OK, 1 row affected (0.00 sec)

mysql> insert into Aluno values( NULL, 'Fulano', 'Rua Pigmeus,


69', '1980-10-24', '9723299-9' );
Query OK, 1 row affected (0.01 sec)

mysql> select * from Aluno;


+----+-----------+------------------+------------+-----------+
| ID | Nome | Endereco | DataNasc | Matricula |
+----+-----------+------------------+------------+-----------+
| 1 | Guilherme | Rua Pirineus, 43 | 1979-11-18 | 9723220-3 |
| 2 | Fulano | Rua Pigmeus, 69 | 1980-10-24 | 9723299-9 |
+----+-----------+------------------+------------+-----------+
2 rows in set (0.00 sec)

mysql> select ID, Nome from Aluno where ID < 10;

8
+----+-----------+
| ID | Nome |
+----+-----------+
| 1 | Guilherme |
| 2 | Fulano |
+----+-----------+
2 rows in set (0.00 sec)

mysql> delete from Aluno where ID=2;


Query OK, 1 row affected (0.00 sec)

mysql> update Aluno set Nome='Guilherme Birckan' where ID=1;


Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from Aluno;


+----+-------------------+------------------+------------+-----------+
| ID | Nome | Endereco | DataNasc | Matricula |
+----+-------------------+------------------+------------+-----------+
| 1 | Guilherme Birckan | Rua Pirineus, 43 | 1979-11-18 | 9723220-3 |
+----+-------------------+------------------+------------+-----------+
1 row in set (0.00 sec)

mysql> grant all privileges on Curso.* to visitante@localhost


identified by ‘senha2000’;
Query OK, 0 rows affected (0.02 sec)

mysql> quit
Bye

[shell]$ mysql -u visitante;

Welcome to the MySQL monitor. Commands end with ; or \g.


Your MySQL connection id is 3 to server version: 3.22.25

Type 'help' for help.

mysql> use Curso;


Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------+
| Tables in Curso |
+-----------------+
| Aluno |
+-----------------+
1 row in set (0.00 sec)

mysql> select * from Aluno;


+----+-------------------+------------------+------------+-----------+
| ID | Nome | Endereco | DataNasc | Matricula |
+----+-------------------+------------------+------------+-----------+
| 1 | Guilherme Birckan | Rua Pirineus, 43 | 1979-11-18 | 9723220-3 |
+----+-------------------+------------------+------------+-----------+
1 row in set (0.00 sec)

9
mysql> drop table Aluno;
Query OK, 0 rows affected (0.00 sec)

mysql> drop database Curso;


Query OK, 0 rows affected (0.00 sec)

mysql> show databases;

+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)

mysql> quit
Bye

10
2 - PHP
PHP é uma linguagem de script no lado do servidor (server-side)
embutida no HTML, portanto é necessário instalar o interpretador da
linguagem no servidor de Web. PHP, assim como MySQL, estão
disponíveis para download para sistemas UNIX, mas para o sistema
operacional Windows precisam de uma licença.
PHP é diferente de um script CGI escrito em linguagens como Perl
ou C pois, ao invés de escrever um programa com muitos comandos
para saída em HTML, você escreve um script HTML com um código
embutido para fazer a mesma coisa. O código PHP é encapsulado em
tags especiais de início 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 código é executado no servidor. Se você tivesse um script PHP
em seu servidor, o cliente iria receber os resultados da execução deste
script, e de maneira alguma poderia determinar qual o código que está
por baixo desta execução. É possível configurar um servidor Web para
processar todos os arquivos HTML com código PHP, e então realmente
não há maneira de os usuários perceberem que existe código embutido
na página HTML.
No nível mais básico, PHP pode fazer qualquer outra coisa que um
programa CGI pode fazer, tal como coletar dados de um formulário,
gerar conteúdo de páginas dinâmicas, ou enviar e receber cookies.
Talvez a maior e mais significante característica em PHP é seu
suporte a uma faixa muito ampla de bancos de dados. Escrever uma
página Web baseada em um banco de dados é muito simples. Os
seguintes bancos de dados são atualmente suportados: Adabas D,
Interbase, Solid, Dbase, mSQL, Sybase, Empress, MySQL, Velocis,
FilePro, Oracle, Unix dbm, Informix, PostgreSQL.
PHP também tem suporte a comunicação para outros serviços
usando protocolos tais como IMAP, SNMP, NNTP, POP3, ou mesmo
HTTP. Você pode também abrir sockets de rede e interagir usando
outros protocolos.
Um exemplo de um script dinâmico que imprime a data atual está
a seguir:

<HTML>
<HEAD>
<TITLE>Script de exemplo</TITLE></HEAD>
<BODY>
<CENTER>Bem-vindo ao script de exemplo:</CENTER>
<?php
/* "<?" acima indica o início do script PHP */
$hoje = date("Y-m-d");
print "<BR><BR>Hoje é: $hoje.";
# o sinal "?>" seguinte indica o fim do script

11
?>
</BODY>
</HTML>

Assumindo que hoje é dia 06 de maio de 2000, a saída do script


acima seria:

Bem-vindo ao script de exemplo:

Hoje é: 2000-05-06.

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 sentenças de saída 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-vírgula;
4. Todo comando HTML dentro do comando print será executado
normalmente pelo browser e desempenhará sua função usual;
5. Documentos incluindo código PHP devem ser salvos com a extensão
.php ou .php3, isto informará ao interpretador PHP3.0 para executar
os comandos encontrados dentro das tags <? e ?>. É possível
também utilizar extensões diferentes do padrão, 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 não pode ser identificado pela extensão do arquivo;
6. A função date apresentada no script acima é uma das milhares de
funções que o PHP disponibiliza, ela tem o formato: string date
(string formato, int timestamp);, ou seja, retorna um string e aceita
dois parâmetros: o tipo de formato a ser aprensentado e um valor
timestamp1 de data opcional (quando omitido, como no nosso caso,
considera a data atual).
Uma grande característica de PHP3.0 é a capacidade de
construção de templates HTML, que são muito úteis quando se está
desenvolvendo um site com muitas páginas. Isso é possível através do
comando include que permite a inserção de código, provindo de um
arquivo separado, dentro de um documento HTML. Desta maneira é
possível estabelecer, por exemplo, um arquivo de rodapé num arquivo
chamado rodape.txt que aparecerá em várias páginas sem precisar
reescrever o código, 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 número inteiro, os segundos, minutos, horas, dia, mês e
ano de uma data. Sendo que a cada segundo ele incrementa o seu valor, tornando
simples a manipulação de data a partir de operadores como soma, subtração etc.

12
<? include("rodape.txt"); ?>

Um outro aspecto importante de PHP é a capacidade de modificar


variáveis passadas de formulários HTML, tornando possível a realização
de várias tarefas como: envio de um e-mail (através da função mail())
baseado em informações de uma página, impressão de páginas
personalizadas, passagem e armazenamento de informações em um
banco de dados etc.
Existem várias outras características interessantes a destacar
sobre PHP, entre elas pode-se citar: Suporte ao modelo de orientação a
objetos, Interação com bancos de dados, Criação de imagens GIF,
Autenticação HTTP, Manipulação de erros, Manipulação de cookies,
Suporte para upload de arquivos, Conexões persistentes de bancos de
dados, Manipulação de arquivos remotos entre muitas outras.
Para se ter uma idéia algumas classes de funções disponíveis no
PHP3.0 são listadas a seguir: funções de suporte a bancos de dados,
específicas ao Apache (servidor de Web), de array, matemáticas,
calendário, data, diretórios, execução de programas, HTTP, imagem,
filesystem, hashes, Rede, NIS, PDF, Perl, expressões regulares, strings,
URL, compressão, XML etc.

2.1 - Um breve histórico de PHP

PHP foi concebido num dia do outono de 1994 por Rasmus Lerdof.
A primeira versão utilizada ficou disponível no início de 1995 e foi
conhecida como Personal Home Page Tools. Ele consistia de um
analisador muito simples que entendia somente algumas macros e um
número de utilidades que estavam em uso comum nas home pages até
então, 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 versão 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 começaram a contribuir com o seu código.
É difícil dar estatísticas, 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 número cresceu para mais de 50.000 e nesta
época ocorreram mudanças no desenvolvimento do PHP. O analisador
foi reescrito por Zeev Suraski e Andi Gutmans e o novo analisador deles
formou a base do PHP versão 3.

13
2.2 - Comentários

Todo programa deve possuir comentários, visando o entendimento


do código em consultas posteriores. No PHP, existem três tipos de
marcadores de comentário, que são:

// e # para comentário de uma linha. Por exemplo:

// atribui o nome à variável


$nome = "Guilherme Birckan";
$email = "birckan@inf.ufsc.br"; # atribui o E-mail à variável

e para comentários que ocupem mais de uma linha, usamos os


marcadores /* */.

/*
Nas linhas abaixo, atribuiremos os valores
Do nome e do e-mail às respectivas variáveis
*/
$nome = "Guilherme Birckan";
$email = "birckan@inf.ufsc.br";

2.3 – Variáveis

Para começar, vamos ver como o PHP trata suas variáveis (ou
constantes), que podem ser variáveis escalares ou não-escalares. As
variáveis escalares são aquelas que podem ser retrabalhadas, ou
"divididas em pedaços menores", enquanto as não escalares são as
arrays (matrizes) e os objetos.
A identificação de uma variável, independente do seu tipo é pelo
sinal $ colocado como primeiro caractere, como abaixo:

$nome = "Guilherme Birckan";


$matricula = 97232203;

A primeira variável é do tipo string, e a segunda, inteiro (ambas


escalares). Vale lembrar que, como a linguagem C, as variáveis $nome e
$Nome são consideradas diferentes, pois o PHP as trata como sensíveis
ao caso.

14
2.3.1 – Inteiros e ponto flutuante

As variáveis inteiras são bastante simples de ser usadas, sem


nenhuma diferença das demais linguagens que você está habituado a
usar. Segue as sintaxes abaixo:

$a = 123;
$b = -123;

As variáveis em ponto flutuante também são bem simples,


lembrando que no lugar da vírgula devemos usar um ponto (“.”):

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


$a = 1.2e3;

2.3.2 – Arrays

PHP suporta arrays simples e múltiplas dimensões (também


chamadas de matrizes). Usa-se uma variável simples indexada para
denotar um array. Esta indexação pode ser feita por números 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 funções já implementadas de ordenamento de vetores,


tais como: sort()

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


sort ($fruits);

Os arrays multidimensionais são 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 dimensões

15
Em PHP3 temos um problema de referenciar arrays
multidimencionais dentro de strings. O exemplo a seguir não funciona:

$a[1][5] = $f;
echo “Isto não vai funcionar: $a[1][5]”;

Mas você pode fazer isso usando a concatenação:

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

2.3.3 – Strings

Significado
\n Nova linha
\t Tab horizontal
\\ Contra barra
\$ Dollar

Atribuições e concatenações:

$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 conversão 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)

16
2.3.4 – Variáveis de variáveis

Algumas vezes é conveniente você utilizar valores de variáveis


como nomes de outras variáveis, utilizando assim variáveis de forma
dinâmica. Isto é possível em PHP!

$a = “hello”; // Isto é uma variável simples


$$a = “ world”; /* Acabamos de criar uma variável $hello com o
conteúdo “ world” */

Você também pode imprimir estas variáveis de forma dinâmica:

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

(int), (integer) Converte para inteiro


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

2.3.6 – Variáveis por referência no PHP4

Na versão 4 do PHP, as variáveis podem receber valor por


referência. Isto significa que ao para atribuir o valor a uma variável não
usamos um valor, mas um "ponteiro" para o valor em questão. Na
verdade, este "ponteiro" é uma outra variável:

$nome = "Guilherme Birckan";


$identificacao = &$nome;

Deste modo, a variável $identificacao recebe o valor de $nome


e, se uma das duas for atualizada, a outra também será, mantendo o
mesmo valor em ambas.

17
2.4 - Operações Matemáticas

As operações no PHP também seguem o padrão das outras


linguagens (+, -, *, /, %[modulo da divisão], sin(), cos()). Além destas,
o PHP tem um completo conjunto de operações matemáticas, que
podem ser consultadas nesta página:

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

Um exemplo para calcular o valor líquido de um preço, depois de


aplicar 10% de desconto sobre o preço bruto:

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

2.5 - Operadores

Operadores aritméticos:

Exemplo Nome
$a + $b Adição
$a - $b Subtração
$a * $b Multiplicação
$a / $b Divisão
$a % $b Modulo da divisão

Operador de atribuição:

Exemplo Nome
$a = $b Atribuição

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

18
Operadores lógicos:

Exemplo Operador
$a and $b E
$a && $a E
$a or $b OU
$a || $b OU
$a xor $b XOR
!$a NOT

Operadores de comparação:

Exemplo Nome
$a == $b Igual
$a === $b Idêntico
$a != $b Não igual
$a < $b Menor que
$a > $b Maior que
$a <= $b Menor ou igual
$a >= $b Maior ou igual

Operadores de execução:

$output = `ls –l`;


echo “<pre>$output</pre>”;

Operadores de incremento/decremento:

Exemplo Nome Efeito


++$a Pré-incremento Incrementa $a, depois retorna seu valor
$a++ Pós-incremento Retorna o valor de $a, depois incrementa
--$a Pré-decremento Decrementa $a, depois retorna seu valor
$a-- Pós-decremento Retorna o valor de $a, depois decrementa

19
2.6 - Operações com strings

Operações com strings são uma das características mais


desenvolvidas do PHP. Para concatenar-se dois strings, usamos o
operador “.” - Dentre as funções mais importantes estão:

• 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 maiúsculo.

Exemplo:

$nome = ucwords("valdir henrique dias leite");


echo($nome); //Esta linha exibirá Valdir Henrique Dias Leite

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


está contida em uma string:

if strpos ($email, "@") {


echo("Seu e-mail parece estar correto!\n");
} else {
echo("O e-mail está inválido\n");
}

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


uma variável $email. Se estiver, exibe a primeira mensagem. Do
contrário, exibe a segunda.
Outras funções relacionadas à operações com strings podem ser
encontradas em

http://br.php.net/manual/ref.strings.html

20
2.7 - Controlando o fluxo e LOOPS

As funções usadas para controlar o fluxo do programa e execução de


"loops" são:

• if ... else ... else if, que segue o padrão da linguagem C:

if ($sexo == "m") {
echo "Você é do sexo Masculino\n";
} elseif ($sexo == "f") {
echo "Você é do sexo Feminino\n";
} else {
echo "Por favor, informe corretamente seu sexo\n";
}

• switch, uma maneira de controlar o fluxo onde a variável de


controle do fluxo pode ter várias opções de valores. Este tipo de controle
poderia ser feito com uma seqüência de "ifs" e "elseifs", mas o uso do
switch torna o código mais legível e faz com que seja executado mais
rapidamente, pois a verificação da variável "$sexo" só é feita uma vez e
depois comparada com as opções de cada "case". Se não estiver em
nenhuma delas, é executado o bloco sob o "default". Já com o "elseif", a
comparação é feita novamente a cada sentença. Neste exemplo, a
diferença não é tão grande, mas quando o tipo de verificação vai ficando
mais complexo a velocidade começa a ser sentida. Na maioria dos
casos, vale a pena optar pelo switch.

switch ($sexo) {
case "m":
echo "Você é do sexo Masculino\n";
break;
case "f"
echo "Você é do sexo Feminino\n";
break;
case default:
echo "Por favor, informe corretamente seu sexo\n";
break;
}

Sempre inclua o comando break no final do case. Caso contrário, a


execução continuará até encontrar o final do switch (ou a instrução
break), fazendo com que as instruções de mais de um case sejam
executadas.

• while, que permite repetir o código enquanto uma condição for


verdadeira:

21
while ($contador > 0) {
$contador = $contador - 2;
}

• for, para execução de um loop determinada quantidade de vezes:

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


echo "$i\n";
}

2.8 - Tratando formulários

Vamos fazer, passo-a-passo, um script para receber os dados de


um formulário, consistir as informações e enviar o resultado por e-mail.
Este formulário possui campos para digitação do nome, e-mail e
telefone. Todos os campos são obrigatórios e a consistência do campo e-
mail deve ser feita apenas verificando a existência do caractere @, para
facilitar as coisas. Já o campo telefone deve ter sete ou oito caracteres.
Tendo este cenário, mãos a obra!

<?php

$erro = "";

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

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


$erro .= "O número do telefone deve ter sete ou oito
caracteres\n";
}

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


$erro .= "O e-mail digitado não é válido\n"
}

Esta primeira parte faz a consistência dos dados e altera o valor


da variável $erro, caso alguma das condições não seja satisfeita. Para
prosseguir, devemos verificar a ocorrência de erros e então enviar o e-
mail se erros não tiverem ocorrido ou enviar uma tela de resposta
informando qual o erro aconteceu. Como o valor de $erro antes da
verificação dos campos é "", basta testar se a variável ainda tem este
valor para saber se aconteceu ou não um erro. Vamos continuar:

22
echo("<html><title>Envie o formulário
abaixo</title><body><center>\n"); # Cabeçalho de resposta.

if ($erro == "") { // Não houve nenhum erro no preenchimento


mail("birckan@inf.ufsc.br", "Dados do Formulário"," Nome:
$nome\n E-mail: $email\n Telefone: $telefone\n","From:
$email\nDate: $date\n" );

echo("Obrigado por enviar este formulário!\n");


} else
echo("Não foi possível enviar o formulário!<br>Verifique as
mensagens abaixo<br><br><b> $erro \n");
}
echo("</center></body></html>\n");

Pronto!

A novidades neste script é:

• e-mail. Sua sintaxe é a seguinte: mail(Destinatário, Assunto,


Mensagem, Informações_Adicionais);

Depois do script que envia e-mail, vamos fazer um outro que


guarde as informações de um formulário HTML em um banco de dados.

2.9 – Funções

As funções no PHP não diferem muito das outras linguagens.


Algumas características das funções:

• Devem ser declaradas antes de serem usadas.


• Podem receber parâmetros por valor ou por referência.
• Podem ter quantidade variável de parâmetros (Apenas a partir da
versão 4).
• Os parâmetros podem ser declarados com um valor default.
• Uma vez definida, uma função não poderá ser "redefinida".

23
Alguns exemplos de funções:

/*
Esta função retorna TRUE ou FALSE, dependendo da validade ou
não do e-mail informado.
*/
function verifica_email($email){
if strpos ($email, "@") = 0 {
return false;
} else {
return true;
}
}

/*
Neste exemplo calculamos o valor líquido, tendo o valor bruto
e o desconto a ser aplicado. Se o desconto não for informado,
utilizaremos 10% como padrão.
*/
function valor_liquido($valor_bruto, $desconto = 10) {
return ($valor_bruto - ($valor_bruto * $desconto/100));
}

Os dois exemplos acima receberam seus parâmetros por valor.


Isso significa que as alterações de variáveis realizadas dentro da função
só terão efeito no contexto da função, e estas mudanças não refletirão
no resto do script. Em alguns casos pode ser interessante que os valores
dos parâmetros sejam alterados pela função, e que seus novos valores
reflitam no script como um todo. Para conseguir isto, usamos a técnica
de passagem de parâmetro por referência. Vamos ver um exemplo:

function completaURL(&$mv_URL) {
$mv_URL .= "http://".$mv_URL;
}

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

echo "A URL completa fica assim: $URL\n";

24
2.10 – Classes

Como não poderia deixar de ter, PHP também possui suporte a


criação 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 método construtor da classe (método que é executado quando a


classe é criada) é uma função 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 características de outras classes. Criando


uma classe derivada de uma outra classe, como no exemplo a seguir da
criação da classe Aluno, derivada da classe Pessoa:

class Pessoa {
var $nome;
var $endereço;
}

class Aluno extends Pessoa {


var $matricula;
}

25
Todas as características da classe mãe são herdadas pela classe
filha. A herança múltipla não é suportada pelo PHP.

2.11 - Acesso à banco de dados

Como foi dito na apresentação 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, além de suportar ODBC, fazendo com que o PHP
possa trabalhar praticamente com todos os bancos de dados existentes.

Neste módulo vamos ver apenas as apenas as funções 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 não 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
usuário com acesso à este banco de dados. Vale lembrar que o MySQL
não é 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 usuário
visitante e senha temp99. O primeiro passo é "logar" ao servidor. Para
isso usamos a função mysql_connect e informamos ao servidor login
(usuário) e senha. Veja abaixo:

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

Este comando abrirá uma conexão com o MySQL da máquina local


(localhost), usando o usuário visitante cuja senha é temp99. Uma
referência a esta conexão será gravada na variável $conn.
Depois de conectados ao servidor, devemos conectar ao banco de
dados propriamente dito, usando o comando mysql_select_db, que
precisa de dois parâmetros: O nome do banco de dados e a conexão.
Caso a conexão não seja informada, ele tentará usar a última criada. Em
nossos exemplos, iremos sempre informar os dois parâmetros.

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

26
Neste ponto já temos uma conexão com o servidor e já criamos
um link com o banco de dados. Agora podemos enviar os comandos SQL
que desejarmos. Se você não souber SQL, aprenda :-)
Agora segue nosso exemplo prático: Vamos usar o script do
módulo passado e alterá-lo de modo que os dados digitados no
formulário 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 número 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 não é válido\n";
}

# Cabeçalho 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 ("Não foi possível atualizar a tabela");
mysql_close($conn);
mail("birckan@inf.ufsc.br", "Dados do Formulário"," Nome:
$nome\n
E-mail: $email\n Telefone: $telefone\n","From: $email\nDate:
$date\n");
echo("Obrigado por enviar este formulário!\n");
} else {
echo("Não foi possível enviar o formulário!
Verifique as mensagens abaixo:

\n");

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

Este é o procedimento padrão 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 função que o precede não possa ser executada.

2.12 - FTP e HTTP

Algumas vezes pode ser útil que nosso script execute um outro
script ou então 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 página, usando o protocolo HTTP. Para isso,
basta chamar a função Header("location: pagina.htm") para redirecionar
para uma página específica ou então o usar o comando abaixo para
executar um CGI passando parâmetros via URL:

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

Onde $param é uma variável que pode vir de uma consulta a


banco de dados ou mesmo de um formulário.
Outra função HTTP importante é o uso de "cookies" para gravar
alguma informação no browser de quem estiver visitando sua página.
Para gravar um "cookie", usamos a função setcookie(), como mostrado
abaixo:

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

28
O comando acima gravará um cookie chamado "Visitou" com o
valor "sim", com apenas uma hora de duração. Note que o 3600 é o
número de segundos além do horário atual que o cookie deve ficar
ativo. Se no lugar de 3600, usássemos 36000, o cookie seria ativo por
10 horas.

FTP: A seqüência 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 são:

$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 - Sessões

Sessões HTTP servem para preservar dados em acessos


subseqüentes, através de registros de variáveis de sessão. Usamos
basicamente três funções:

• session_start();
• session_register( ”VARIÁVEL" );
• 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 várias funções para o tratamento de arquivos a fim


de facilitar sua manipulação. A primeira coisa que se tem que saber é

29
que para se manipular arquivos, tem-se que abrir e fechar o arquivo. O
PHP possui as seguintes funções para se abrir e fechar arquivos:

• fopen( “nome_do_arquivo”, “mode”, [diretório] ) – Abre o arquivo


• fclose( fp ) - Fecha o arquivo

Estes modos de abrir o arquivo podem ser os seguintes:

r somente leitura; posiciona-se no início do arquivo.

r+ leitura e escrita; posiciona-se no início do arquivo.

w somente escrita; posiciona-se no início do arquivo e o trunca


para tamanho zero. Caso o arquivo não exista o PHP tenta criá-lo.

w+ leitura e escrita; posiciona-se no início do arquivo e o trunca


para tamanho zero. Caso o arquivo não exista o PHP tenta criá-lo.

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


arquivo não exista o PHP tenta criá-lo.

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


arquivo não exista o PHP tenta criá-lo.

Após abrir um arquivo, pode-se ler o conteúdo ou escrever em seu


conteúdo, 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);

30
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


verificação de erros), que é acessado por uma porta TCP, que permite
acompanhar a execução dos scripts e ver quaisquer erros que estiverem
acontecendo.

Além disso o tratamento de erros pode ser feito no próprio script,


conforme explicado abaixo:

O PHP possui 4 níveis de erros e avisos, que são:

1 - Erros de normais de Funções


2 - Avisos Normais
4 - Erro de interpretação
8 - Avisos que você pode ignorar, mas que podem causar danos à
execução normal do script.

O padrão do PHP é o nível 7 (1 + 2 + 4), mas este nível pode ser


alterado tanto no arquivo de configuração quanto em tempo de
execução, chamando a função error_reporting($nivel) com o nível
desejado.
Se usarmos o valor 0 (zero) nenhum aviso ou mensagem de erro
será gerada em tempo de execução. Neste caso, podemos usar uma
variável especial ($php_errormsg) que conterá o último erro gerado
pelo script, para que possamos criar rotinas específicas para tratamento
de erros. Podemos fazer uma analogia ao comando on error resume
next do ASP, técnica muito útil para personalizarmos mensagens de erro
para o usuário, entre outras coisas.

31
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. & SANT’ANNA, Juliana S. Trabalho de Conclusão de Curso –


“Construindo uma aplicação de Comércio Eletrônico”

32
WeberDev.com - PHP & MySQL Code examples, tutorials, Classes, web development resources

New Tools : SEO Monitor (* Beta


*) | Uptime Monitor (* Beta *)[ Login ]

Free Sample Chapters | Beginner Guides | PHP Classes | Code


Search WeberDev Examples | Articles | Jobs | Forums | Manuals | Site Map |
Advertise | FeedBack

PHP Search Toolbar RSS Feeds

● WeberDev.com - Latest PHP Code Examples Web WeberDev


WeberForums
● WeberDev.com - Latest PHP Articles and
Tutorials Search
● WeberDev.com - Latest Jobs
● WeberDev.com - Latest Project Matching
WeberTrivia Questions
● WeberBlogs.com - Latest Web Logs Think you are smart?
● WeberForums.com - PHP General Latest Prove it!. Try your skills
Posts with these questions :
Weber Sites
MySQL client programs
Web Site Templates ● WeberForums.com - MySQL General Latest
use default values for any
Posts
Web Development connection parameter
Resources ● WeberForums.com - Apache General Latest option that you do not
Posts specify, the default
Learn PHP playing Trivia
● WeberForums.com - Java Script General hostname is
PHP Web Logs (BLogs) Latest Posts localhost. (MySQL)
PHP & MySQL Forums The \"fdisk -l\" command
Web Development Index Latest Code Examples Latest Articles displays the partition and
Web Development Content the size of the partition in
KB on the hard
What is My IP? 2006-05-05
2006-05-18 PHP 101 (part disk. (Linux)
Web Site Uptime Monitor Secure URL $_GET
11): Sinfully
Simple
2006-05-18
Yahoo! Messenger Friend List 2006-04-16
PHPClasses
Using
Codewalkers 2006-05-17 Free Sample Chapters
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
In The Cookie
PHP Programming Help

http://www.weberdev.com/ (1 of 3) [21/05/2006 22:41:48]


WeberDev.com - PHP & MySQL Code examples, tutorials, Classes, web development resources

PHP/MySQL 2006-05-08 Jar The JavaScript


Programming Quick SQL Row Selection Anthology: 101
2006-03-22 Essential Tips, Tricks &
Stargeek Studios 2006-05-08 Using Adobe's Hacks
Webmaster Resources Data Retrieve from mailbox and Flex Builder this is the most complete
Webmaster Forum generate the SQL Syntax tool to connect a question-and-answer book
PHP backend to on JavaScript. It's a
XML meta language 2006-05-05 collection of over 100
the front end
website builder A Complete thoroughly-tested,
table(ADD,EDIT,VIEW,DELETE)2006-03-18 customizable and elegant
Suggest your site
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 interactivity to your site:
NewExamplesRSS 12% from slick drop-down
PHP Mysql Paging System
Adwords 5% More Articles menus, to style sheet
& Tutorials... switchers, to AJAX
MyYahoo 4% 2006-05-04
applications, and much
Extract keywords from a string
Overture 4% more.
having words in " " count as one
phpn.org 4% string. More Sample Chapters
NewArticlesRSS 3%
2006-05-01
phpclasses 3%
Data Retrieve from Mysql using Web Development jobs
OSContent 2% AJAX with PHP 2006-04-27
SearchBox 1% Learning Management
Become an Affiliate More Code Examples... Programmer
2006-04-27
Front End Engineer
Small Business
Hosting Domain Names
Latest News Latest Forums Threads
webmaster forums Submit a Job
2006-05-19 2006-05-22 03:12:59 More jobs and freelance
Zero-day Word flaw used Storing lists in mysql projects...
in attack
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
Apple flaws put both 2006-05-20 16:46:26
Free Domain Names Macs and PCs at risk &#9679; &#9679;
Real Estate - Real Estate
&#9679; &#9679;
Listings 2006-05-11
Ballmer: Google wants Dimension Se
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

http://www.weberdev.com/ (2 of 3) [21/05/2006 22:41:48]


WeberDev.com - PHP & MySQL Code examples, tutorials, Classes, web development resources

Free Casino Games Vista search


More Info

Great Information Quick


Seek
Yellow Pages
Free Ebay Marketing
Ebooks

http://www.weberdev.com/ (3 of 3) [21/05/2006 22:41:48]


Webmonkey: The Web Developer's Resource

the web developer's resource


-> GO ->

Webmonkey Q&A: Heather HOW-TO LIBRARY QUICK REFERENCE


Gold
Authoring JavaScript Code Library
Performer and technology
evangelist Heather Gold hopes to Design HTML Cheatsheet
bring the transparency of open source
software and online communities to the Multimedia Special Characters
world of personnel management. E-Business Color Codes
Webmonkey's Bryan Zilar asks her how she
helps businesses stay honest with Programming Browser Chart
themselves and their employees. 18 May 2006
Backend Stylesheets Guide

Jobs Unix Guide


Read Monkeybites ...
Check out the Monkey Bites blog hosted by our Glossary
friends at Wired News. Join the Webmonkey About Us
Domain Registries
staff as we serve up fresh, piping hot stacks of
webdev news and commentary on a daily basis.
chew more bites» vist our blog»

Debugging with Venkman


Mozilla's open source JavaScript
debugger is one of the most
valuable tools available to web
developers. Venkman has dozens of powerful
features and is fully cross-platform. Chris
Klimas shows you how to use Venkman to
make your client-side scripts sing. Part Two
of our JavaScript debugging
tutorial. 17 May 2006

Webmonkey Mailbox: Debugging


and Flying Toasters
In this week's mailbox, responses to
our tips on better JavaScript
debugging. Also, another lesson on why fancy
animations aren't the centerpiece of a quality
user experience. 12 May 2006
recent articles »

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]


MySQL AB :: The world's most popular open source database

The world's most popular open source database

Search

Login / Register
MySQL.com
MySQL.com
日本
Italiana
en auf
Français
Deutsch
● MySQL.com
● MySQL Network
● Developer Zone
● Partners
● Online Shop
● Products
● Training
● Consulting
● Support
● OEM
● News & Events
● Customers
● Why MySQL?
● 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:

http://www.mysql.com/ (1 of 3) [21/05/2006 22:42:22]


MySQL AB :: The world's most popular open source database

MySQL Events
MySQL Powers the World's
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 Web Seminars MySQL Training White Papers »
Retail Embedding and MySQL 5.0 Developer Zone »
Case Studies » Bundling MySQL - In-depth
Jobs at MySQL »
Telecom Best Practices
Jun 27: Detroit
Case Studies » Register Now »
Jul 25: San
Travel Francisco
Case Studies » Cost-Effective Jul 18: London
Embedded Database Scale-Out MySQL 5.0 New
Case Studies » Using MySQL Features
(replay)
Register Now » Jun 27: Frankfurt
Aug 28:
Washington DC
Sep 25: London

A Guide to High Availability VOIP

© 1995-2006 MySQL AB. All rights reserved.


● About MySQL

● Careers
● Site Map
● Contact Us

http://www.mysql.com/ (2 of 3) [21/05/2006 22:42:22]


MySQL AB :: The world's most popular open source database

● Privacy Policy
● Legal

http://www.mysql.com/ (3 of 3) [21/05/2006 22:42:22]


PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.

Login To PHPBuilder
User Name: Password:
Join Up!
74847 members and counting!
Register A New Site
Account
* NOTE: This is for logging
into the main site
only! To login to the forums, PHP Manual
click here

● 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

http://www.phpbuilder.com/ (1 of 6) [21/05/2006 22:43:04]


PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.
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

● Installing PHP under


Xitami
Using cURL With
PHP
Shell Scripting w/PHP
Optimizing Postgresql
PHP Web Blog - Part
3

http://www.phpbuilder.com/ (2 of 6) [21/05/2006 22:43:04]


PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.

● HOME
● Community
● Articles
● Code Library
● People
● Mail Archive
● My Account
● Contribute

http://www.phpbuilder.com/ (3 of 6) [21/05/2006 22:43:04]


PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.
● 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

http://www.phpbuilder.com/ (4 of 6) [21/05/2006 22:43:04]


PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.
DCPHP Conference, php|works-db|works Call for Papers, the latest PEAR/PECL releases and much more!
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

http://www.phpbuilder.com/ (5 of 6) [21/05/2006 22:43:04]


PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.

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

http://www.phpbuilder.com/ (6 of 6) [21/05/2006 22:43:04]


PHP: Hypertext Preprocessor

downloads | documentation | faq | getting help | mailing lists | reporting bugs |


php.net sites | links | my php.net
function list
search for in the

What is PHP? Upcoming Events


PHP is a widely-used
[add]
general-purpose scripting
May
language that is especially suited
for Web development and can be User Group Events
embedded into HTML. If you are
new to PHP and want to get some
idea of how it works, try the Call to speaker 21. PHP Cairo Meeting
23. New York
introductory tutorial. After that,
check out the online manual, and for Paris 23. AzPHP
23. San Antonio PHP Meetup
the example archive sites and
some of the other resources "Forum PHP 25. Arabic PHP Group
available in the links section. Meeting
2006" 25. Malaysia PHP User Group
Ever wondered how popular PHP Meet Up
is? see the Netcraft Survey. [17-May-2006] The AFUP, 25. PHP Beer - Quebec
Association Française des 29. Long Island PHP Users
Thanks To Utilisateurs de PHP, is proud to Group
announce the upcoming conference 31. Munich
● easyDNS
"Forum PHP 2006". For this unique
● Directi event in France, we are looking for Conferences
● pair Networks the best French speaking experts, who
want to share their know-how and 27. Caminhos Certificacao
● EV1Servers enthusiasm. This two day conference PHP / Zend
● Server Central features one technical day, with the
most advanced PHP techniques and a Training
● Hosted Solutions
business day, with case studies and
● Spry VPS Hosting examples of successful projects. 21. AlefBrain PHP Training
● eZ systems / HiT 2006
Date and location: the "Forum PHP 22. PHP w/MySQL Bootcamp
● OSU Open Source Lab 2006" will take place in Paris, at the
- USA
● Emini A/S SNHF (Société Nationale
d'Horticulture), on Thursday and 22. Formation PHP-MySQL
● Yahoo! Inc. Friday the 9th and 10th of November 22. Formation PHP - Mysql
2006. (Montreal)
Related sites 23. UK PHP Training
23. Formation LAMP Ã
● Apache
Rimouski
● MySQL 25. PHP Brasil - Training

http://www.php.net/ (1 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

● PostgreSQL 29. PHP/MySQL Training in


● Zend Technologies San Fran.
29. Formation LAMP a
Community Montreal
29. PHP/MySQL/Apache/IIS
● LinuxFund.org in San Fran
● OSTG NYPHPCon June
Syndication 2006 Program User Group Events
You can grab our news as an RSS
feed via a daily dump in a file
Announced 1. SDPHP (San Diego, CA)
1. Hannover
named news.rss.
[16-May-2006] We are pleased to 1. Meetup Day
announce the speaker, tutorial and 1. Omaha PHP Users Group
keynote program for NYPHPCon Meetup
2006. The New York PHP 1. PHP London
Conference & Expo 2006 is taking 1. The Houston PHP Users
place in New York City, at the Group
historic New Yorker Hotel, June 1. Boston PHP Meetup
14-16, 2006. There will be three full 1. Melbourne PHP User Group
days of sessions, tutorials, exhibits,
1. The West Palm Beach PHP
and networking events.
Group
We are also pleased to host the IBM 1. Atlanta PHP User Group
Mashup Contest and Oracle PHPFest, 1. Manchester UK - PHP
and a special PHP Training package Group
at this event. 1. EdPUG - Edinburgh PHP
NYPHPCon 2006 focuses on the The User Group
PHP Business Community, with two 1. Sydney PHP Group
featured parallel tracks plus tutorials: meetings
Business Strategy and Technical 1. PHP UG Meetup Auckland
Solutions. Over 400 are expected to 1. PHP Quebec - Montreal
attend, including business and 1. Orange County PHP User
technical professionals from around Group
the world. 2. Köln/Bonn
3. Encuentro PHP en Cáceres
(SPAIN)
PHP 5.1.4 4. PHP meeting online in
China
Released 6. SW Florida Linux Users
Group
[04-May-2006] A critical bug with 6. PDXPHP monthly meeting
$_POST array handling as well as the 7. Central Iowa PHP Users
FastCGI sapi have been discovered in

http://www.php.net/ (2 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

PHP 5.1.3. A new PHP release 5.1.4 Group


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

http://www.php.net/ (3 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

the session extension. Conferences


● Fixed a bug that would allow
14. NYPHPCon 2006
variable to survive unset().
23. PHP@Strasbourg Journees
● Fixed a number of crashes in
du Libr
the DOM, SOAP and PDO
extensions. 24. PHP Vikinger Community
Event
● Upgraded bundled PCRE
library to version 6.6 24. PHP at FrOSCon
30. WebTech 2006
● The use of the var keyword to
declare properties no longer
raises a deprecation Training
E_STRICT. 1. Curso de PHP Avanzado en
● FastCGI interface was Bilbao
completely reimplemented. 1. Web Programming Using
● Multitude of improvements to PHP/MySQL.
the SPL, SimpleXML, GD, 1. PHP/MySQL Training in
CURL and Reflection
San Fran.
extensions.
1. Formation LAMP a
● Over 120 various bug fixes.
Montreal
Further details about this release can 4. Ahmedabad PHP Group
be found in the release announcement Training
and the full list of changes is 5. MySQL Spain
available in the PHP 5 ChangeLog. 5. Curso PHP Madrid
5. PHP E-Learning/Germany
5. Curso on-line ActionScript /
Summer of PHP
5. PHP & MySQL Training in
Code Kassel
5. PHP & MySQL com
[01-May-2006] Proposals are now Dreamweaver MX
being accepted for Google's Summer 5. Curso on-line de PHP
of Code program. If you qualify and 5. Formation LAMP a Quebec
you are interested in working on a 5. PHP &
PHP-related project this summer, MYSQL-Construindo
please consider applying. We have WebSites
listed a couple of ideas, but we would 5. Malaysia : Advanced PHP &
encourage you to submit a proposal MySQL
for any part of PHP you are interested 6. Curso on-line de
in. If your project is accepted we will
PHP-MySQL
match you up with a mentor and try
to provide you with as much support 6. EVERY TUESDAY: PHP
as possible. To get started, read the Class (FREE!)
FAQ and then go to Step 1. 8. Intro to PHP

http://www.php.net/ (4 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

12. PHP & MySQL Training /


Frankfurt
PHP at 12. PHP para Expertos Curso
on-line
FrOSCon Call 12. Curso PHP y MySQL
13. PHP Training Philippines
for Papers 19. PHP & MySQL Training /
Gießen
[24-Apr-2006] The faculty for 20. Cursos de PHP en Bilbao
Computer Science of the college of 22. PHP Brasil - Training
higher education Bonn-Rhein-Sieg
22. Intro to MySQL
celebrates the first conference about
free software in cooperation with the 26. PHP/MySQL/Apache/IIS
LUUSA and the FrOSCon e.V. 2006. in San Fran
The event takes place on June 26. PHP and MySQL
24th/25th in Bonn, Germany and is Bootcamp Training
organized completely free and open. 26. Advanced PHP w/MySQL
- USA
The PHP user groups Köln/Bonn
and Dortmund take part in the 27. UK PHP Training
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
[24-Apr-2006] The PHP Vikinger is a
community-driven PHP event that
will be held in Skien, Norway from
June 24th to 25th. Like the famous
Foo Camp and Bar Camp, the people
who attend get to choose and present
the sessions at the event.
The event is meant to be affordable:
registration is 20 Euros, and simple
food and a place to sleep are provided
for both days of the event. The major
expense for most attendees will be the
cost of traveling to Norway. 50
invitations have been sent to various
PEAR and PHP contributors. General
registration for the event opens on

http://www.php.net/ (5 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

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

http://www.php.net/ (6 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

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 Québec
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

http://www.php.net/ (7 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

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]
PHP: Hypertext Preprocessor

[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

http://www.php.net/ (9 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

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

http://www.php.net/ (10 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

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.

http://www.php.net/ (11 of 12) [21/05/2006 22:43:29]


PHP: Hypertext Preprocessor

● 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

show source | credits | stats | sitemap | contact | advertising | mirror sites

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

http://www.php.net/ (12 of 12) [21/05/2006 22:43:29]