Você está na página 1de 26

Aula 1 PHP (INTRODUO)

- 1.1
- 1.2
- 1.3
- 1.4

O que o PHP faz?


Curta histria do PHP
Instalando o PHP
Vamos dar uma voltinha?

1.1 O que o PHP faz?


Server-side scripting
PHP foi originalmente concebido para criar contedo dinmico da web, e ainda
mais adequado para essa tarefa. Para gerar HTML, voc precisa do analisador
*Parser do PHP e um servidor web atravs do qual envia os documentos
codificados. PHP tambm tornou-se popular para gerar documentos XML,
grficos, animaes em Flash, arquivos PDF e muito mais.
*Parser: Em informtica, um analisador um programa, geralmente parte de um
compilador, que recebe entrada na forma de instrues do programa fonte
seqencial, comandos interativos on-line, tags de marcao, ou algum outro
definido de interface e divide-os em partes (por exemplo, objetos, mtodos e
seus atributos ou opes) que em seguida podem ser gerenciados por outros
(por exemplo, componentes de um compilador).

1.1 O que o PHP faz?


Command-line scripting
PHP pode executar scripts de linha de comando, muito
parecido com Perl, awk ou shell do Unix. Voc pode usar os
scripts de linha de comando para tarefas de administrao do
sistema, tais como backup e log de anlise; at mesmo alguns
scripts do tipo *CRON JOBS podem ser feitos desta forma
(tarefas no visuais do PHP).
*CRON JOBS: Cron Jobsso as tarefas agendadas: so tarefas
executadas automaticamente de X em X tempos.

1.1 O que o PHP faz?


Client-side GUI applications
Usando PHP-*GTK, voc pode escrever aplicativos de *GUI
completos.
*GTK: um toolkit multi-plataforma para a criao de interfaces
grficas. licenciado sob a licenaGNU LGPL, permitindo que
software proprietrios e livres o utilizem em sua construo.
*GUI: General User Interface (Interface grfica)

1.1 O que o PHP faz?


COMPATIBILIDADES

1.2 Curta histria do PHP


Rasmus Lerdorf concebeu o PHP em 1994, mas o PHP
que as pessoas usam hoje bem diferente da verso
inicial. Para entender como o PHP chegou onde est
hoje, til conhecer a evoluo histrica da linguagem.
Aqui est a histria, com amplos comentrios e e-mails
do prprio Rasmus.

1.2 Curta histria do PHP


. Performing server-side includes without needing server support for
it
Subject: Announce: Personal Home Page Tools (PHP Tools)
. Ability to not log accesses from certain domains (ie. your own)
Date: 1995/06/08
. Easily create and display forms
Message-ID: <3r7pgp$aa1@ionews.io.org>#1/1
. Ability to use form information in following documents
organization: none
Here is what you don't need to use these tools:
newsgroups: comp.infosystems.www.authoring.cgi
. You do not need root access - install in your ~/public_html dir
Announcing the Personal Home Page Tools (PHP Tools) . You do not need server-side includes enabled in your server
version 1.0.
. You do not need access to Perl or Tcl or any other script interpreter
These tools are a set of small tight cgi binaries written in C.
. You do not need access to the httpd log files
The only requirement for these tools to work is that you have
They perform a number of functions including:
. Logging accesses to your pages in your own private log the ability to execute your own cgi programs. Ask your system
administrator if you are not sure what this means.
files
The tools also allow you to implement a guestbook or any other
. Real-time viewing of log information
form that needs to write information and display it to users
. Providing a nice interface to this log information
later in about 2 minutes.
. Displaying last access information right on your pages
The tools are in the public domain distributed under the GNU
. Full daily and total access counters
Public License. Yes, that means they are free!
For a complete demonstration of these tools, point your browser
. Banning access to users based on their domain
at: http://www.io.org/~rasmus
. Password protecting pages based on users' domains
-. Tracking accesses ** based on users' e-mail addresses **
Rasmus Lerdorf
. Tracking referring URL's - HTTP_REFERER support
rasmus@io.org
From: rasmus@io.org (Rasmus Lerdorf)

1.2 Curta histria do PHP


