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
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.
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
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
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.
Constantino Martins
Tipos de Tags




<? codigo PHP ?>
<?php codigo PHP ?>
<% codigo PHP %>
<script language="php"> codigo PHP
</script>
Constantino Martins
PHP embebido com HTML
<?
Codigo
?>
Codigo
<?
Codigo
?>
Codigo
<?
Codigo
?>
Etc....
PHP
HTML
PHP
HTML
PHP
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>
<? } ?>
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";
}
?>
Constantino Martins
Tipos de Comentários
<?
// primeira
/* segunda */
# vamos embora?
?>
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
Constantino Martins
Tipos de variáveis
 Inteiros:
$a=123456; $a=-1221212;
 Float
$a = 1.234; $a = 1.2e3;
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”
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";
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];
Constantino Martins
Tipos de variáveis - vectores
$a[0]=“abc”;
$a[1]=“cba”;
$a[]=“ole”; /* ole fica
automaticamente na posição a[2]
*/
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; ?>
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>
<? } ?>
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>;”
}
?>
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");
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);
?>
Constantino Martins
Funções
<?
$a = 1; $b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
?>
Constantino Martins
Execução de comandos
 $output = `ls -al`; echo
"<pre>$output</pre>";
 system(), passthru(), exec(),
popen(), and escapeshellcmd().
Constantino Martins
Instruções - tudo “a la” C




if
while
switch
Etc...
Constantino Martins
Includes
Permite 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
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
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
?>
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]);
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);
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);
?>
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);
?>
Constantino Martins
Autenticação - alguns exemplos
 Base de dados
 HTTP – com PHP
 Cookies
 .htaccess do linux
Constantino Martins
Autenticação- exemplo
 <?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic
realm=\"My Realm\"");
Header("HTTP/1.0 401
Unauthorized");
echo "Text to send if user hits
Cancel button\n";
exit;
} else {
echo "Hello $PHP_AUTH_USER.<P>";
echo "You entered $PHP_AUTH_PW as your
password.<P>"; } ?>
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().
Constantino Martins
Session
 Exemplo:
<?
SetCookie(‘dei',‘const');
?>
<?
session_start();
session_register(‘var');
$var = 'Hello World';
?>
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
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>
Constantino Martins
uploads
 <?
copy($PHP_UPLOADED_FILE_NAME,$
DOCUMENT_ROOT.$REQUEST_URI);
?>
Constantino Martins
Phpinfo();
 phpinfo():
“ Outputs a large amount of information about the current
state of PHP. This includes
information about PHP compilation options and extensions,
the PHP version, server
information and environment (if compiled as a module), the
PHP environment, OS version
information, paths, master and local values of configuration
options, HTTP headers, and
the GNU Public License. “
 <? phpinfo(); ?>
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>";
?>
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/
Constantino Martins
Download

Introdução à Linguagem PHP - Departamento de Engenharia