PHP
• PHP e a WWW
• Funcionamento do PHP
• PHP com Apache e MySQL
• XAMPP
PHP e a WWW
 Páginas estáticas / Páginas dinâmicas
O PHP permite a criação de páginas dinâmicas.
Informação dinâmica
O que fazer quando a informação que está no website
muda constantemente, como por exemplo as
cotações da bolsa?
Neste caso, os documentos estáticos em HTML não
são a melhor solução.
É necessário criar HTML dinâmico para que no
momento em que o cliente contacta o servidor lhe
seja enviada a informação actualizada.
PHP
 É uma linguagem de programação
vocacionada para o desenvolvimento de
aplicações 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 código PHP é embebido no código HTML dando
origem a um script contendo instruções específicas.
 O servidor lê o código 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>
Formulários HTML
 Botões
 Radio buttons
 Seleccion lists
 Input boxes
 Checkbox
 Etc…
Formulários HTML
 method - Especifica o modo como a informação é
transmitida. Pode ser GET ou POST.
 action - Indica o nome e a localização do script PHP
que irá processar a informação que foi introduzida no
formulário.
Métodos de transmissão
O protocolo HTTP (HiperText Transfer Protocol) utiliza
vários métodos de manipulação e organização dos
dados.
Actualmente, os dois métodos mais utilizados para
submeter dados de formulários são o GET e o POST.
Ambos os métodos transferem dados do browser para
o servidor, a maior diferença entre eles é a maneira
como essa informação é transmitida.
GET
O browser acrescenta ao URL, especificado no atributo
ACTION, um "?" e os valores codificados;
Os dados não são encriptados, logo informações que
exigem segurança não devem ser manipuladas por
este método;
Suporta apenas até 128 caracteres, logo é útil para
valores pequenos.
POST
Os dados introduzidos num formulário fazem parte do
corpo da mensagem enviada para o servidor;
Pode encriptar os dados;
É possível transferir uma grande quantidade de dados.
Este é o método aconselhado.
Exemplo 2
 Situação em que são usados dois ficheiros:
form.html - É o local onde o utilizador fará os “inputs”.
php_2.php - Contém os comandos PHP que irão
processar os dados inseridos no formulário.
Exemplo 2
<html>
<head>
<title> formulário 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 2
<?php /*php_2.php*/ ?>
Nota: Atenção à junção de
<html>
texto com variáveis numa
<head>
instrução de escrita
<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>
O que é preciso?
 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)
1
3
PHP
4
2
Cliente
BD
Servidor web
1 - O cliente solicita a página ao servidor web. Este,
verificando que existe um script PHP, chama o módulo PHP
para efectuar o processamento.
2 - Se no script existirem comandos que abrem uma ligação
a uma base de dados, o PHP trata de efectuar essa
ligação.
3 - Os dados pretendidos são então 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 página HTML devidamente formatada.
Porque utilizar o Apache?
 É o líder do mercado;
 É o mais seguro;
 Não tem concorrentes quanto à riqueza de recursos,
estabilidade, performance, ...
Porque utilizar o MySQL?
 Baixa exigência de recursos de hardware;
 Simplicidade de administração;
 É o mais veloz do mercado;
 Foi optimizado para as aplicações típicas da Web,
onde ocorrem mais consultas do que actualizações.
Porque usar PHP, Apache e
MySQL?
 Porque fornecem tudo o que necessitamos
para construir aplicações e web sites
sofisticados, e de maneira mais simples do
que outras alternativas.
 Principalmente porque são software livre!
Tenho que utilizar os três em
conjunto?
 Não, esta é apenas uma combinação
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
constituído 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
PHP
• Tipos de dados
• Variáveis e constantes
• Operadores
• Estruturas de controlo
Operadores, tipos de dados e
alguns caracteres especiais
Operadores
Aritméticos
Operadores lógicos
+ - * / %
+= -= *= /= %=
++ --
! NOT
&& AND
|| OR
Tipos de dados
Booleanos
Inteiros, Strings, Array, Object
Números reais (floating point)
Operadores
relacionais
== != < <=
> >= === !==
=== (igualdade restrita)
Alguns caracteres especiais
\n
Muda de linha
\t
Tabulação horizontal
\r
Volta início da linha
PHP
PHP
Variáveis
$var=1234; //inteiro
$var=-1234; //inteiro
$var= 1.234 //real
$var= 1.2e3
$var=5;
$var2= “O valor da variável é $var”;
Em PHP o tipo de dados das variáveis não é
definido pelo programador.
PHP
Arrays
0
1
2
3
4
5
6
7
$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
PHP
Estruturas de controlo
if(condição)
<bloco de instruções>
[else
<bloco de instruções>]
while (condição)
<bloco de instruções>;
switch (selector) {
case valor1: <bloco> break;
case valor2: <bloco> break;
…
[default: <bloco>; ] }
do <bloco de instruções>
while (condição);
for (inicialização; condição; incremento)
<bloco de instruções>;
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>
i3
PHP
• SQL / MySQL
• Ligação a base de dados
• Selecção e visualização de registos
• Adicionar, Eliminar, Pesquisar e Editar registos
Acesso a bases de dados
com PHP
1.º - Captar os dados
2.º - Estabelecer a ligação
3.º - Aplicar um comando SQL
4.º - Preparar os dados obtidos
Principais funções com suporte ao
MySQL
improved
mysqli_connect - Estabelece uma ligação 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.
ex.:
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>';
}
Exemplo
Servidor
BD vendas
Browser
PHP
Clientes
Encomendas
Fornecedores
Artigos
Ficheiro ligacao.php
$host = 'localhost';
$user = 'root';
$pwd = '';
$db = ‘dados';
$ligax=mysqli_connect($host, $user, $pwd) or
die ('Não conseguiu fazer a conexão ao servidor');
mysqli_select_db($ligax,$db);
<?php include (‘ligacao.php’);?>
Listar dados de uma BD
LISTAR
<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 ligação.';}
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>
Pesquisar dados numa BD
PESQUISAR
Código php para pesquisar dados da tabela
<html> <head> <title>Mostrar</title> </head>
<body> <h3>Mostrar cliente procurado</h3>
<?php /*pesquisa.php*/
$nomeproc = $_POST['nome'];
if (!$nomeproc)
{echo "Volte atrás e escreva o nome.";}
echo "<p>Nome procurado: $nomeproc. </p>";
$ligax = mysqli_connect('localhost', 'root','');
if (!$ligax){echo "<p> Falha na ligação."; 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 dados a uma BD
ADICIONAR
<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 'Código: '.$cod.'<br />';
echo 'Nome: '.$nome.'<br />';
echo 'Morada: '.$morada.'<br />';
$ligax = mysqli_connect('localhost', 'root', '');
if (!$ligax) {echo '<p> Erro: Falha na ligação.'; 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 não inseridos<br>";
?>
<p> <a href="index.htm">Voltar à entrada</a>
<p> <a href="listar.php">Listar clientes</a>
</body>
</html>
Eliminar dados numa BD
ELIMINAR
<html>
<head> <title> Remover </title> </head>
<body> <h2> Remover cliente </h2>
<?php
$codrem = $_POST['codcli'];
if (!$codrem) {echo 'Volte atrás e escreva o código do cliente a remover.'; }
echo "Cliente a remover: $codrem. <p>";
$ligax = mysqli_connect('localhost', 'root','');
if (!$ligax){echo "<p> Falha na ligação."; 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>Não 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 validações 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;
}
Download

PHP