O anncio fala apenas das ferramentas que acompanham o PHP, mas nos
bastidores, o objetivo era criar um framework para ser fcil estender o PHP
e adicionar mais ferramentas. A lgica de negcios para estes add-ons foi
escrita em C um analisador simples pegava tags de HTML e chamava
vrias funes de C. Nunca foi o plano de se criar uma linguagem de script.
Ento o que aconteceu?
Rasmus comeou a trabalhar em um grande projeto para a Universidade de
Toronto que precisava de uma ferramenta para reunir dados de vrios
lugares e apresentar uma interface de administrao baseada em web.
Claro, ele usou PHP para a tarefa, mas por motivos de desempenho, as
vrias pequenas ferramentas de PHP 1 tinham que ser integradas no
servidor web.

1.2 Curta histria do PHP


Inicialmente, foram feitos alguns hacks para o servidor web da
NCSA para apoiar o ncleo de funcionalidade do PHP. O problema
com esta abordagem foi que o usurio, tinha que trocar seu
software de servidor web por esta verso especial (hacked).
Felizmente, o Apache comeava a ganhar impulso, e o Apache
API tornou mais fcil de adicionar funcionalidade como PHP para
o servidor.

1.2 Curta histria do PHP


No ano seguinte, muito foi feito e o foco mudou bastante. Aqui est o anncio do PHP 2.0 (PHP/FI) que foi publicado em abril de 1996:

From: rasmus@madhaus.utcs.utoronto.ca (Rasmus Lerdorf)


. DBM Support
Subject: ANNOUNCE: PHP/FI Server-side HTML-Embedded
DB, DBM, NDBM and GDBM are all supported
Scripting Language
. RFC-1867 File Upload Support
Date: 1996/04/16
Create file upload forms
Newsgroups: comp.infosystems.www.authoring.cgi
. Variables, Arrays, Associative Arrays
PHP/FI is a server-side HTML embedded scripting language. It . User-Defined Functions with static variables + recursion
has built-in
. Conditionals and While loops
access logging and access restriction features and also
Writing conditional dynamic web pages could not be easier tha
support for
the PHP/FI conditionals and looping support
embedded SQL queries to mSQL and/or Postgres95 backend
. Extended Regular Expressions
databases.
Powerful string manipulation support through full regexp suppo
It is most likely the fastest and simplest tool available for
. Raw HTTP Header Control
creating
Lets you send customized HTTP headers to the browser for adv
database-enabled web sites.
features such as cookies.
It will work with any UNIX-based web server on every UNIX
. Dynamic GIF Image Creation
flavour out
Thomas Boutell's GD library is supported through an easy-to-u
there. The package is completely free of charge for all uses
tags.
including
It can be downloaded from the File Archive at:
commercial.
<URL:http://www.vex.net/php>
Feature List:
-. Access Logging
Rasmus Lerdorf
Log every hit to your pages in either a dbm or an mSQL
rasmus@vex.net
database.

1.2 Curta histria do PHP


Esta foi a primeira vez que o termo "linguagem de script" foi usado. O uso de
tags simplista do PHP 1 foi substitudo com um analisador que poderia lidar
com uma linguagem de marcao incorporada mais sofisticada. Pelos padres
de hoje, a linguagem de marcao no era particularmente sofisticada, mas
em comparao com PHP 1 era certamente.
A principal razo para esta mudana foi que poucas pessoas que usaram PHP 1
estavam realmente interessadas em usar a estrutura baseada em C para a
criao de complementos. A maioria dos usurios estava muito mais
interessado em ser capaz de incorporar a lgica diretamente em suas pginas
da web para criar HTML condicional, tags personalizadas e outras
caractersticas. Usurios de PHP 1 foram constantemente solicitando a
capacidade de adicionar cdigo de rastreio ao rodap ou enviar diferentes
blocos HTML condicionalmente. Isto levou criao de uma tag If. Uma vez que
voc tem o uso do If, voc precisa tambm de um else, querendo ou no, voc
acaba escrevendo uma linguagem de script inteira.

1.2 Curta histria do PHP


