Professional Documents
Culture Documents
Objectivos
posteriormente alojadas em servidores Web e fornecidas como resposta a pedidos HTTP provenientes
dos clientes WWW, isto dos Web browsers.
As pginas permitem a insero de dados por parte do utilizador atravs de seces delimitadas pelas
tags <FORM> e </FORM>. Uma seco FORM contm a identificao dos programas do servidor que
sero responsveis por processar a informao inserida pelo utilizador no formulrio, o mtodo de
transferncia da informao para o servidor, bem como um conjunto de comandos que definem o
formato da interface de interaco com o utilizador. A ttulo de exemplo, ilustra-se a seco Form de
uma pgina html:
<FORM action="http://programa.que.vai/processar/dados/prog" method="post">
<P>
First name:
<INPUT type="text" id="firstname"> <BR>
Last name:
<INPUT type="text" id="lastname"> <BR> </P>
<P>
<INPUT type="radio" name="sex" value="Male"> Male<BR>
<INPUT type="radio" name="sex" value="Female"> Female<BR> </P>
<P>
I have a bike:
<INPUT type="checkbox" name="vehicle" value="Bike"> <br>
I have a car:
<INPUT type="checkbox" name="vehicle" value="Car"> <br> </p>
<p>
What files are you sending?
<INPUT type="file" name="name_of_files"> <br> </p>
<p>
Select your OS distribution:
<SELECT name="OperSist">
<OPTION selected label="none" value="none">None</OPTION>
<OPTGROUP label="Fedora">
<OPTION label="core6" value="fc6"> Core 6</OPTION>
<OPTION label="core7" value="fc7"> Core 7</OPTION>
</OPTGROUP>
<OPTGROUP label="Suse">
<OPTION label="opsus1" value="osuse10.1">OpenSuse 10.1</OPTION>
<OPTION label="opsus3" value="osuse10.3">OpenSuse 10.3</OPTION>
</OPTGROUP>
</SELECT> </p>
<INPUT type="submit" value="Enviar">
<INPUT type="reset" value="Cancelar">
</FORM>
Em qualquer formulrio existe um campo do tipo Submit (graficamente representado por um boto).
Quando o utilizador selecciona ou prime esse boto o contedo do formulrio enviado para o
programa ou script identificada no atributo action do formulrio.
a) Onde se encontra o programa que ir processar os valores inseridos no form anterior?
b) Qual o nome desse programa?
Adicionalmente os forms incluem o atributo method que identifica o mtodo usado para transferir a
informao inserida nos formulrios para o servidor onde ser processada. Este atributo pode assumir
apenas dois valores: GET e POST.
Usando o mtodo GET, a informao do formulrio acrescentada informao do atributo action
(o URI), dando origem a um novo URL que ento enviado para o servidor. As variveis associadas a
cada um dos campos do formulrio, bem como os seus valores, so separados do URI inicial por um
ponto de interrogao ?. Quando o formulrio composto por diversos campos, esses so separados
entre si pelo carcter &.
a) No Form da sua pgina altere o mtodo para GET;
b) Invoque a pgina com o novo mtodo;
c)
d) No URL da pgina de resposta, identifique as diversas variveis do Form bem como os valores
que lhes atribuiu.
Usando o mtodo POST, a informao do formulrio usada para construir o corpo de uma
mensagem que codificada e enviada para o URI definido no atributo action.
a) Reponha o mtodo POST no Form;
b) Invoque a pgina com o mtodo POST;
c)
Compare o URL enviado neste caso com o enviado usando o mtodo GET.
GET
o
POST
o
PARTE I
PHP - Hypertext Preprocessor
PHP1 is a powerful server-side scripting language for creating dynamic and interactive websites.
PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft's ASP. PHP is
perfectly suited for Web development and can be embedded directly into the HTML code.
The PHP syntax is very similar to Perl and C. PHP is often used together with Apache (web server) on
various operating systems. ()
PHP uma linguagem de programao interpretada2 que permite criar pginas e stios Web
dinmicos. A programao em PHP faz-se embebendo directamente o seu cdigo no cdigo da pgina
HTML. O interpretador PHP executado no servidor, o que significa que ao ser pedida uma pgina
contendo um script PHP, este vai ser interpretado, produzindo-se dinamicamente uma pgina (HTML)
que posteriormente enviada para o cliente atravs do protocolo HTTP.
PHP uma linguagem com licena Open Source, de fcil aprendizagem e que suporta
funcionalidades de programao avanadas, cujas principais so:
Nvel bsico
possvel definir variveis ($var), vectores e matrizes de variveis, manipular essas variveis atravs
de operadores (aritmticos, atribuio, comparao e lgicos). possvel definir strings, concaten-las
e manipul-las (strlen, strpos, etc). possvel definir instrues condicionais (if else, switch), definir
loops (while, do while, for, foreach), criar funes (function), utilizar funes previamente elaboradas
(PHP contm uma vasta coleco de funes de grande utilidade e simplicidade disposio do
programador) e processar dados de formulrios atravs dos mtodos HTTP GET e POST.
Nvel avanado
Entre outras funcionalidades, destaca-se a possibilidade de introduzir a data e hora na pgina Web
(date), incluir texto automtico na pgina (include), manipulao de ficheiros (fopen), fazer upload de
ficheiros para o servidor (Upload-File Form), criar e gerir cookies (setcookie, $_COOKIE),
estabelecimento e gesto de sesses (PHP session variable), enviar emails directamente do script
(mail), existem tambm ferramentas para filtrar e validar dados oriundos de fontes inseguras (funes
filter_***). Existem ainda funes de manipulao de bases de dados (funes mysql_***) e para
processamento de documentos XML (Extensible Markup Language).
2
Scripting compilao em tempo de execuo, ou seja cada vez que o script PHP executado este previamente
compilado. Por oposio s linguagens compiladas (ex. C) nas quais gerado um ficheiro executvel.
Programao em PHP
Os scripts PHP so delimitados por tags especficas. Esses scripts PHP sero embebidos numa pgina
HTML que, ao ser pedida por um cliente (browser), vai ser interpretado pelo servidor, produzindo uma
pgina dinmica (HTML) que enviada para o cliente atravs do protocolo HTTP.
Tags PHP
<?php
?>;
Comentrios em PHP
Para inserir uma linha de comentrio:
// Linha de comentrio
Linha N
*/
Variveis
As variveis guardam valores (nmeros, caracteres ou sequncias de nmeros arrays ou caracteres
strings).
EM PHP os nomes das variveis comeam com o smbolo $.
Declarao e inicializao de uma varivel:
$var1 = 10;
Booleanos
Inteiros
Vrgula flutuante
Carcter
Operadores
Aritmticos
Adio +
Subtraco -
Multiplicao *
Diviso /
Mdulo (resto da diviso) %
Incremento ++
Decremento --
Atribuio
=
+= (x+=y
-= (x-=y
*= (x*=y
/= (x/=y
.= (x.=y
%= (x%=y
x=x+y)
x=x-y)
x=x*y)
x=x/y)
x=x.y)
x=x%y)
Comparao
Igual ==
Diferente !=
Maior >
Menor <
Maior ou igual >=
Lgicos
E &&
OU ||
Negao !
Strings
Estas variveis contm sequncias de caracteres.
Criar uma string ( criar uma varivel genrica):
$string1;
Inicializar uma string (ao inicializar uma varivel genrica com uma sequencia de caracteres)
$string1 = A minha primeira string;
Operador concatenao
Concatenao consiste em anexar o contedo de uma string a outra (colar no final). Em PHP esta
operao tem um operador prprio . .
$string1 = A minha primeira string;
$string2 = PHP foi escrita em DEAPC;
If else
Para execuo condicional de cdigo testando condies, temos tal como noutras linguagens
de programao o ciclo if else.
Sintaxe:
if (condio) {
Cdigo a ser executado caso a condio seja verdadeira }
else {
Cdigo a ser executado caso a condio seja falsa }
Exemplo de uso:
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
//3
echo "Bom Fim de semana!";
else
echo "Bom estudo!";
?>
</body>
</html>
Ciclo While
Este ciclo permite executar uma instruo enquanto a condio for verdadeira.
Funo Date permite extrair a data/tempo apresentando-os num formato escolha do programador.
Sintaxe:
while (condio) {
Cdigo a ser executado }
Exemplo de uso:
<html>
<body>
<?php
$i=1;
while($i<=5)
{
echo "Numero: " . $i . "<br />";
$i++;
}
?>
</body>
</html>
Ciclo For
Este ciclo permite executar determinado cdigo n vezes.
Sintaxe:
for (inicializao; condio; incremento)
{
Cdigo a ser executado;
}
Exemplo de uso:
<html>
<body>
<?php
for ($i=1; $i<=5; $i++)
{
echo "teste do FOR<br />";
}
?>
</body>
</html>
Funes
As funes so suportadas pelo PHP. O programador pode criar funes ou utilizar funes
implementadas por outros. A biblioteca de funes do PHP extensa, um dos seus pontos mais
fortes, disponibilizando ao programador funes prontas a utilizar nas diferentes tarefas.
</body>
</html>
Mtodo GET
O cdigo do formulrio para que os dados sejam processados pelo mtodo http GET o seguinte:
<form action="welcome.php" method="get">
Name: <input type="text" name=" NomeInseridoA" />
<input type="submit" />
</form>
Mtodo POST
O cdigo do formulrio para que os dados sejam processados pelo mtodo http POST o seguinte:
<form action="welcome.php" method="post">
Name: <input type="text" name="NomeInseridoB" />
<input type="submit" />
</form>
Exerccios
1) Crie um ficheiro de texto com a designao index.php, e insira o seguinte cdigo HTML:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Ttulo da pgina</title>
</head>
<body>
<p/>
O meu primeiro script em php.
<p/>
</body>
</html>
10
2) Crie uma pgina HTML que invoque um script PHP que processe o seguinte formulrio utilizando o
mtodo http GET.
A aplicao deve retornar a seguinte saudao (nome de campo a referir o seu contedo):
Viva
Titulo profissional
Primeiro Nome
Ultimo Nome
parabns pelos
Idade
anos.
3) Altere o script anterior de forma a utilizar o mtodo http POST para processar os dados do
formulrio.
Compare os URL aps a submisso do pedido neste caso e no problema anterior.
4) Desenvolva um site Web que permita calcular o volume (v=1/3*r2*h*3.141592) de um cone,
cujas altura (h) e raio (r) sejam inseridos numa pgina formulrio. Construa o html da pgina
formulrio e o programa php necessrios para apresentar os resultados esperados.
Exerccios Propostos
1) Crie uma pgina HTML contendo um script PHP que implemente uma calculadora (suportando as
operaes +, - , * , / ). Para isso a pgina deve apresentar ao utilizador dois campos de texto que
recebem os operandos e quatro radio buttons para seleccionar a operao. Processado o script,
imprime operandos, operao e resultado.
2) Crie uma funo em PHP, chamada factorial, que receba como parmetro um nmero inteiro e
calcule o factorial do nmero introduzido. A funo dever escrever no ecr o nmero recebido e o
valor do factorial calculado, ex: 4! = 24.
3) Desenvolva uma script php que determine o troco a devolver a um utilizador que lhe passa atravs
de um formulrio o montante que pretende pagar (Custo) e a quantidade por ele apresentada
para efectuar o pagamento (Pagamento). Como resultado a script deve imprimir o nmero de
notas (notas: 5, 10, 20, 50, 100, 200, 500) de cada montante a devolver como troco e o
valor a devolver em moedas. Ex.:
Custo: 356,7 euros
Pagamento: 500 euros
Troco Total: 143,3 euros
notas:
1 x 100 euros
2 x 20 euros
moedas: 3,3 euros
4) Crie uma pgina HTML contendo um script PHP que apresente um formulrio com um campo de
texto pedindo ao utilizador para inserir nomes prprios de pessoas. A cada submisso de um
nome o script deve guard-lo num ficheiro de texto a criar. Caso o utilizador insira imprimir o
script imprime o contedo do ficheiro de texto.
11
Adicione pgina HTML criada um script PHP que permita fazer upload de um ficheiro de texto
para substituir o anteriormente criado.
Referncias
[1] PHP Tutorial, http://www.w3schools.com/PHP/ .
[2] PHP: A simple tutorial - Manual, http://us.php.net/tut.php.
[3] ScriptTester by vanKonGa, http://forumferney.free.fr/stester.html.
[4] WampServer : Install PHP 5 Apache MySQL on Windows
http://www.wampserver.com/en/index.php.
[5] :: PHP Magazine ::, http://www.phpmagazine.com.br/portal/?modulo=secao&id=1.
[6] W3Schools Online Web Tutorials, http://www.w3schools.com/default.asp.
[7] PHP :: Hot Scripts, http://www.hotscripts.com/PHP/index.html.
[8] PHP Date(), http://www.w3schools.com/php/php_date.asp.
[9] PHP 5 in Practice: Elliott White, Jonathan D. Eisenhamer: Books, http://www.amazon.com/PHP5-Practice-Developers-Library/dp/0672328887?tag=particculturf-20.
[10]
[11]
Histrico
1) 5 de Junho de 2008, Verso 1.0, mailto: vms@isep.ipp.pt
2) 13 de Junho de 2008, Verso 2.3, vms@isep.ipp.pt; jbm@isep.ipp.pt
3) 11 de Junho de 2010, Verso 2.4, crc@isep.ipp.pt
4) 11 de Maio de 2011, Verso 2.5, jbm@isep.ipp.pt
12
PARTE II
Javascript
A linguagem Javascript permite incluir em pginas Web funcionalidades to variadas como a validao
dos dados introduzidos por um utilizador num formulrio ou incluir mapas da Google em pginas
HTML4 utilizando a sua API Javascript.
O problema principal que se pode apontar o de poder haver diferenas na forma como navegadores
distintos reagem ao mesmo programa (script) Javascript.
O cdigo Javascript pode ser executado no momento em que a pgina HTML carregada ou quando
se verifica uma determinada condio ou evento (por exemplo, quando o rato passa em cima de uma
zona da pgina, o utilizador introduz dados num formulrio, etc). No primeiro caso, o cdigo deve ser
colocado no corpo principal da pgina (<body>), enquanto que no segundo caso, ser invocada uma
funo definida, normalmente, no cabealho da pgina (<head>).
index1.html
<html>
<head>
<script type="text/javascript">
function displayDate()
{
document.getElementById("demo").innerHTML=Date();
}
</script>
</head>
<body>
<h1>Funo JavaScript definida no HEAD da pgina/h1>
<p id="demo"></p>
<button type="button" onclick="displayDate()">Display Date</button>
</body>
</html>
index2.html
index3.html
<html>
<html>
<head>
<head>
<script src="myscript.js">
</head>
</script>
<body>
</head>
<body>
<p id=demo>Texto HTML:</p>
<input type="button" onclick="popup()"
value="Click Me!">
</body>
<script type=text/javascript>
</html>
document.write(Hello World!);
</script>
myscript.js
</body>
function popup() {
</html>
alert("Hello World")
}
De forma a simplificar as pginas HTML, o cdigo javascript pode ser alternativamente guardado
externamente num ficheiro com a extenso .js.
http://code.google.com/intl/pt-PT/apis/maps/documentation/javascript/tutorial.html
13
Dentro de uma pgina HTML, o cdigo Javascript encontra-se entre as etiquetas <script> e </script>
que permite definir o tipo de linguagem de extenso. As linhas entre estas etiquetas so executadas
pelo navegador. Por exemplo, a linha Javascript document.write(Hello World!); indica ao
navegador para escrever uma mensagem (dentro de aspas) na pgina HTML.
Sintaxe Javascript
Variveis
Como em qualquer linguagem de programao, as variveis em Javascript podem conter diferentes
tipos de dados (ex. numrico, booleano, string). A diferena fundamental para a maior parte das
outras linguagens que o tipo de uma varivel automaticamente definido com a atribuio do valor
no sendo definido de forma explicita com base numa palavra chave. Isto significa tambm que ao
longo de um programa a mesma varivel pode ser utilizada para guardar diferentes tipos de dados.
As variveis podem ser declaradas explicitamente utilizando a palavra chave var (ex. var i=12;) ou
implicitamente (i=12;). Contudo o mbito da varivel ser diferente nos dois casos. Uma varivel tem
mbito global se for declarada fora de uma funo ou se for definida implicitamente, mesmo que
dentro de uma funo; uma varivel local se declarada explicitamente dentro de funes e apenas
pode ser acedida dentro desta.
var inteiro = 7;
var booleano = true;
var str1 = DEAPC;
str2 = 2010;
var ano=parseInt(str2);
Diversas operaes aritmticas e lgicas podem ser executadas com as variveis. A tabela seguinte
apresenta os principais operadores. A sintaxe destes operadores semelhante utilizada na
linguagem de programao C.
Tipo
Operadores
Exemplo
Aritmtica
++
Atribuio
+=
-=
*=
/=
%=
Comparao
<
>
<=
>=
==
!=
--
Nota
X=y+2
x+=y
=== (os operandos so
===
x===5
exactamente iguais em
valor e tipo)
Lgicos
&&
||
14
Em Javascript o operador + tambm se aplica ao contexto das variveis do tipo string permitindo
fazer a concatenao de strings. O contexto em que este operador utilizado vai determinar o
resultado, ou seja, se utilizado com operandos numricos vai resultar tambm num valor numrico
enquanto que se for utilizado com strings resultar numa nova string.
A utilizao do operador + entre uma string e uma varivel do tipo numrico ir resultar numa nova
string.
<html>
<body>
<script type=text/javascript>
var str1 = DEAPC;
var str2 = 2010/;
var str3 = str1 + + str2 + 2011;
document.write(str3);
document.write(<br />);
</script>
</body>
</html>
Controlo de execuo
O controlo do fluxo de execuo determina quais e como as instrues de um programa so
executadas. Este controlo efectuado atravs da utilizao de construes condicionais e de ciclos
iterativos. A sintaxe das duas principais expresses condicionais (if..else if.. else / switch)
Modo de funcionamento
Sintaxe
if (condio 1) {
// cdigo 1}
if..else if..
switch
case 1: // cdigo 1
break;
case 2: // cdigo 2
break;
default:
// cdigo
Os ciclos permitem que um bloco de cdigo seja executado um determinado nmero de vezes ou
enquanto uma condio se verificar. A sintaxe dos trs principais ciclos (for / while / do while)
apresentada na seguinte tabela
15
Modo de funcionamento
Nome
for
Sintaxe
Um bloco de cdigo
executado
um
nmero
especfico de vezes
while
Um
bloco
executado
dowhile
de
cdigo
enquanto
// cdigo
}
do{
// cdigo
} while (condio);
Funes
As funes so blocos de cdigo que executam uma tarefa especfica. Em Javascript estas so
invocadas por um evento ou por uma chamada funo. As funes podem ser definidas
internamente em qualquer parte do documento (usualmente so agregadas na seco HTML <head>)
ou externamente num ficheiro com extenso .js.
A sintaxe de uma funo compreende a utilizao da palavra chave function, a definio de um
nome, parmetros de entrada e valor de retorno como se mostra de seguida:
function nome (argumento_1, argumento_2, )
{
// cdigo;
return var;
}
Em Javascript os parmetros so passados com um vector. Cada funo tem duas propriedades que
podem ser utilizadas para determinar informaes sobre os parmetros:
De seguida dado um exemplo da utilizao de funes e ciclos nesta linguagem tendo como
objectivo fazer a soma de dois nmeros:
<html>
<head>
<script type=text/javascript>
function soma(a,b)
{
var args = soma.arguments;
var comp = args.length;
document.write(<p> Comprimento dos argumentos = + comp + </p>);
for(i=0;i<comp;i++){
16
Eventos
O Javacript permite detectar determinados eventos resultantes de aces realizadas pelo utilizador de
uma dada pgina Web, e utiliz-los para despoletar uma determinada funo javascript. Alguns dos
eventos definidos no javascript so os seguintes:
onClick
onMouseOver
onChange
onSubmit
myjs.js
<html>
function popup() {
<head>
alert("Hello World")
<script src="myjs.js">
</script>
function onMoOv() {
</head>
<body>
<input
}
type="button"
onclick="popup()"
value="Click
function valida() {
Me!">
17
Exerccios
1.) Considere o seguinte cdigo Javascript:
x=8+13;
document.write(x);
x=8+13;
document.write(x);
x=8+13;
document.write(x);
x=13+8;
document.write(x);
Qual dever ser o resultado da execuo deste script? Embeba o cdigo numa pgina HTML e valide
as suas concluses.
2.) Faa agora a anlise do resultado das seguintes operaes.
x = 5 + 5 + 5;
document.write(x);
x=5 + 5 + 5;
document.write(x);
O que conclui quando ordem de execuo das diversas operaes de soma?
3.) Qual o resultado da seguinte operao?
x = 5;
y = x + 3;
x = 5;
y += x;
document.write(y);
4.) Pretende-se criar uma pgina HTML que verifica a hora actual e imprima uma saudao diferente
dependendo do valor obtido. A saudao dever ser Bom dia no caso de ainda no serem 12h,
Boa Tarde para o perodo da tarde entre as 12h01 e 19h, Boa Noite entre as 19h01 e as 23h
e Durma bem a partir das 23h. Nota: Utilize a funo Date() do Javascript.
5.) Desenvolva uma mquina de calcular em Javascript que possibilite a utilizao de dois operandos.
Os operandos e operao a efectuar devero ser introduzidos atravs de um formulrio em HTML
e devero ser consideradas situaes invlidas, e.g.: operador invlido, diviso por 0, etc.
18
Exerccios propostos
1) Desenvolva uma aplicao que permita inserir num formulrio dados de pessoas (nome, data de
nascimento), e os apresente por ordem alfabtica ou por ordem cronolgica de idade (de acordo
com uma opo tambm efectuada no formulrio). Valide os dados inseridos no formulrio,
assegurando que os nomes contm apenas caracteres do alfabeto, a data inserida na forma
AAAA-MM-DD.
a.
b.
c.
d.
e.
f.
g.
2) Pretende desenvolver-se uma aplicao Web que converta graus Fahrenheit para graus Clsius.
a) Construa o ficheiro far2cel.html da pgina web ao lado para que esta invoque um programa
convertF2C.cgi que gere uma pgina que apresente o resultado dessa converso.
Nota: o programa convertF2C.cgi encontra-se no directrio cgi-bin/ de um servidor local
(localhost).
19
b) Como implementao alternativa, considere que uma outra pgina far2cel_A.html usa um
formulrio de aspecto igual ao da alnea a), mas utiliza a script php do ficheiro
convertF2C.php para gerar a pgina com o resultado da converso. Construa o script php
desse ficheiro de modo a que funcione com qualquer um dos mtodos (GET ou POST).
Nota: considere que
c)
Construa a pgina far2cel_A.html referida na questo anterior, que inclua o cdigo javascript necessrio
para garantir que apenas valores numricos sero inseridos no campo do formulrio. Sempre que sejam
inseridos caracteres no numricos, isto , dgitos
diferentes de 0-9, dever ser mostrada a mensagem
seguinte.
Referncias
[12]
[13]
[14]
Histrico
1) 27 de Abril de 2011, Verso 0.1, pmd@isep.ipp.pt
2) 4 de Maio de 2011, Verso 0.3, pmv@isep.ipp.pt, rjc@isep.ipp.pt
3) 11 de Maio de 2011, Verso 1.1, jbm@isep.ipp.pt
4) 14 de Maio de 2012, Verso 1.2, jbm@isep.ipp.pt
20