Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP -...

42
Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto

Transcript of Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP -...

Page 1: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

PHP

Constantino MartinsDEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto

Page 2: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Índice O que é o PHP? Vantagem Tipos de variáveis Forms com PHP Mail Funções Comunicação com SGBD como exemplo o MySQL Autenticação com PHP - algumas soluções. SESSION com PHP Uploads Links

Page 3: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

O que é PHP? PHP ("PHP: Hypertext Preprocessor") é

uma linguagem de script server-side HTML-embedded.

Implementado em “qualquer” ambiente

Server-side -> código é executado no servidor.

Page 4: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Historia e Datas Concebido em 1994 por Rasmus Lerdorf Versão 1: 1995 Versão 2: PHP/FI 1995-1997 Versão 3: PHP 1997-2000 Versão 4: PHP meio-2000

Page 5: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Vantagem

Entre outras, umas das grandes vantagem do PHP é o de suportar um grande número de base de dados e sobretudo de fácil uso. Adabas D, InterBase, Solid, dBase, mSQL,

Sybase, Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL

Page 6: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Primeiro programa - hello world FILE.php:<html><head><title>Example</title></head><body>

<? echo “hello world!"; ?></body> </html>

Output:Hello world!

O código PHP é delimitado por tags iniciais e finais que lhe permite sair e entrar no PHP.

Page 7: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de Tags

<? codigo PHP ?> <?php codigo PHP ?> <% codigo PHP %> <script language="php"> codigo PHP

</script>

Page 8: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

PHP embebido com HTML<?Codigo PHP?>Codigo HTML<?Codigo PHP?>Codigo HTML<?Codigo PHP?>Etc....

Page 9: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Exemplo

<?if(strstr($HTTP_USER_AGENT,"MSIE")) {?><b>You are using Internet Explorer</b><? } else { ?><b>You are not using Internet

Explorer</b><? } ?>

Page 10: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Sintaxe PHP “a la “ C (e Perl, TCL etc..)

Instruções “a la” C<?for ($i=0; $i<5; $i++) {

if ($i < 2) {echo “ola";

} else {echo “oli";

}echo "$i<BR>\n";

}?>

Page 11: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de Comentários

<?// primeira /* segunda */# vamos embora??>

Page 12: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de variáveis

Não precisam de serem declaradas

Tipo da variável decidido em “runtime” pelo PHP, dependo do contexto em que é usada

Page 13: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de variáveis

Inteiros:$a=123456; $a=-1221212;

Float$a = 1.234; $a = 1.2e3;

Page 14: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de variáveis - string

Limitada por duas maneiras: “ ‘ (neste caso as variáveis não serão

“expandidas”) Nota:

Uso “\” para “escapes”

Page 15: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de variáveis - strings Exemplos:

Atribuição$string = “É uma string";

/* Appending to it . */$string = $string . " com mais strings";

/* Outra maneira */$string .= " mais coisas.\n";

Page 16: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de variáveis Outro exemplo$num = 9;$string = "<p>Number: $num</p>";Resultado: string =<p>Number: 9</p>

/* Mais um exemplo*/$num = 9;$string = '<p>Number: $num</p>';Resultado: string= <p>Number: $num</p>

/* último exemplo */$string = ‘É um teste.';$first = $string[0];

Page 17: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Tipos de variáveis - vectores

$a[0]=“abc”;$a[1]=“cba”;$a[]=“ole”; /* ole fica

automaticamente na posição a[2] */

Page 18: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

FORMS

<form action="action.php" method="POST">Nome: <input type=text name=nome><br>Idade: <input type=text name=idade><br><input type=submit></form>

action.php:

Hello <? echo $nome; ?>. A sua idade é <? echo $idade; ?>

Page 19: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

FORMS

action.php:

<? if ($nome!=“” && $idade!=“”) { ?>Hello <? echo $nome; ?>. A sua idade é <? echo $idade; } else { ?> <form action="action.php" method="POST">Nome: <input type=text name=nome><br>Idade: <input type=text name=idade><br><input type=submit></form><? } ?>

Page 20: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

FORMS – uma dica <form action="action.php" method="POST"><select multiple name=equipas[]><option>FCP <option>SLB<option>SCP<option>BOAVISTA</select><input type=submit></form>

action.php:<? echo “Seleccionou:<br>";$tamanho=sizeof($equipas);$i=0;while ($i<$tamanho) {echo “equipas[$i] <br>;”}?>

Page 21: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Mail Sintaxe:bool mail(string to, string subject, string

message, string [additional_headers]);

Exemplo:mail(“[email protected]",

“Dúvidas", “ola 1\n ole 2\n oli 3");

Page 22: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Funções Declaração de funções:<? function exemplo($var1, $var2) {

echo “var1=$var1 <br>var2=$var2”; }?>

Chamada de funções:<?$envia1=“ola”;$envia2=“ola2”; exemplo($envia1,$envia2); ?>

Page 23: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Funções

<?$a = 1; $b = 2; Function Sum () {

global $a, $b; $b = $a + $b;

} Sum (); echo $b;?>

Page 24: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Execução de comandos