Em meados de 1997, PHP verso 2 tinha crescido bastante e
tinha atrado um grande nmero de usurios, mas ainda havia
alguns problemas de estabilidade com o mecanismo subjacente
de anlise. O projeto tambm foi ainda mais um esforo
individual, com algumas contribuies aqui e ali. Neste ponto,
Zeev Suraski e Andi Gutmans em Tel Aviv, Israel, ofereceram-se
para reescrever o mecanismo subjacente de anlise, e ns
concordamos em fazer sua reescrita para a base do PHP verso
3. Outras pessoas tambm se ofereceram para trabalhar em
outras partes do PHP, e o projeto mudou de um esforo individual
com alguns colaboradores para um projeto de cdigo aberto
verdadeiro com muitos desenvolvedores ao redor do mundo.

1.2 Curta histria do PHP


Aqui est o anncio de PHP 3.0 em junho de 1998:
June 6, 1998 -- The PHP Development Team announced the release of PHP 3.0, the latest release of the server-side scripting solution
already in use on over 70,000 World Wide Web sites.
This all-new version of the popular scripting language includes support for all major operating systems (Windows 95/NT, most versions
of Unix, and Macintosh) and web servers (including Apache, Netscape servers, WebSite Pro, and Microsoft Internet Information Server).
PHP 3.0 also supports a wide range of databases, including Oracle, Sybase, Solid, MySQ, mSQL, and PostgreSQL, as well as ODBC data
sources.
New features include persistent database connections, support for the SNMP and IMAP protocols, and a revamped C API for extending
the language with new features.
"PHP is a very programmer-friendly scripting language suitable for people with little or no programming experience as well as the
seasoned web developer who needs to get things done quickly. The best thing about PHP is that you get results quickly," said Rasmus
Lerdorf, one of the developers of the language.
"Version 3 provides a much more powerful, reliable, and efficient implementation of the language, while maintaining the ease of use
and rapid development that were the key to PHP's success in the past," added Andi Gutmans, one of the implementors of the new
language core.
"At Circle Net we have found PHP to be the most robust platform for rapid web-based application development available today," said
Troy Cobb, Chief Technology Officer at Circle Net, Inc. "Our use of PHP has cut our development time in half, and more than doubled our
client satisfaction. PHP has enabled us to provide database-driven dynamic solutions which perform at phenomenal speeds."
PHP 3.0 is available for free download in source form and binaries for several platforms at http://www.php.net/.
The PHP Development Team is an international group of programmers who lead the open development of PHP and related projects.
For more information, the PHP Development Team can be contacted at core@php.net.

1.2 Curta histria do PHP


Aps o lanamento do PHP 3.0, seu uso realmente comeou a
decolar. A verso 4 foi motivada por um nmero de
desenvolvedores que estavam interessados em fazer algumas
mudanas fundamentais para a arquitetura do PHP. Estas
mudanas incluram abstrair a camada entre a linguagem e o
servidor da web, adicionando um mecanismo de segurana. Este
novo analisador, principalmente escrito por Zeev e Andi, foi
nomeado o Zend engine. Depois de muito trabalho por um
monte de desenvolvedores, o PHP 4.0 foi lanado em 22 de maio
de 2000.

1.2 Curta histria do PHP


PHP usado por 77.8% de todos os sites da Web (Sites decentes,
Claro ;-)
Uso de Verses PHP
0.10%

0.10%

5.10%

94.90%

1.3 Instalando o PHP


Como foi mencionado acima, o PHP est disponvel para muitos
sistemas operacionais e plataformas. Portanto, voc encorajado a
encontrar o ambiente que mais estreitamente se encaixa com o que
voc vai estar usando. De vez em quando, voc tambm pode querer
mudar a maneira como o PHP configurado. Para fazer o que voc
ter que alterar o arquivo de configurao do PHP e reiniciar seu
servidor Apache. Cada vez que voc fizer uma alterao ao ambiente
do PHP, voc ter que reiniciar o servidor Apache para que essas
alteraes tenham efeito. As definies de configurao do PHP so
mantidas em um arquivo chamado php.ini. As configuraes nesse
arquivo controlam o comportamento dos recursos do PHP, como
manipulao de sesso e processamento de formulrio.

1.3 Instalando o PHP


Mo na Massa:

1.4 Vamos dar uma voltinha?


