Sei sulla pagina 1di 90

PHP

PHP e a WWW
Funcionamento do PHP
PHP com Apache e MySQL
XAMPP
Material compilado da Internet
Prof. Claudio Azevedo Passos
PHP e a WWW
Pginas estticas / Pginas dinmicas

O PHP permite a criao de pginas dinmicas.
Informao dinmica
O que fazer quando a informao que est no website
muda constantemente, como por exemplo as
cotaes da bolsa?

Neste caso, os documentos estticos em HTML no
so a melhor soluo.

necessrio criar HTML dinmico para que no
momento em que o cliente contacta o servidor lhe
seja enviada a informao atualizada.
PHP
uma linguagem de programao
vocacionada para o desenvolvimento de
aplicaes orientadas para a www.

Existem 2 tipos de linguagens web:
- Baseadas no cliente (browser) (JavaScript,
ActiveX, Java Applets, etc)
- Baseadas no servidor.
(PHP, ASP, etc)
PHP
O cdigo PHP embebido no cdigo HTML dando
origem a um script contendo instrues especficas.

O servidor l o cdigo PHP e interpreta os
comandos.
Exemplo 1
<?php /*php_1.php */?>
<html>
<head>
<title> Resultado </title>
</head>
<body>
<?php $X=5; $Y=3; $Z=$X+$Y;
echo Total ;
echo = $Z;
?>
</body>
</html>
O que preciso para executar o PHP?
Um cliente (browser)
Um servidor Web (ex.: Apache)
Um servidor de bases de dados (ex.: MySQL)
Uma ferramenta que permita ligar tudo isto
(ex.: PHP)
Cliente Servidor web
PHP
BD
1
2
3
4
1 - O cliente solicita a pgina ao servidor web. Este,
verificando que existe um script PHP, chama o mdulo PHP
para efetuar o processamento.
2 - Se no script existirem comandos que abrem uma ligao
a uma base de dados, o PHP trata de efetuar essa ligao.
3 - Os dados pretendidos so ento extraidos da base de
dados, sendo enviados pelo PHP ao servidor web em
formato HTML.
4 - O servidor web envia os dados ao cliente, sendo estes
visualizados numa pgina HTML devidamente formatada.
Porque utilizar o Apache?
o lder do mercado;

o mais seguro;

No tem concorrentes quanto riqueza de recursos,
estabilidade, performance, ...
Porque utilizar o MySQL?
Baixa exigncia de recursos de hardware;
Simplicidade de administrao;
o mais veloz do mercado;
Foi optimizado para as aplicaes tpicas da Web,
onde ocorrem mais consultas do que atualizaes.
Porque usar PHP, Apache e
MySQL?
Porque fornecem tudo o que necessitamos
para construir aplicaes e web sites
sofisticados, e de maneira mais simples do
que outras alternativas.


Principalmente porque so software livre!
Tenho que utilizar os trs em
conjunto?
No, esta apenas uma combinao
popular na Internet. Outras alternativas
seriam:

Apache com Perl, Python, ASP, Java, ...
PHP com IIS, PWS, Xitami, ...
PHP com PostgreSQL, Interbase, Oracle, DB2 ...
MySQL com Perl, Phyton, ASP, Java, ...
Software
Xampp -O XAMPP um servidor Web multiplataforma
constitudo por um servidor HTTP Apache.
X- Sistema operativo (atualmente suportado por
windows, Linux, SunSolaris e MacOs.
A-Apache
M-MySQL
P-PHP
P-PERL

wamp - Windows, Apache, MySQL e PHP

lamp - Linux, Apache, MySQL e PHP

Outro Exemplo
<table border=1>
<?php
for($i=1; $i<6; $i++)
{
echo '<tr>';
$q=$i*$i*$i;
echo "<td> $i </td>";
echo "<td> $q </td>";
echo '</tr>';
}
?>
</table>
i
3
PHP
Formulrios HTML
Botes
Radio buttons
Seleccion lists
Input boxes
Checkbox
Etc
Formulrios HTML

method - Especifica o modo como a informao
transmitida. Pode ser GET ou POST.

action - Indica o nome e a localizao do script PHP
que ir processar a informao que foi introduzida no
formulrio.
Mtodos de transmisso
O protocolo HTTP (HiperText Transfer Protocol) utiliza
vrios mtodos de manipulao e organizao dos
dados.

Atualmente, os dois mtodos mais utilizados para
submeter dados de formulrios so o GET e o POST.

Ambos os mtodos transferem dados do browser para
o servidor, a maior diferena entre eles a maneira
como essa informao transmitida.
O browser acrescenta ao URL, especificado no atributo
ACTION, um "?" e os valores codificados;

Os dados no so encriptados, logo informaes que
exigem segurana no devem ser manipuladas por
este mtodo;

Suporta apenas at 128 caracteres, logo til para
valores pequenos.
GET
POST
Os dados introduzidos num formulrio fazem parte do
corpo da mensagem enviada para o servidor;

Pode encriptar os dados;

possvel transferir uma grande quantidade de dados.

Este o mtodo aconselhado.

20
Exemplo 2 Mtodo POST
form.html
<form method="POST"
action="script.php">
Nome:
<input name="nome"
type="text">
</form>
script.php
<?php
$nome=$_POST["nome"];
Echo "<p>nome=$nome";
</php>
21
Exemplo 3 Mtodo GET
form.html

<form method="GET"
action="script.php">
Nome:
<input name="nome"
type="text">
</form>
script.php
<?php
$nome=$_GET["nome"];
echo "<p>nome=$nome";
</php>
Exemplo 4
Situao em que so usados dois ficheiros:

form.html - o local onde o utilizador far os inputs.

php_2.php - Contm os comandos PHP que iro
processar os dados inseridos no formulrio.
<html>
<head>
<title> formulrio PHP </title>
</head>
<body>
<form enctype="multipart/form-data" method="POST" action="php_2.php">
<p> Nome <input type="text" name="nome" size=30> </p>
<p> Idade <input type="text" name="idade" size=2> </p>
<p> Qual o carro que mais gostas?
<select name="marca">
<option> Ferrari </option>
<option> Mercedes </option>
<option> BMW </option>
</select> </p>
<p> <input type="submit" value="OK"> </p>
</form>
</body>
</html>
Exemplo 4
<?php /*php_2.php*/ ?>
<html>
<head>
<title> Resultado </title>
</head>
<body>
<?php
echo "O meu nome ".$_POST['nome']. " ,tenho " .$_POST['idade'].
" anos e gosto de carros da marca "
.$_POST['marca'];
?>
</body>
</html>
Exemplo 4
Nota: Ateno juno de
texto com variveis numa
instruo de escrita
PHP
Tipos de dados
Variveis e constantes
Operadores
Estruturas de controlo
Operadores
Aritmticos
Operadores lgicos
Operadores
relacionais
+ - * / %
+= -= *= /= %=
++ --
! NOT
&& AND
|| OR
== != < <=
> >= === !==
=== (igualdade restrita)
Tipos de dados
Booleanos
Inteiros, Strings, Array, Object
Nmeros reais (floating point)
Alguns caracteres especiais
\n Muda de linha
\t Tabulao horizontal
\r Volta incio da linha
PHP
Operadores, tipos de dados e
alguns caracteres especiais
27
Transformao de Tipos por coero
Coero a converso de um tipo em outro
tipo diferente mediante operao realizada
com tipos diferentes. Por exemplo:
$a=1;
$a = $a + "5";

Nesse exemplo a varivel $a numrica
(integer) na primeira atribuio e string na
segunda atribuio
28
Transformao explicita de tipos
Feita via typecast (como em
linguagem C)

Exemplo:
$a = 6; # a um integer (6)
$a = (float) 6; # um float (6.0)

29
Constantes
Uma constante um identificador (nome) para um nico valor que
no se altera durante a execuo de um script)

Pr-definidas
Definidas pelo usurio

Exemplo:
define("MOL", 6.14e22);
define("PI", 3.1415);
echo MOL;
echo PI;
30
Constantes - Exemplo
<?php

