410 likes | 581 Views
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.
E N D
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 (HiperTextTransferProtocol) 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*/ ?> <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> Nota: Atenção à junção de texto com variáveis numa instrução de escrita
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 BD 4 2 Cliente 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
PHP Operadores, tipos de dados e alguns caracteres especiais
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 switch (selector) { case valor1: <bloco> break; case valor2: <bloco> break; … [default: <bloco>; ] } if(condição) <bloco de instruções> [else <bloco de instruções>] do <bloco de instruções> while (condição); while (condição) <bloco de instruções>; 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. 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.:
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; }