Pginas PHP geralmente so pginas HTML com
comandos PHP embutidos neles. Isto est em contraste
com muitas outras solues de pgina web dinmica,
que so scripts que geram HTML. O servidor web
processa os comandos PHP e envia sua sada (e qualquer
HTML do arquivo) para o navegador.

PHP

1.4 Vamos dar uma voltinha?


<html>
<head>
<title>Look Out World</title>
</head>
<body>
<?php echo "Hello, world!"; ?>
<html>
<head>
<title>Look Out World</title>
</head>
<body>
<?php echo "Hello, world!"; ?>
</body>
</html>

1.4 Vamos dar uma voltinha?


O comando PHP echo produz sada (a seqncia de
caracteres "Hello, world!" neste caso) inserido no
arquivo HTML. Neste exemplo, o cdigo PHP colocado
entre as tags <?php e ?>. Existem outras maneiras de
marcar seu PHP que veremos futuramente.

1.4 Vamos dar uma voltinha?


Pgina de configurao
A funo phpinfo() cria uma pgina HTML completa de
informaes sobre como o PHP foi instalado e est
atualmente configurado. Voc pode us-lo para ver se
voc tem extenses particulares instaladas, ou se o
arquivo php.ini foi personalizado.
<?php phpinfo();?>

1.4 Vamos dar uma voltinha?


Formulrios
Vamos criar um formulrio. Quando o usurio submete o
formulrio, as informaes digitadas no campo nome so
enviadas para esta pgina. O cdigo PHP testa o campo
de nome e exibe uma saudao se ele encontrar um.

1.4 Vamos dar uma voltinha?


<html>
<head>
<title>Personalized Greeting Form</title>
</head>
<body>
<?php if(!empty($_POST['name'])) {
echo "Greetings, {$_POST['name']}, and welcome.";
} ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Enter your name: <input type="text" name="name" /> <input
type="submit" />
</form>
</body>
</html>

1.4 Vamos dar uma voltinha?


Bancos de dados
PHP suporta todos os sistemas de banco de dados
populares,
incluindo
bancos
de
dados
MySQL,
PostgreSQL, Oracle, Sybase, SQLite, compatvel com
ODBC.

1.4 Vamos dar uma voltinha?


<?php
$db = new mysqli("localhost", "petermac", "password", "library");
// make sure the above credentials are correct for your environment
if ($db->connect_error) {
die("Connect Error ({$db->connect_errno}) {$db->connect_error}");
}
$sql = "SELECT * FROM books WHERE available = 1 ORDER BY title";
$result = $db->query($sql);
?>
<html>
<body>
<table cellSpacing="2" cellPadding="6" align="center" border="1">
<tr>
<td colspan="4">
<h3 align="center">These Books are currently available</h3>
</td>
</tr>
<tr>
<td align="center">Title</td>
<td align="center">Year Published</td>
<td align="center">ISBN</td>
</tr>
<?php while ($row = $result->fetch_assoc()) { ?>
<tr>
<td><?php echo stripslashes($row['title']); ?></td>
<td align="center"><?php echo $row['pub_year']; ?></td>
<td><?php echo $row['ISBN']; ?></td>
</tr>
<?php } ?>
</table>
</body>
</html>

1.4 Vamos dar uma voltinha?

<?php
if (isset($_GET['message'])) {
// load font and image, calculate width of text
$font = 'arial.ttf';
$size = 12;
$im = ImageCreateFromPNG('button.png');
$tsize = imagettfbbox($size,0,$font,$_GET['message']);
// center
$dx = abs($tsize[2]-$tsize[0]);
$dy = abs($tsize[5]-$tsize[3]);
$x = ( imagesx($im) - $dx ) / 2;
$y = ( imagesy($im) - $dy ) / 2 + $dy;

// draw text
$black = ImageColorAllocate($im,0,0,0);
ImageTTFText($im, $size, 0, $x, $y, $black, $font, $_GET['message']);
// return image
header('Content-type: image/png');
ImagePNG($im);
exit;
}
?>
<html>
<head><title>Button Form</title></head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">
Enter message to appear on button:
<input type="text" name="message" /><br />
<input type="submit" value="Create Button" />
</form>
</body>
</html>