// Nomes de constantes vlidos
define("FOO", "alguma coisa");
define("FOO2", "alguma outra coisa");
define("FOO_BAR", "alguma coisa mais");

// Nomes de constantes invlidas
define("2FOO", "alguma coisa");

// Isto vlido, mas deve ser evitado:
// O PHP pode vir a fornecer uma constante
mgica
// que danificar seu script
define("__FOO__", "alguma coisa");
?>
31
Constantes "Mgicas"
<?php

print __FILE__ ; # nome do arquivo
echo "\n";
echo __LINE__; # n da linha
echo "\n";
echo __FUNCTION__; # nome da funo
echo "\n";

?>
32
Operadores de Atribuio
= ($a=5);
+= ($a = $a + 5; $a+=5;)
-=
*=
/=
%=
.=
33
Operadores de Atribuio (2)
<<=
>>
&=
|=
^=
34
Operador Ternrio (ou Condicional)
(expresso) ? (expresso2) : (expresso3);

Exemplo:

$a=5;
$a > 5 ? $b="1" : $b="0";

equivalente a:

if($a>5)
$b="1";
else
$b="0";
35
Operadores Unrios
-oper : troca o sinal do operando
++
--
++$a : pr-incremento (incrementa $a em
um e depois retorna $a)
$a++ : ps-incremento
--$a : pr-decremento
$a-- : ps-decremento
36
Precedncia de Operadores
- ! ~ ++ --
- * / %
- + - .
- << >>
- > < >= <=
- == != <>
- &
- ^
- |
- &&
- ||
- ?:
- = += -= *= /= %= &= ~= <<= >>= ^=
- AND
- XOR
- OR
37
Estruturas de Controle
Blocos
Comandos condicionais
Comando de repetio
38
Blocos
So sequncia de comandos delimitados por
abre e fecha chaves ({ e })
39
Comando Condicional
if (expresso)
comando;
if(expresso) {
comando1;
...
comandoN;
}

40
Comando Condicional (2)
If (expresso)
comando1;
else
comando2;
If(expresso):
comando1;
...
comandoN;
else
comando1;
...
comandoN;
endif
41
Comando Condicional (3)
if(expresso1) {
comando1;
}
elseif(expresso2) {
comando2;
}
...
else{
comandoN;
}
42
Exemplo
<?php

$salario = 1000;
$desconto = 0.10; // 10%

$total = $salario - $salario*$desconto;

if($total>900) {
echo "";
}

?>
43
switch
switch (expresso) {
case valor1:
comando1;
break;
case valor2:
comando2;
break;
}
44
Exemplo - switch
<?php
$i = 1;
switch($i) {
case 0:
print "i igual a 0";
break;
case 1:
print "i igual a 1";
break;
case 2:
print "i igual a 2";
break;
default:
print "i no igual a 0, 1 ou 2";
break;
}
?>

45
Comandos de repetio (laos)
while
do .. while
for
foreach

46
while
while (expresso) {
comando;
}

while (expresso) :
comando1;
...
comandoN;
endwhile;
47
Exemplo comando while
<?php
$a = 1;
while ($a < 5) {
print $a;
$a++;
}
?>
48
do..while
$a=0;
do
{
echo "a=$a\n";
$a++;
}
while ($a<=10);
49
Exemplo do .. while
<?php
$acabou = false;
do
{
print "loop ...";
$acabou=true;
}
while (!$acabou);
?>
50
for
for (expr1; expr2; expr3 ) {
comando1
..
comandoN
}
51
foreach
Apresenta duas sintaxes:
foreach ($nome_array as $elemento)
{
comandos
}
ou
foreach ($nome_array as $chave => $valor)
{
comandos
}
52
foreach (exemplo)
<?php

// define um array com cinco
elementos
$a = array(1,2,3,4,5);

foreach ($a as $valor) {
echo "valor=$valor<br>";
}

?>
53
foreach (exemplo)
<?php

$a = array (
"cod1" => 10,
"cod2" => 20,
"cod3" => 30,
"cod4" => 40);

foreach ($a as $chave => $valor) {
echo "<p>chave=$chave, valor=$valor";
}

