Tema 4. III –LjLenguajes de programacióión en ell servidor ...

38
T III L j d l T ema 4. III Lenguajes de programacn en el servidor: PHP 1 Arquitecturas Distribuidas 09/10

Transcript of Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Page 1: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

T    III  L j  d   ió     l Tema 4. III – Lenguajes de programación en el servidor: PHP

1Arquitecturas Distribuidas 09/10

Page 2: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

III. Lenguajes de programación en el servidor: PHP

1. Procesado de información en el servidor2. Lenguajes de programación en el servidor3. PHP: cambio de paradigma4. Características5. Uso básico6 Descripción del lenguaje6. Descripción del lenguaje

2Arquitecturas Distribuidas 09/10

Page 3: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Procesado de información en elProcesado de información en el servidor

En la actualidad, las páginas web se generan dinámicamente en el servidor antes de enviarse al cliente, tanto si procesan i f ió  d l  li t     i información del cliente como si noEs necesario desarrollar aplicaciones que se ejecuten en el servidor y que generen el código HTML de respuesta.El estándar CGI es insuficiente para las necesidades actuales: demasiado costoso computacionalmente ejecutar una aplicación en un contexto diferente para cada petición.Se utilizan lenguajes de programación integrados modularmente en el propio servidor web.

Cuando el servidor detecta que la URL dirige a una aplicación q g pregistrada, el documento solicitado es manejado por el módulo adecuado.Ej. si la URL indica /procesar.php, el archivo procesar.php lo abre y 

  l i té t  d   h ( l  d   h )procesa el intérprete de php (el preprocesador php).

Page 4: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Lenguajes de programación en elLenguajes de programación en el servidor

En principio, mediante el estándar CGI cualquier ejecutable puede procesar la petición HTTPejecutable puede procesar la petición HTTP.En la práctica se suelen utilizar lenguajes interpretados (script)  ya que las necesidades de procesado no son (script), ya que las necesidades de procesado no son demasiado exigentes (además de estar optimizados) y se facilita enormemente el desarrollose facilita enormemente el desarrollo.Algunos ejemplos:

Apache y PHPApache y PHP.Apache Tomcat y JSP (Java Server Pages)IIS ASP NETIIS y ASP .NET

Page 5: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Cambio de paradigma 

HTMLCGI

p g

HTMLCGI

HTML PHP

Page 6: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Características

• Sencillo. Lenguaje interpretado.

• Aprovecha lo mejor de varios lenguajes: Perl, C, etc.

• Muchas librerías con funciones: PDF  XML  ODBC  etc• Muchas librerías con funciones: PDF, XML, ODBC, etc.

• Usomuy extendido.

• Normalmente integrado directamente en el servidorHTTP

Page 7: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

