Escolar Documentos
Profissional Documentos
Cultura Documentos
FRAMEWORK PARA
O PHP 5
Características e Implementação de aplicações WEB
com a plataforma de desenvolvimento PRADO
1
PRADO, UM FRAMEWORK para o PHP 5
7.8 – Forum para tirar dúvidas :............................................................................................... 46
7.9- Aplicativos de demonstração: .......................................................................................... 46
7.10 – Sobre o PRADO: .......................................................................................................... 46
8- Conclusões ............................................................................................................... 47
9- Bibliografia ................................................................................................................ 48
2
PRADO, UM FRAMEWORK para o PHP 5
A GRADECIMENTOS E D EDICATÓRIAS
3
PRADO, UM FRAMEWORK para o PHP 5
RESUMO
Palavras-Chave:
PRADO – PHP 5 – Framework – Componentes – Eventos – MVC – WEB
4
PRADO, UM FRAMEWORK para o PHP 5
1-INTRODUÇÃO
O PRADO é framework de desenvolvimento de aplicações web em PHP 5 que utiliza
componente e eventos em sua implementação e usa o padrão MVC que separa a parte lógica
da apresentação. PRADO é uma sigla inglesa que significa “Desenvolvimento rápido de
aplicações orientadas a abjeto em PHP” (em inglês, “PHP Rapid Application Development
Object-oriented”).
5
PRADO, UM FRAMEWORK para o PHP 5
2-FRAMEWORKS
Segundo a enciclopédia Wikipédia: “Frameworks são projetados com a intenção de
facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem
mais tempo determinando as exigências do software do que com detalhes de baixo nível do
sistema.”, ou seja, com o uso dessas ferramentas os desenvolvedores se preocupam mais com
a lógica de negócio específica da aplicação e com sua aparência visual, poupando o gasto de
tempo com operações e implementações comuns (complexas ou simples) e constantes.
O início do uso dos frameworks não é bem definido, mas é aceitável dizer que são uma
nova abordagem dos Padrões de Projeto e veio complementá-los. O estudante de ciência da
computação Kent Beck teve seu primeiro contato com os padrões de projeto da arquitetura e
urbanismo quando morou com estudantes de arquitetura na Universidade de Oregon. Em
1987, Kent Beck se uniu a Ward Cunningham e assim começaram a experimentar os padrões
de projeto no desenvolvimento de software, mostrando seus resultados na conferencia
OOPSLA (conferencia de desenvolvimento de sistemas orientados a objeto) daquele ano. Mas
só ganhou popularidade após a publicação do livro Padrões de Projetos: Elementos de
Software Reutilizado Orientado a Objetos pela "Gangue dos Quatro" (Erich Gamma, Richard
Helm, Ralph Johnson, e John Vlissides) em 1995 onde foram catalogados 23 soluções
específicas para problemas comuns de design (Apresentação “Reuso: Padrões de Projeto e
Frameworks”, UFSC).
6
PRADO, UM FRAMEWORK para o PHP 5
3-OUTROS FRAMEWORKS
Além do PRADO, existem outros frameworks que atual também no PHP ou mesmo em
outras linguagens como JAVA, ASP, JSP, Ruby, Javascript, Phyton, ActionScript, etc. Alguns
Frameworks são completos, já outros são específicos a uma tarefa ou um conjunto delas. A
grande maioria é grátis e open-source, isto é, possui o código aberto e é suportado por uma
comunidade de usuários, resultando em constantes atualizações, suporte e novas
implementações.
No desenvolvimento JAVA e JSP têm os frameworks JSF (Java Server Faces), Struts,
Hibernate (Apenas Persistência, ORM), Grails. Na linguagem ASP temos o ASP .NET MVC. Na
linguagem Ruby temos o Ruby on Rails, Merb, Camping, Vintage. No JavaScript temos o
Prototype, JQuery, mooTools. No Phyton o Django. No ActionScript o pureMVC.
A escolha do melhor framework muitas vezes é difícil e pessoal, assim como a escolha
de uma linguagem de desenvolvimento, um sistema operacional, ou um SGBD (Sistema de
Gerenciamento de Banco de Dados). Mas todos cumprem sua função devendo o
desenvolvedor saber escolher o melhor para sua necessidade e que proporcionará a solução
mais simples e eficiente.
7
PRADO, UM FRAMEWORK para o PHP 5
4-TERMOS TÉCNICOS
Diversas siglas e termos técnicos rodeiam o trabalho com aplicações para a WEB, será
destacado, de forma simplificada, palavras que possuem envolvimento direto ou indireto com o
framework PRADO. O conhecimento básico de alguns termos e tecnologias, como HTML, XML,
CSS, PHP, SQL, POO, JavaScript, Sistemas Operacionais é esperado do leitor.
Model (Modelo): Modelo dos dados (ex.: Banco de Dados) onde toda regra de negócio
fique nesta camada. Por exemplo, numa loja, ao gravar um novo pedido, o modelo faz todo o
cálculo de frete, checagem de estoque, processamento de pagamento etc.
View (Vista): Como os dados serão vistos e como alguém pode interagir com esses
dados, normalmente páginas HTML com forms.
4.2-ORM(Object-relational mapping):
8
PRADO, UM FRAMEWORK para o PHP 5
9
PRADO, UM FRAMEWORK para o PHP 5
4.3-ActiveRecords:
4.4-ActiveControls (AJAX):
(Wikipedia)
10
PRADO, UM FRAMEWORK para o PHP 5
4.6- PHP:
PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de
programação de computadores interpretada, livre e muito utilizada para gerar conteúdo
dinâmico na World Wide Web. O PHP é uma poderosa linguagem orientada a objetos.
(Wikipedia)
A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de
objetos para descrever um sistema de software. O funcionamento deste sistema se dá através
do relacionamento e troca de mensagens entre estes objetos.
(Wikipedia)
4.8- Postback
Um Postback é uma ação realizada por uma página web interativa, quando a página
inteira e seu conteúdo são enviados de volta para o servidor para serem processados.
Geralmente é utilizado na verificação de senhas para efetuar o login, processos on-line como
um formulário de pedido, ou outras funções que a máquina cliente não pode fazer sozinha por
questões de segurança, desempenho ou mesmo capacidade de processar tais informações.
(Wikipedia)
11
PRADO, UM FRAMEWORK para o PHP 5
4.9- CAPTCHA
CAPTCHAs são utilizados para impedir que softwares automatizados executem ações
que degradam a qualidade do serviço de um sistema dado, devido à despesa do abuso ou do
recurso. Embora CAPTCHAs sejam utilizados mais freqüentemente como uma resposta a
proteção de interesses comerciais, a noção que existem para parar somente spammers é um
erro, pois são também mecanismos sugeridos para impedir listas automatizadas em placares e
em votações de discussão pública.
(Wikipedia)
(Wikipedia)
12
PRADO, UM FRAMEWORK para o PHP 5
5-O FRAMEWORK PRADO
5.1 – Características
5.2 – Configuração
13
PRADO, UM FRAMEWORK para o PHP 5
14
PRADO, UM FRAMEWORK para o PHP 5
5.3 – Pré-Requisitos
O requisito mínimo exigido pelo framework PRADO é que o servidor Web tenha suporte
ao PHP 5. PRADO foi testado com o servidor Apache Web Server no Windows e no Linux, mas
também roda em outros servidores com suporte a PHP 5 e em outras plataformas.
5.4 – Componentes
5.4.1-Controles Padrões
TCaptcha Mostra um CAPTCHA para utilizado para impedir que robôs spammers criem contas
nos sites .
TColorPicker Representa uma caixa de diálogos com várias opções de cores a serem
selecionadas pelo usuário.
TDatePicker Representa uma caixa de diálogos com um mini-calendário. Utilizada para que o
usuário escolha uma data.
15
PRADO, UM FRAMEWORK para o PHP 5
TExpression Avalia uma expressão PHP e se preciso exibe o resultado na página.
TFileUpload Representa uma caixa de diálogo para envio de arquivos. Permite que os
usuários enviem arquivos para o servidor.
THead Representa o elemento <head> de uma página em HTML. É necessário nas páginas do
PRADO caso seja utilizado temas.
THtmlArea Representa um WYSIWYG (Editor de textos) que permite que o usuário insira
textos formatados em HTML com grande facilidade.
TLabel Representa um label que pode ser customizado por vários atributos CSS.
TPager Gera um “paginador” que permite ao usuário escolher qual a página deseja exibir. É
relacionado a um Controle de Dados.
TSafeHtml Exibe um certo conteúdo HTML garantindo que não tenham códigos nocivos (como
os XSS).
16
PRADO, UM FRAMEWORK para o PHP 5
TTabPanel Representa um recipiente de vários TPanel incluindo abas para facilitar a
navegação entre eles. Apenas o conteúdo de uma aba é exibido por vez.
TWizard Representa um conjunto de formulários com várias etapas para pegar as entradas
dos usuários. Lembra as janelas de instalação de softwares.
5.4.2-Controles de Validação
TCompareValidator Compara se o valor digitado pelo usuário é igual a algum outro valor ou
expressão pré-definida.
5.4.3-Controles de Listagem
TDropDownList Exibe uma lista suspensa com vários itens a serem selecionados pelo
usuário.
17
PRADO, UM FRAMEWORK para o PHP 5
5.4.4-Controles de Dados
*Os eventos sem a descrição são bastante semelhante aos eventos não-dinâmicos, porém implementam
funcionalidades com o uso do Ajax. Maiores informações consulte a API do PRADO.
B) ActiveList de Listagem
C) Outros ActiveControls
18
PRADO, UM FRAMEWORK para o PHP 5
5.5 – MVC
fig. 5.5.1
protected – Diretório base para armazenar dados e arquivos de script privados. Este
diretório deve ser configurado como inacessível a usuários finais.
runtime – Armazena dados durante a execução das páginas, como o estado da aplicação,
dados de cache, etc. Este diretório deve ter permissão de escrita para o servidor Web.
19
PRADO, UM FRAMEWORK para o PHP 5
B) O exemplo Hello Word
1-Arquivo índex.php:
Script de entrada das aplicações PRADO. Este arquivo é requerido por todas as
aplicações prado e é o único arquivo que pode ser acessado diretamente por usuários finais.
Conteúdo arquivo para o exemplo:
2-Arquivo home.page:
Página padrão que será exibida na abertura do site ou quando o usuário não especifica
a URL da página corretamente. É nela que o template do site é definido, especificando a
apresentação e layout dos componentes. Neste exemplo, foram utilizados dois componentes, o
TForm e o TButton, que correspondem as tags HTML <Form> e <Input>, respectivamente. O
template contém o seguinte conteúdo:
<html>
<body>
<com:TForm>
<com:TButton Text="Clique aqui" OnClick="botaoClicado” />
</com:TForm>
</body>
</html>
3-Arquivo home.php:
20
PRADO, UM FRAMEWORK para o PHP 5
O método “botaoClicado” simplesmente altera o atributo Text do TButton exibindo a
mensagem “Hello Word!”.
http://Endereço-do-servidor-Web/helloworld/
http://www.pradosoft.com/demos/helloworld/
21
PRADO, UM FRAMEWORK para o PHP 5
6-APLICAÇÃO PROTÓTIPO
6.1 – Introdução
6.2 – Especificações
fig. 6.2.1
B) Classes:
22
PRADO, UM FRAMEWORK para o PHP 5
* Todos os arquivos “*.page” necessitam de uma classe com o mesmo nome, porem no formato
“*.php”. Isto é exigido pelo PRADO, mas as classes não precisam de ter uma implementação.
fig. 6.2.2
23
PRADO, UM FRAMEWORK para o PHP 5
6.3 – Implementação
Nenhum usuário deve ter acesso à pasta protected. Considerando que o servidor
apache é o utilizado, um arquivo “.htacces” com um simples conteúdo: “deny from all” foi
gerado com o intuito de impedir o acesso a esta pasta.
Após ser gerado, o arquivo artigos.db deve ser movido para uma pasta data dentro do
diretório protected (Veja a figura de estrutura de pastas).
*Caso prefira utilizar um programa em vez da linha de comando, existe o Sqlite Manager uma
extensão para o Firefox que simplifica o processo de criação do banco sqlite.
(https://addons.mozilla.org/en-US/firefox/addon/5817)
24
PRADO, UM FRAMEWORK para o PHP 5
C) Integrando o banco de dados com a aplicação:
<modules>
<module class="System.Data.ActiveRecord.TActiveRecordConfig"
ConnectionID="db" />
</modules>
Os dois módulos acima integram o banco com a aplicação. O primeiro informa como o
PRADO deve se conectar ao banco, neste caso através da string do sqlite que informa o local
do arquivo artigos.db ( Caso se utilize outro banco, como o mysql, a string de conexão tem que
ser compatível com o banco escolhido). O último módulo integra a conexão do banco de dados
ao ActiveRecord do PRADO. Como pode se perceber o prado utiliza o formato namespace
assim como o JAVA onde System.Data.ActiveRecord.TActiveRecordConfig representa o
caminho Prado/Framework/Data/ActiveRecord/TActiveRecodConfig.php.
25
PRADO, UM FRAMEWORK para o PHP 5
D) Criando a classe AR:
public $artigo_id;
public $data_criacao;
public $titulo;
public $conteudo;
}
?>
A constante TABLE representa o nome da tabela: artigos. As variáveis $artigo_id,
$data_criacao, $titulo e $conteudo representam os campos da tabela artigos.
O método estático finder() nos permite realizar consultas e recuperar dados dos objetos
i (representante da tabela artigos).
26
PRADO, UM FRAMEWORK para o PHP 5
Para finalizar temos que incluir a classe na aplicação. Para isto temos que adicionar a
seguinte linha ao arquivo application.xml, dentro da tag application:
<paths>
<using namespace="Application.database.*" />
</paths>
Dentro da pasta protected, crie uma pasta com o nome layout e dentro desta, dois
arquivos: MainLayout.php e MainLayou.tpl.
<com:THead>
</com:THead>
<body>
<com:TForm>
<div id="page">
<div id="header">
Artigos
</div>
<div id="main">
</div>
<div id="footer">
27
PRADO, UM FRAMEWORK para o PHP 5
NavigateUrl="<%= $this->Service->DefaultPageUrl
%>" /> |
NavigateUrl="<%= $this->Service-
>constructUrl('posts.NewPost') %>"
/>
<br/>
</div>
</div>
</com:TForm>
</body>
</html>
O arquivo de template se assemelha com uma página em HTML como, inclusive possui
tags usadas no HTML. Apenas um componente foi utilizado, o TContentPlaceHolder que é um
recipiente, ou local, onde o conteúdo da aplicação será inserido e exibido. As tags <%= e %>
representam tags de expressão e neste exemplo é inserido um logotipo do PRADO por meio da
instrução PRADO::poweredByPrado().
O conteúdo da classe associada a este template é bem simples, na verdade a classe é vazia.
Sua existência é exigida pelo PRADO quando se trata de arquivos de template (.tpl). Veja
abaixo:
<?php
?>
Para criar a listagem dos artigos, três etapas terão de ser seguidas: A criação dos itens
ListPost, ReadPost e PostRenderer. O primeiro irá listar todos os artigos resumidos e com um
repetidor, o segundo ira exibir um artigo na integra e o último será o modelo de um artigo, onde
serão configurados o título, hora de criação e o conteúdo do artigo.
28
PRADO, UM FRAMEWORK para o PHP 5
Antes de implementar a leitura dos artigos vamos setar a página ListPost como padrão
da aplicação. Para isso devemos abrir o arquivo application.xml e incluir as seguintes linhas
dentro da tag application:
<services>
</service>
</services>
ListPost.page:
<com:TContent ID="Main">
<com:TRepeater ID="Repeater"
ItemRenderer="Application.pages.posts.PostRenderer"
AllowPaging="true"
AllowCustomPaging="true"
PageSize="5"
/>
<com:TPager ControlToPaginate="Repeater"
OnPageIndexChanged="pageChanged" />
</com:TContent>
29
PRADO, UM FRAMEWORK para o PHP 5
ListPost.php:
<?php
parent::onInit($param);
$postRecord=$this->Post;
if(!$this->IsPostBack)
$this->TitleEdit->Text=$postRecord->titulo;
$this->ContentEdit->Text=$postRecord->conteudo;
$postRecord=$this->Post;
$postRecord->titulo=$this->TitleEdit->SafeText;
$postRecord->conteudo=$this->ContentEdit->SafeText;
$postRecord->save();
$url=$this->Service->
constructUrl('posts.ReadPost',array('id'=>$postRecord->artigo_id));
$this->Response->redirect($url);
30
PRADO, UM FRAMEWORK para o PHP 5
}
$postID=(int)$this->Request['id'];
$postRecord=PostRecord::finder()->findByPk($postID);
if($postRecord===null)
return $postRecord;
?>
ReadPost.page:
<com:TContent ID="Main">
<h2>
</h2>
<com:TControl>
<com:TLinkButton Text="Deletar"
OnClick="deletePost"
</com:TControl>
<hr />
<p>Data:
31
PRADO, UM FRAMEWORK para o PHP 5
<com:TLiteral Text="<%= $this->Post->conteudo %>" />
</p>
</com:TContent></p>
</com:TContent>
ReadPost.php:
<?php
private $_artigo;
parent::onInit($param);
$postID=(int)$this->Request['id'];
$this->_artigo=PostRecord::finder()->findByPk($postID);
$this->Title=$this->_artigo->titulo;
return $this->_artigo;
$this->_artigo->delete();
32
PRADO, UM FRAMEWORK para o PHP 5
$this->Response->redirect($this->Service->DefaultPageUrl);
} ?>
PostRenderer.page:
<div class="post-box">
<h3>
NavigateUrl="<%# $this->Service-
>constructUrl('posts.ReadPost',array('id'=>$this->Data->artigo_id))
%>" />
</h3>
<hr />
<hr />
<div class="depo">
NavigateUrl="<%# $this-
>Service->constructUrl('posts.ReadPost',array('id'=>$this->Data-
>artigo_id)) %>"
Visible="<%=
PostRenderer::vairesumir($this->Data->conteudo,120) %> "/>
</div>
</div>
</div>
33
PRADO, UM FRAMEWORK para o PHP 5
PostRenderer.php:
<?php
$var=0;
while($var == 0){
$var=1;
} else{
$chars++;
} else
return substr($string,0,$chars);
return 1;
} else
return 0;
34
PRADO, UM FRAMEWORK para o PHP 5
G) Criando as páginas de edição dos artigos:
Para editar um artigo o usuário terá de clicar no titulo do artigo da página principal. Os
arquivos que implementam esta funcionalidade são EditPost.page e EditPost.php.
EditPost.page:
<com:TContent ID="Main">
<h1>Editar Artigo</h1>
<span>Titulo:</span>
<com:TRequiredFieldValidator
ControlToValidate="TitleEdit"
ErrorMessage="Digite um titulo."
Display="Dynamic" />
<br/>
<br/>
<span>Conteudo:</span>
<com:TRequiredFieldValidator
ControlToValidate="ContentEdit"
ErrorMessage="Digite um conteudo."
Display="Dynamic" />
<br/>
<br/>
</com:TContent>
35
PRADO, UM FRAMEWORK para o PHP 5
EditPost.php:
<?php
parent::onInit($param);
$postRecord=$this->Post;
if(!$this->IsPostBack)
$this->TitleEdit->Text=$postRecord->titulo;
$this->ContentEdit->Text=$postRecord->conteudo;
$postRecord=$this->Post;
$postRecord->titulo=$this->TitleEdit->SafeText;
$postRecord->conteudo=$this->ContentEdit->SafeText;
$postRecord->save();
$url=$this->Service->
constructUrl('posts.ReadPost',array('id'=>$postRecord->artigo_id));
$this->Response->redirect($url);
36
PRADO, UM FRAMEWORK para o PHP 5
}
$postID=(int)$this->Request['id'];
$postRecord=PostRecord::finder()->findByPk($postID);
if($postRecord===null)
return $postRecord;
?>
As páginas de inclusão de novos artigos são bem parecidas com as de edição. A seguir
o template NewPost.page e a classe NewPost.php.
NewPost.page:
<com:TContent ID="Main">
<span>Titulo:</span>
<com:TRequiredFieldValidator
ControlToValidate="TitleEdit"
ErrorMessage="Digite um titulo."
Display="Dynamic" />
<span>Conteudo:</span>
<com:TRequiredFieldValidator
37
PRADO, UM FRAMEWORK para o PHP 5
ControlToValidate="ContentEdit"
ErrorMessage="Digite um conteudo."
Display="Dynamic" />
<br/>
</com:TContent>
NewPost.php:
<?php
$postRecord=new PostRecord;
$postRecord->titulo=$this->TitleEdit->SafeText;
$postRecord->conteudo=$this->ContentEdit->SafeText;
$postRecord->data_criacao=time();
$postRecord->save();
$url=$this->Service->
constructUrl('posts.ReadPost',array('id'=>$postRecord->artigo_id));
$this->Response->redirect($url);
?>
38
PRADO, UM FRAMEWORK para o PHP 5
I) Últimos ajustes, inserindo links na página inicial:
Para facilitar o acesso a pagina principal e à pagina de novos artigos vamos criar dois
links dentro do arquivo de template MainTemplate.tpl. Abra o arquivo e insira dentro da div
footer o seguinte conteúdo:
<div id=”footer”>
<com:THyperLink Text="Principal"
/>
</div>
39
PRADO, UM FRAMEWORK para o PHP 5
6.3 – Resultados
http://localhost/artigos ou http://127.0.0.1/artigos
B) Considerações
40
PRADO, UM FRAMEWORK para o PHP 5
41
PRADO, UM FRAMEWORK para o PHP 5
42
PRADO, UM FRAMEWORK para o PHP 5
43
PRADO, UM FRAMEWORK para o PHP 5
44
PRADO, UM FRAMEWORK para o PHP 5
• Fig6.3.5 - Página de Exclusão de Artigos
45
PRADO, UM FRAMEWORK para o PHP 5
7-CONHECENDO MAIS O PRADO
Esta pesquisa teve como objetivo apresentar o PRADO, um framework para PHP 5 e
mostrar algumas de suas funcionalidades. O PRADO possui muitas outras funcionalidades
como controle de acesso, uso de urls amigáveis, teclado virtual, cache e muitas outras citadas
durante a elaboração deste documento. Nesta seção estão listados links com outros tutorias
que irão enriquecer o conhecimento com esta plataforma de desenvolvimento. Apesar de
inglês, a didática dos tutorias são um destaque.
46
PRADO, UM FRAMEWORK para o PHP 5
8- CONCLUSÕES
A utilização de frameworks para construir aplicações para diversos fins (web ou
desktop) é uma tendência que já vem sendo praticada por alguns anos. O uso dessas
ferramentas realmente impulsiona o desenvolvimento de aplicações. Geralmente a aplicação
fica um pouco mais lenta se comparada à desenvolvida puramente, sem o uso de frameworks,
mas é preciso saber quando usá-los corretamente.
O PRADO foi o framework escolhido por ser um dos mais diferentes dentre os
existentes para o PHP, pois utiliza o conceito de componentes e eventos. Apesar de não ser o
mais popular, o PRADO cumpre suas tarefas de desenvolver uma aplicação web com a lógica
separada do layout e o tempo de desenvolvimento é incrivelmente menor. Os outros
frameworks para PHP também são excelentes, é preciso saber qual deve ser usado para um
determinado fim. Cada framework se adéqua melhor a uma situação diferente.
Nos dias de hoje, o cliente não que saber qual a tecnologia utilizada, ele quer preço,
qualidade e curto prazo. O desenvolvedor deve saber quais medidas tomar na elaboração de
um novo projeto para que todas estas questões sejam satisfeitas. Nesse contexto, o uso de
frameworks tornou-se um grande aliado pois além de open-source em sua grande maioria, eles
conseguem oferecer um menor tempo no desenvolvimento e ao mesmo tempo conciliar uma
boa qualidade e desempenho.
47
PRADO, UM FRAMEWORK para o PHP 5
9- BIBLIOGRAFIA
Sítios da Internet:
-Framework, Wikipédia
http://pt.wikipedia.org/wiki/Framework (Acesso: 18 de julho de 2008)
-MVC, Wikipedia
http://pt.wikipedia.org/wiki/MVC (Acesso: 25 de julho de 2008)
-Ajax, Wikipedia
http://pt.wikipedia.org/wiki/AJAX_(programação) (Acesso: 25 de julho de 2008)
- PHP, Wikipedia
http://pt.wikipedia.org/wiki/Php (Acesso: 26 de julho de 2008)
- POO, Wikipedia
http://pt.wikipedia.org/wiki/POO (Acesso: 26 de julho de 2008)
- Postback, Wikipedia
http://en.wikipedia.org/wiki/Postback (Acesso: 26 de julho de 2008)
-CAPTHCA, Wikipedia
http://pt.wikipedia.org/wiki/CAPTCHA (Acesso: 26 de julho de 2008)
48
PRADO, UM FRAMEWORK para o PHP 5
-Conteúdo Geral e Específico:
A. http://www.pradosoft.com http://www.pradosoft.com/demos/
(Ultimo Acesso: 05 de julho de 2008)
49