?>
54
Comandos break e continue
break: pode ser usado em laos do, for e while.
O break "quebra" a execuo e continua
executando o prximo comando
break [n]; // onde n indica o nmero de
estruturas que devero ser finalizadas
55
Comandos break e continue
continue: interrompe a execuo e avalia
novamente a condio de teste
continue [n]; // onde n indica o nmero de nveis
que devero ser iniciados
56
Exemplo - break
<?php
# break.php

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

if($i == 10) {
break;
}

echo " $i ";

}

?>
57
Exemplo - continue
<?php

// exibe os nmeros pares
for($i=0; $i < 100; $i++) {

if($i % 2) {
continue;
}

echo " $i " . '<br>';

}

?>
Em PHP o tipo de dados das variveis no
definido pelo programador.
$var=1234; //inteiro
$var=-1234; //inteiro
$var= 1.234 //real
$var= 1.2e3
$var=5;
$var2= O valor da varivel $var;
PHP
Variveis
Arrays
$arr= array(5,20,32,400,500,62,47,58);
echo $arr[1]; // resulta em 20

Array multidimensional:
$arr=array(1,2, array(Carlos, array(7,9) ) , xa);

echo $arr[0]; //resulta em 1
echo $arr[2][0]; // resulta em Carlos
echo $arr[2][1][1]; // resulta em 9
0 1 2 3 4 5 6 7
PHP
Exemplo
<table border=1>
<?php
for($i=1; $i<6; $i++)
{
echo '<tr>';
$q=$i*$i*$i;
echo "<td> $i </td>";
echo "<td> $q </td>";
echo '</tr>';
}
?>
</table>
i
3
PHP
61
Funes
Definio
Argumentos
Passagem de parmetros (valor ou
referncia)
Argumentos com valores pr-definidos
62
Funes - Sintaxe
function nome_da_funo(
[arg1, [arg2, ...,[argN]]]
)
{
comando1;
...
comandoN;
[ return valor_de_retorno ];
}
63
Funes definidas pelo usurio
Uma funo deve ser definida com a usando a
sintaxe indicada abaixo:
<?php
function foo($arg_1, $arg_2, /* ..., */
$arg_n)
{
echo "Funo Exemplo.\n";
return $retval;
}
?>
64
Valores Retorno
A declarao return opcional
Qualquer tipo poder ser retornado incluindo
listas e objetos.
65
Exemplo do uso do return
<?php

function quadrado($num)
{
return $num * $num;
}

echo quadrado(4); // sada '16'.

?>


66
Exemplo: Retornando um array com
mltiplos elementos
<?php

function numeros_pequenos()
{
return array (0, 1, 2);
}

list($zero,$um,$dois)=numeros_pequenos();

?>
67
Passagem de parmetros
Existem dois tipos de passagem de
parmetros:
por valor (by value)
por referncia (by reference)
O padro a passagem por valor.
68
Exemplo de passagem de parmetros
<?php

function incByValue($var, $valor) {
$var = $var + $valor;
}

function incByRef(&$var, $valor) {
$var = $var + $valor;
}

$a = 1;
incByValue($a,2); // retorna a=1
echo "a=$a\n";

$a = 1;
incByRef($a,2); // retorna a=3
echo "a=$a\n";

?>
69
Definio de valores padres na
chamada de funes
<?php
function incrementa($x=1, $valor=1)
{
$x += $valor;
return $x;
}

$a = 5;
echo "1. " . incrementa($a) . "<br>";

echo "2. " . incrementa($a,-4) . "<br>";

echo "3. " . incrementa($a,5) . "<br>";
echo 4. " . Incrementa() . "<br>";


?>

70
Modificadores de variveis
Variveis estticas (static)
mantm o valor que lhes foi atribudo na
ltima execuo. Usa o operador static.
Variveis variveis ($$)
Variveis de ambiente
71
Exemplo: uso de varivel esttica
<?php

function obtemProximo() {
static $contador=0;
return ++$contador;
}