U bá iUso básico• Un fichero con código PHP incrustado se identifica• Un fichero con código PHP incrustado se identificacon la extensión .php•El servidor reconoce la extensión e invoca al •El servidor reconoce la extensión e invoca al intérprete PHP (preprocesador). El preprocesadorinterpreta como código PHP todo lo que apareceinterpreta como código PHP todo lo que apareceentre las etiquetas <? y ?>, el resto simplemente lo devuelve por la salida estándar (lo que equivale a 

<? echo 'Primer método de delimitar código PHP'; ?>

p ( q qenviarlo al cliente).

<? echo Primer método de delimitar código PHP ; ?>

<?php echo 'Segundo método, el más usado'; ?>

Page 8: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Hola Mundo!

<html><html><body>

<? h<?phpecho "Hola Mundo en PHP!";

?>

</html>

•Función echo envía por la salida estándar la cadena de caracteres siguiente (igual a print o printf)caracteres siguiente (igual a print o printf) •Como la salida estándar es el servidor HTTP, se envía al cliente

Page 9: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Variables • NO hace falta declararlas• Llevan delante el signo ‘$’.

$var_1 = 123;$var_2 = ’hola’;$var_3 = $var_1 * 2;

Page 10: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Variables• PHP realiza conversiones de i á i !tipo automáticamente!

$mivar = 123;echo $mivar; // Se convierte a string

$mivar = ’3’; // Se convierte a entero$mivar = 2 + $mivar; // para realizar la suma

Page 11: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

VariablesDeclaradas en el cuerpo de un archivo, las variables son GLOBALES a dicho archivo y a variables son GLOBALES a dicho archivo y a los archivos incluidos.Decla adas en na f nción son LOCALES a Declaradas en una función, son LOCALES a esa función.

Page 12: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Tipos de datos.• Enteros, en decimal, octal o hexadecimal.

$MiVar = 123;

• Punto flotante.$MiVar = 1.3e4;$ a 3e ;

• Arrays.$MiVar[2] = 123;$MiVar[2] = 123;

• Strings.$MiVa “Cadena de te to\n”$MiVar = “Cadena de texto\n”;

• Objetos:$MiV MiCl ()$MiVar = new MiClase();

Page 13: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Arrays• PHP admite arrays “especiales”:

$MiArray[0] = 1;$MiArray[1] = “hola!!”;$MiArray[] = 3;echo $MiArray[2]; // Imprime 3$MiA [“ b ”] “H ”$MiArray[“nombre”] = “Homer”;echo $MiArray[0]; // 1echo $MiArray[“nombre”]; // “Homer”echo $MiArray[ nombre ]; // Homer

Page 14: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Strings( )Si se delimitan entre comillas dobles (“), las 

variables se expanden:$a = hola;echo “$a” // Imprime “hola”

Si se delimitan entre comillas simples (’), las variables no se expanden:$a = hola;echo ‘$a’ // Imprime “$a”

Page 15: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Operadores aritméticos.p

ió b l dOperación Nombre Resultado $a + $b Suma Suma de $a y $b. $a - $b Resta Diferencia entre $a y $b. $a $b Resta Diferencia entre $a y $b. $a * $b Multiplicación Producto de $a y $b. $a / $b División Cociente de $a y $b. $ % $b Mód l R d l ió $ /$b $a % $b Módulo Resto de la operación $a/$b.

Page 16: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Auto‐incremento y decremento.Auto incremento y decremento.

óOperaciónNombre Resultado

++$a Pre-incremento Incrementa $a en 1, y devuelve $a (incrementado).

$a++ Post-incremento Devuelve $a, y después lo incrementa en 1. Decrementa $a en 1 y

--$a Pre-decremento Decrementa $a en 1, y después lo devuelve.

$a-- Post-decremento Devuelve $a, y después lo incrementa en 1

$incrementa en 1.

Page 17: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Operadores de bits.pOperación Nombre Resultado

$a & $b Y Se ponen a 1 los bits que están a 1 en $a y $b. Se ponen a 1 los bits que están a $a | $b O Se ponen a 1 los bits que están a 1 en $a o $b.

$a ^ $b O Exclusivo Se ponen a 1 los bits que están a

$ $b b$a $b O Exclusivo

1 en $a o $b, pero no en ambos.

~ $a No Se invierten los bits (se cambian 1 por 0 y viceversa.) p y )

$a << $b Desp. Izq. Desplaza $b posiciones a la izquierda todos los bits de $a. D l $b i i l

$a >> $b Desp. Drch. Desplaza $b posiciones a la derecha todos los bits de $a.

Page 18: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Operadores lógicos.p g

ió b l dOperación Nombre Resultado $a and $b Y Cierto si $a y $b son ciertos. $a or $b O Cierto si $a o $b es cierto. $a or $b O Cierto si $a o $b es cierto.

$a xor $b O Exclusivo. Cierto si $a o $b es cierto, pero no ambos.

! $a No Cierto si $a es falso ! $a No Cierto si $a es falso. $a && $b Y Cierto si $a y $b son ciertos. $a || $b O Cierto si $a o $b es cierto. $ || $ $ $

Page 19: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

A i ió i ld d id tid dAsignación, igualdad e identidad.

OperaciónNombre Resultado OperaciónNombre Resultado