$output = `ls -al`; echo "<pre>$output</pre>";

system(), passthru(), exec(), popen(), and escapeshellcmd().

Page 25: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Instruções - tudo “a la” C

if while switch Etc...

Page 26: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

IncludesPermite incluir files <? // includes assim podemos ter todos o mesmo layout

etc.... include ("cabecalho.php"); include ("pesquisa1.php"); include ("rodape.html"); ?> Nota:Ver também require

Page 27: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Database support

Quase todas: Adabas D, InterBase, Solid, dBase, mSQL,

Sybase, Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL

Vamos falar do MySQL

Page 28: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

MySQL – ligação a base de dados int mysql_connect(string [hostname [:port]

[:/path/to/socket] ] , string [username] , string [password] );

Returns: A positive MySQL link identifier on success, or false on error.

Exemplo:<?$lig=mysql_connect(“”,”const”,”os meu alunos gostavam

de saber”);mysql_close($lig); // fechar ligação?>

Page 29: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

MySQL Seleccionar base de dados – int mysql_select_db(string database_name, int

[link_identifier] ); Returns: true on success, false on error

Executar uma query –int mysql_query(string query, int [link_identifier] );

Ver números de resultados -int mysql_num_rows(int result);

Mostrar resultados -object mysql_fetch_object(int result, int [result_typ]);

Page 30: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

MySQL - exemplo pesquisa numa tabela

<?/* connect a BD */$lig=mysql_connect(“”,”const”,”os meu alunos

gostavam de saber”);/* seleccionar BD */mysql_select_db(“nome da BD”)/* executar query */$query=“select * from tabela”;$result=mysql_query($query);/* ver números de resultados */$numero=mysql_num_rows($result);

Page 31: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

MySQL - exemplo pesquisa numa tabela

$i=0;While($i<$numero) {

if ($row=msql_fetch_object($result)) {echo “$row->nomecoluna<br>etc .....”;

}$i++;

}/* Free result memory */mysql_free_result($result);/* fechar ligação */mysql_close($lig);?>

Page 32: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

MySQL - exemplo inserir numa tabela

<?/* connect a BD */$lig=mysql_connect(“”),”const”,”os meu alunos gostavam

de saber”);/* seleccionar BD */mysql_select_db(“nome da BD”)/* executar query */$query=“insert into ....etc”;$result=mysql_query($query);/* fechar ligação */mysql_close($lig);?>

Page 33: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Autenticação - alguns exemplos

Base de dados

HTTP – com PHP

Cookies

.htaccess do linux

Page 34: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Autenticação- exemplo <?php if(!isset($PHP_AUTH_USER)) {

Header("WWW-Authenticate: Basicrealm=\"My Realm\""); Header("HTTP/1.0 401Unauthorized"); echo "Text to send if user hitsCancel button\n"; exit;

} else { echo "Hello $PHP_AUTH_USER.<P>"; echo "You entered $PHP_AUTH_PW as yourpassword.<P>"; } ?>

Page 35: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Session int setcookie(string name, string value,

int expire, string path, string domain, int secure);

Iniciar session usar session_start() e para registar variáveis nesta sessão usar session_register().

Page 36: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Session

Exemplo:<?SetCookie(‘dei',‘const');?> <?session_start(); session_register(‘var'); $var = 'Hello World'; ?>

Page 37: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Session Para verificar se uma função foi

registada usar session_is_registered(): <?if (!session_is_registered("my_var")) {session_register("my_var"); }

Nota: consultar outras funções

Page 38: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

uploads <FORM ENCTYPE="multipart/form-data"

ACTION="_URL_" METHOD=POST> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000"> Send this file: <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="Send File"> </FORM>

Page 39: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

uploads

<? copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>

Page 40: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Phpinfo(); phpinfo(): “ Outputs a large amount of information about the current

state of PHP. This includesinformation about PHP compilation options and extensions,

the PHP version, serverinformation and environment (if compiled as a module), the

PHP environment, OS versioninformation, paths, master and local values of configuration

options, HTTP headers, andthe GNU Public License. “

<? phpinfo(); ?>

Page 41: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

Variáveis do sistema<? $REMOTE_ADDR = getenv("REMOTE_ADDR"); $HTTP_REFERER = getenv("HTTP_REFERER"); $DOCUMENT_URI = getenv("REQUEST_URI"); $HTTP_USER_AGENT = getenv("HTTP_USER_AGENT"); $REMOTE_HOST = gethostbyaddr($REMOTE_ADDR); $HTTP_USER_AGENT = str_replace("|", "", $HTTP_USER_AGENT); $REMOTE_HOST1 = strtolower("$REMOTE_HOST"); echo "$REMOTE_ADDR<br>"; echo "$HTTP_USER_AGENT<br>"; echo "$REMOTE_HOST1<br>"; echo "outra solucao=$REMOTE_HOST<br>"; ?>

Page 42: Constantino Martins PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto.

Constantino Martins

LINKS Home Page: http://www.php.net Manual: http://www.php.net/manual/ Tutorial: http://www.php.net/tut.php Books:http://www.php.net/books.php Hotscripts: http://www.hotscripts.com/