echo obtemProximo(),"\n"; // retorna 1
echo obtemProximo(),"\n"; // retorna 2
echo obtemProximo(),"\n"; // retorna 3

?>

72
Variveis de Ambiente
<?php
phpinfo();
?>
73
Incluso de arquivos
include caso o arquivo no seja encontrado,
retornado um warning e o processamento da pgina
continua
require caso o arquivo no seja encontrado,
retornado um erro fatal
include_once se o arquivo j estiver sido incluso
ele ser ignorado
require_once

Obs:
include e include_once retornam uma advertncia
(warning) no caso de erro.
require e require_once retornam um erro fatal em
caso de erro.
74
Include x Require
O comando include reavaliado a cada
chamada
A instruo require pode incluir apenas um
arquivo (a funo require no inclui arquivos
dinamicamente)
75
Exemplo
biblioteca.php

<?php
/*
* funo quadrado
* retorna o quadrado de um nmero
*
*/

function quadrado($num)
{
return $num * $num;
}

?>
76
Exemplo
teste_include.php
<?php
// carrega o arquivo com a funo necessria
include 'biblioteca.php';

// imprime o quadrado de 2
echo quadrado(2);
?>
PHP

SQL / MySQL
Ligao a base de dados
Seleco e visualizao de registos
Adicionar, Eliminar, Pesquisar e Editar registos
Acesso a bases de dados
com PHP