$a = $b Asignación Asigna el valor de una variable o expresión del segundo término a la variable del primer término.

$a == $b Igualdad Compara si el valor de los dos operandos es el mismo operandos es el mismo.

$a === $b Identidad Compara si el valor es el mismo y, además, el tipo coincide.

Page 20: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Comparaciones.pOperación Nombre Resultado

$a != $b No igual Cierto si el valor de $a no es igual al de $b.

$a !== $b No idéntico Cierto si $a no es igual a $b, o

$a !== $b No idéntico si no tienen el mismo tipo.

$a < $b Menor que Cierto si $a es estrictamente menor que $b.

$a > $b Mayor que Cierto si $a es estrictamente mayor que $b.

$a <= $b Menor o igual que Cierto si $a es menor o igual

$a <= $b Menor o igual que que $b.

$a >= $b Mayor o igual que Cierto si $a es mayor o igual que $b.

Page 21: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Estructuras de controlifif elseifelseif elseelse

if (expresion1) {

if if …… elseif elseif …… elseelseif (expresion1) {

comandos1} }elseif (expresion2) {

comandos2} else {

comandosElsecomandosElse}

Page 22: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Estructuras de controlwhilewhile yy dodo whilewhilewhilewhile y y do do …… whilewhile

while (expresión) {

comandos}

do {

comandos} while (expresión);

Page 23: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Estructuras de controlff

for (expresión1; expresión2; expresión3)

forfor( p ; p ; p )

{comandos

}}

$factorial5 = 1;f ($i 2 $i 5 $i )for ($i = 2; $i <= 5; $i++ ) {

$factorial5 *= $i;}

Page 24: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Estructuras de controlforeachforeach