1. - Captar os dados
2. - Estabelecer a ligao
3. - Aplicar um comando SQL
4. - Preparar os dados obtidos
Principais funes com suporte ao
MySQL
mysqli_connect - Estabelece uma ligao ao servidor
ex.: $ligax = mysqli_connect('localhost', 'root', password');
mysqli_select_db - Selecciona uma base de dados
ex.: mysqli_select_db($ligax, 'vendas');
mysqli_query - Interroga uma base de dados
ex.: mysqli_query($ligax, $insere);
mysqli_num_rows - Devolve n. de registos resultantes de uma
consulta.
ex.: $nregistos = mysqli_num_rows($result);
mysqli_fetch_assoc - Guarda num array o resultado de uma
consulta.

for ($i=0; $i <$nregistos; $i++) {
$registo = mysqli_fetch_assoc($result);
echo '<tr> <td>' .$registo['CodCli']. '</td>';
echo '<td>' .$registo['Nome']. '</td>';
echo '<td>' .$registo['Morada']. '<td> </tr>';
}
ex.:
improved
Exemplo
Browser
Servidor
PHP
BD vendas
Clientes
Artigos Fornecedores
Encomendas
Ficheiro ligacao.php
$host = 'localhost';
$user = 'root';
$pwd = '';
$db = dados';

$ligax=mysqli_connect($host, $user, $pwd) or
die ('No conseguiu fazer a conexo ao servidor');
mysqli_select_db($ligax,$db);

<?php include (ligacao.php);?>
LISTAR
Listar dados de uma BD
<html>
<head> <title> Listar Clientes </title> </head>
<body> <h2> Lista de clientes: </h2> <br>
<?php
$ligax = mysqli_connect('localhost', 'root', '');
if (!$ligax) {echo '<p> Falha na ligao.';}
mysqli_select_db($ligax, 'vendas');
$consulta = "Select * From Clientes";
$result = mysqli_query($ligax, $consulta);
$nregistos = mysqli_num_rows($result);
echo "N de registos encontrados: $nregistos ";
?>
<br> <table border="1">
<tr><td> Codigo: <td> Nome: <td> Morada: </tr>
<?php
for ($i=0; $i <$nregistos; $i++) {
$registo = mysqli_fetch_assoc($result);
echo '<tr>';
echo '<td>'.$registo['CodCli'].'</td>';
echo '<td>'.$registo['Nome'].'</td>';
echo '<td>'.$registo['Morada'].'<td>';
echo '</tr>'; echo '</p>';
}
?>
</table> <br> <a href="index.htm">Voltar entrada</a>
</body>
</html>
Cdigo php para pesquisar dados da tabela
PESQUISAR
Pesquisar dados numa BD
<html> <head> <title>Mostrar</title> </head>
<body> <h3>Mostrar cliente procurado</h3>
<?php /*pesquisa.php*/
$nomeproc = $_POST['nome'];
if (!$nomeproc)
{echo "Volte atrs e escreva o nome.";}
echo "<p>Nome procurado: $nomeproc. </p>";
$ligax = mysqli_connect('localhost', 'root','');
if (!$ligax){echo "<p> Falha na ligao."; exit; }
mysqli_select_db($ligax, 'vendas');
$procura = "Select * from clientes
where nome like %".$nomeproc."% ";
$result = mysqli_query($ligax, $procura);
$nregistos = mysqli_num_rows($result);
echo "N de registos encontrados: $nregistos";
?>
<table border="1">
<tr><td> Codigo: <td> Nome: <td> Morada: </tr>
<?php
for ($i=0; $i <$nregistos; $i++) {
$registo = mysqli_fetch_assoc($result);
echo '<tr> <td>' .$registo['CodCli']. '</td>';
echo '<td>' .$registo['Nome']. '</td>';
echo '<td>' .$registo['Morada']. '<td> </tr>'; }
?> </table>
<p> <a href="listar.php"> Listar registos </a>
</body></html>
ADICIONAR
Adicionar dados a uma BD
<html>
<head> <title> Inserir </title> </head>
<body> <h2> Novo cliente </h2>
<?php /*inserir.php*/
$cod = $_POST['codcli'];
$nome = $_POST['nome'];
$morada = $_POST['morada'];
echo 'Dados recebidos: <br />';
echo 'Cdigo: '.$cod.'<br />';
echo 'Nome: '.$nome.'<br />';
echo 'Morada: '.$morada.'<br />';
$ligax = mysqli_connect('localhost', 'root', '');
if (!$ligax) {echo '<p> Erro: Falha na ligao.'; exit;}
mysqli_select_db($ligax, 'vendas');
$insere = INSERT INTO clientes ( CodCli, Nome, Morada )
VALUES ( ".$cod. , ".$nome. , ".$morada. )";
$result = mysqli_query($ligax, $insere);
if ($result==1) echo "<p>Dados inseridos<br>";
else "<p>Dados no inseridos<br>";
?>
<p> <a href="index.htm">Voltar entrada</a>
<p> <a href="listar.php">Listar clientes</a>
</body>
</html>
ELIMINAR
Eliminar dados numa BD
<html>
<head> <title> Remover </title> </head>
<body> <h2> Remover cliente </h2>
<?php
$codrem = $_POST['codcli'];
if (!$codrem) {echo 'Volte atrs e escreva o cdigo do cliente a remover.'; }
echo "Cliente a remover: $codrem. <p>";
$ligax = mysqli_connect('localhost', 'root','');
if (!$ligax){echo "<p> Falha na ligao."; exit; }
mysqli_select_db($ligax, 'vendas');
$consulta = "Select * From Clientes";
$result = mysqli_query($ligax, $consulta);
$nr_antes = mysqli_num_rows($result);
$remove = "delete from clientes
where codcli = ".$codrem." ' ";
$result = mysqli_query($ligax, $remove);
if ($result==0) echo "<p>No removido<br>";
$consulta = "Select * From Clientes";
$result = mysqli_query($ligax, $consulta);
$nr_depois = mysqli_num_rows($result);
$nr_removidos = $nr_antes - $nr_depois;
echo 'N de registos removidos: '.$nr_removidos;
?>
<p> <a href="listar.php"> Listar registos </a>
</body> </html>
Exemplos de validaes em PHP
if ($pass!=$conf_pass || $pass=="") { $flag=true; $flag_pass=true;
}

if (!preg_match ("/^[0-9]{4}[\-][0-9]{3}$/",$cod_postal)) {
$flag=true;$flag_cod_postal=true;
}

if (!preg_match ("/^[0-9]{4}$/",$ano_nasc)) {
$flag=true;$flag_ano_nasc=true;
}

if (!preg_match ("/^[0-9]{9,12}$/",$telefone)) {
$flag=true;$flag_telefone=true;
}

Potrebbero piacerti anche