foreach (array as variable) {

foreachforeach{

comandos}

$a = array (1, 2, 3, 17);foreach ($a as $v){

print "Valor actual de \$a: $v.\n";}

// Valor actual de $a: 1// Valor actual de $a: 2// Valor actual de $a: 3// $ 1// Valor actual de $a: 17

Page 25: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

E d lEstructuras de controlswitchswitch

switch (variable) {

switchswitchswitch ($i) {

case 1:{case valor1:

comandos1

case 1:echo “Código del 1”;

case 2:case valor2:

comandos2...

case 2:echo “Código del 2”;

case 3:case valorN:

comandosNdefault:

echo “Código del 3”;break;

default:comandosDefault

}

case 4:echo “Código del 4”;

}

Page 26: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Cierto o falsoV l NV l N éé iiValores NumValores Numééricosricos

$x = 1; // $x if( $x ) // se evalúa a cierto

$x = 0; // $x definida como el entero 0if( $x ) // se evalúa a falso

Page 27: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Cierto o falsoStringsStrings$x = "hello"; // asignamos una cadena a $x

StringsStrings

if( $x ) // se evalúa a cierto

$x = ""; // cadena vacíaif( $x ) // evalúa a falso

// Excepción:// Excepción:$x = "0"; // cero en una cadenaif( $x ) // evalúa a falso

// (se convierte a entero)// (se convierte a entero)

Page 28: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Cierto o falsoArraysArrays

$x = array(); // $x es un array vacío

ArraysArrays

$x = array(); // $x es un array vacíoif( $x ) // se evalúa como falso

$ ( " " "b" " " )$x = array( "a", "b", "c" ); if( $x ) // se evalúa a cierto

Page 29: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

FuncionesD l ióD l ióDeclaraciónDeclaración

function nombre ($arg_1, $arg_2, ..., $arg_n) {

comandoscomandosreturn $salida;

}

Page 30: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Funcionesf ti f t i l ($ l ) {Ej lEj l function factorial ($valor) {

if ($valor < 0) {return –1; // Error

}

EjemploEjemploif ($valor == 0 ) {

return 1;}

if ($ l 1 || $ l 2) {if ($valor == 1 || $valor == 2) {return $valor;

}

$ret = 1;$ret = 1;for ($i = 2; $i <= $valor; $i++)

{$ret = $ret * $i;

}$return $ret;

}

$factorial5 = factorial(5);

Page 31: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

FormulariosI t ió PHPI t ió PHP

<form action="accion php" method="POST">

Interacción con PHPInteracción con PHP<form action= accion.php method= POST >Su nombre: <input type=text name=nombre><br>Su edad: <input type=text name=edad><br><i t t b it><input type=submit></form>

H l <? h $ POST[` b `]?>

Posible código de accion.php:

Hola <? echo $_POST[`nombre`]?>. Tienes <? echo $_POST[‘edad`]?> años.

Page 32: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

FormulariosOpcionesOpciones múltiplesmúltiples

<form action="accion1.php" method="POST">

OpcionesOpciones múltiplesmúltiples

<select multiple name=menu><option>Tortilla <option>Paella<option>Fabada <option>Lentejasp p j</select><input type=submit></form>

<?phpecho "Su elección:<br>";foreach($_POST[`menu`] as $plato) {{

echo "$plato<br>\n";}

?>?>

Page 33: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

C kiCookiesPara enviar una cookie:

int setcookie (string nombre [, string valor[, int fin [, string camino[, string dominio[, int seguro]]]]])

setcookie(“PruebaCookie”, “expiraré dentro de una hora”,time() + 3600);

setcookie(“PruebaCookie”, “”, time());

Se ha recibido la cookie <? echo $ COOKIE[‘PruebaCookie’] ?>

Para procesarlas:

$_COOKIE[ PruebaCookie ] ?>

Page 34: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

CadenasComparaciComparacióónn

i t t ( t i t 1 t i t 2)

ComparaciComparacióónn

int strcmp (string str1, string str2)int strcasecmp (string str1, string str2)

// Ejemplo:if (strcmp($a, $b) == 0) {

echo ‘iguales’;}

Page 35: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

CadenasC t ióC t ióConcatenaciónConcatenación

$$a = “Hola”;$b = “y Adios”;

$c = “$a.$b”; print “$c”; // Escribe “Hola y Adios”p y

Page 36: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

CadenasImpresiónImpresión yy formatoformatoint printf (string formato [, mixed args...])

ImpresiónImpresión y y formatoformato

string sprintf (string formato [, mixed args...])

1. Relleno2 Alineación2. Alineación3. Número de caracteres4. Precisión5. Tipo

áp

% El carácter de tanto por ciento.b Entero en binario.c Entero como carácter ASCII.d Entero en decimal.f Double en punto flotantef Double en punto flotante.o Entero en octal.s Cadena.x Entero en hexadecimal (minúsculas).X Entero en hexadecimal (mayúsculas).X Entero en hexadecimal (mayúsculas).

Page 37: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

CadenasImpresiónImpresión yy formatoformatoprintf(“%02d/%02d/%04d”, $dia, $mes, $año);

ImpresiónImpresión y y formatoformatop ( / / , $ , $ , $ );

$pago1 = 68.75;$pago2 = 54 35;$pago2 = 54.35;$pago = $pago1 + $pago2;

// echo $pago mostraría "123 1"// echo $pago mostraría "123.1"// Mostrar al menos un dígito entero y exactamente // dos decimales, rellenando con ceros

printf ("%01.2f", $pago);

Page 38: Tema 4. III –LjLenguajes de programacióión en ell servidor ...

Referencias y bibliografíay gPHP

En WWW:wwwphp net Portal web del PHPwww.php.net Portal web del PHPhttp://php.resourceindex.com/ Web con muchos scripts de PHP

D tDocumentos:http://ait.upct.es/asignaturas/ad/manuales/PHP/PHP‐mini‐es.html Resumen lenguaje PHP en castellanoh // i / i / d/ l /PHP/ h lhttp://ait.upct.es/asignaturas/ad/manuales/PHP/php_manual_es.html ‐ Manual PHP completo en castellano

http://ait upct es/asignaturas/ad/manuales/PHP/php manualhttp://ait.upct.es/asignaturas/ad/manuales/PHP/php_manual_en.pdf Manual PHP completo en inglés