tema8 lenguaje php

19
Implantación de Aplicaciones Web 2º ASIR 2ª evaluación Tema 8: Lenguajes de script de servidor, PHP Introducción PHP es un lenguaje de script del lado del servidor. Otros lenguajes similares son ASP, JSP o ColdFusion. Los scripts PHP están incrustados en los documentos HTML y el servidor los interpreta y ejecuta antes de servir las páginas al cliente. El cliente no ve el código PHP sino los resultados que produce. Creado por Rasmus Lerdorf para uso personal en 1994 (PHP = PHP: Hypertext Preprocessor). Versión actual: PHP 5. Es un módulo que se añade al servidor web y fue concebido inicialmente para Apache. Es potente, fácil de aprender, de libre distribución, permite el acceso a bases de datos y otras funcionalidades orientadas a la red. Dispone de abundante soporte en la Web. Requisitos Servidor web Apache (www.apache.org ) con el módulo PHP (www.php.net ) y la base de datos MySQL (www.mysql.com ) si se desea crear páginas dinámicas Otras utilidades Herramientas para la gestión de MySQL, como PHPMyAdmin (www.phpmyadmin.net ) 1

Upload: roxana-morales

Post on 11-Aug-2015

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

Introducción

PHP es un lenguaje de script del lado del servidor. Otros lenguajes similares son ASP, JSP o ColdFusion.

Los scripts PHP están incrustados en los documentos HTML y el servidor los interpreta y ejecuta antes de servir las páginas al cliente.

El cliente no ve el código PHP sino los resultados que produce.

Creado por Rasmus Lerdorf para uso personal en 1994 (PHP = PHP: Hypertext Preprocessor).

Versión actual: PHP 5. Es un módulo que se añade al servidor web y fue concebido inicialmente para Apache. Es potente, fácil de aprender, de libre distribución, permite el acceso a bases de datos

y otras funcionalidades orientadas a la red. Dispone de abundante soporte en la Web.

RequisitosServidor web Apache (www.apache.org)con el módulo PHP (www.php.net)y la base de datos MySQL (www.mysql.com) si se desea crear páginas dinámicas

Otras utilidadesHerramientas para la gestión de MySQL, como PHPMyAdmin (www.phpmyadmin.net)Editores de PHP, como DevPHP (www.sourceforge.net), Eclipse (www.eclipse.org) o Aptana Studio (www.aptana.com)Manuales de PHP y MySQL

Probar instalación de PHPo Crear una página PHP de prueba y cargarla con el navegador o Ejemplo: prueba.php en directorio raíz de nuestro servidor, con el contenido:

<?PHP phpinfo();?>

o Ejecutar el navegador y teclear la URL http://localhost/prueba.php

1

Page 2: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

Primeros pasos

Dentro de un archivo PHP se puede alternar entre código html y código PHP. Esto nos permite realizar páginas dinámicas de forma fácil: realizando toda la estructura con html y luego agregando el contenido dinámico.

Imaginemos una página html común, pero en lugar de ser index.html es index.php. Cuando se quiera agregar código PHP habrá que hacerlo dentro de las etiquetas <?php y ?> o <? y ?>, por ejemplo:

<html> <head><title>hola mundo</title> </head><body><h1>incluir código PHP en html</h1> <p><? aquí va el código PHP ?></p> </body></html>

PHP es sensible a las mayúsculasLas instrucciones se separan con un ‘;’ como en C. La marca final ‘?>’ implica un ;Comentarios: como en C y Javascript, /* … */ (varias líneas ) y // (una línea)

/* Comentario devarias líneas */print “hola”; // Comentario de una línea

Variables

Las variables son elementos que creamos para asignarles un valor o dato específico (que puede cambiar a lo largo de nuestro archivo). En PHP, las variables se definen anteponiendo el signo $, por ejemplo:

// Definimos la variable hola la cual contiene la información hola mundo$hola = "hola mundo";

Lo ideal a la hora de programar es definir todas las variables y realizar las operaciones antes del código html y en ese código mostrar los resultados de nuestras variables. Por ejemplo, un código completo de hola mundo sería:

<$hola = "hola mundo"; ?>

<html><head><title><? echo $hola; ?></title> </head>

<body><h1>incluir código PHP en html</h1> <p><? echo $hola; ?></p></body> </html>

2

Page 3: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

La instrucción ‘echo’, al igual que ‘print’ se utiliza para mostrar mensajes:

echo: muestra una o más cadenasecho cadena1 [, cadena2…];echo “Hola mundo”;echo “Hola “, “mundo”;

print: muestra una cadena (se pueden concatenar partes con ‘.’)print cadena;print “Hola mundo”;print “Hola “ . “mundo”;

A una variable se le puede asignar cualquier tipo de información: una cadena de texto (string), números enteros (integer), un arreglo (array), true, false, null, etc;

Así mismo, a una variable que antes era de un tipo se le puede cambiar el tipo de información sin ningún problema.

Existen dos tipos de variables en php, locales y globales, locales son aquellas que se ejecutan en un único ámbito. Si defino una variable $local y a continuación uso una función que dentro contiene una variable llamada $local, van a ser consideradas como dos variables diferentes y la información asignada prioritariamente a la variable $local no se pierde.

Para crear una variable global que sí puede ser accedida desde todos los ámbitos de nuestro script se debe especificar, en caso contrario es local.

<?

global $miGlobal = “esta es una variable global”;

?>

Constantes

Las constantes, como indica su nombre, una vez definidas no varían de contenido y son globales, se pueden utilizar desde cualquier ámbito del script.

<?

define(’nombre_constante’, ‘valor_constante’);

?>

Si intentamos definir dos veces una constante, nuestro editor nos devolverá un error:<?

define(’HOLA’, ‘Hola mundo’);

define(’HOLA’, ‘Chao mundo’);

?>

Para usar una constante utilizamos el nombre que definimos en el primer término.

3

Page 4: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

SENTENCIAS CONDICIONALES

Las sentencias condicionales nos permiten ejecutar o no una serie de instrucciones, dependiendo del resultado de evaluar una condición.

Las instrucciones más frecuentes son if y switch.

Sentencia if

Si al evaluar la condición, el resultado es true (verdadera) se ejecutarán las sentencias posteriores al if, de lo contrario se ejecutarán las del else.

<?php if (condición) { Sentencias a ejecutar cuando la condición es cierta. } else { Sentecias a ejecutar cuando la condición es falsa. } ?>

También podemos utilizar elseif, que nos permite ir evaluando varias condiciones hasta que se cumpla una. Por ejemplo:

<?phpif ( $hoy == ‘Lunes’ ) {

echo ‘Hoy es Lunes, tenemos carne para almorzar’;} elseif ( $hoy == ‘Martes’ ) {

echo ‘Hoy es Martes, tenemos fideos para almorzar’;} elseif ( $hoy == 'Miercoles' ) {

echo ‘Hoy es Miercoles, tenemos estofado para almorzar';} elseif ( $hoy == 'Jueves' ) {

echo ‘Hoy es Jueves, tenemos pizza para almorzar';} elseif ( $hoy == 'Viernes') {

echo ‘Hoy es Viernes, tenemos tarta para almorzar’;} elseif ( $hoy == 'Sabado') {

echo ‘Hoy es Sabado, tenemos ravioles para almorzar’;} else ( $hoy == 'Domingo') {

echo ‘Hoy es Domingo, no almorzamos :(’;}?>

4

Page 5: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

Sentencia switch

Con la sentencia switch podemos ejecutar unas u otras instrucciones dependiendo del valor que tome la variable que estamos evaluando:

<?php switch($hoy) {case ‘Lunes’: echo ‘Hoy es Lunes, tenemos carne para almorzar’; break;case ‘Martes’: echo ‘Hoy es Martes, tenemos fideos para almorzar'; break;case ‘Miercoles’: echo ‘Hoy es Miercoles, tenemos estofado para almorzar'; break;case ‘Jueves’: echo ‘Hoy es Jueves, tenemos pizza para almorzar'; break;case ‘Viernes’: echo ‘Hoy es Viernes, tenemos tarta para almorzar'; break;case ‘Sabado’: echo ‘Hoy es Sabado, tenemos ravioles para almorzar'; break;default:

echo ‘Hoy es Domingo, no almorzamos '; break;}?>

Operadores

Al realizar nuestros scripts constantemente estamos realizando operaciones que le dan complejidad a nuestro trabajo.

OPERADORES ARITMÉTICOS

Operador Nombre Ejemplo Descripción

+ Suma 5 + 6 Suma dos números

- Resta 7 - 9 Resta dos números

* Multiplicación 6 * 3 Multiplica dos números

/ División 4 / 8 Divide dos números

% Módulo 7 % 2Devuelve el resto de dividir ambos números, en este ejemplo el resultado es 1

5

Page 6: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

++ Suma 1 $a++ Suma 1 al contenido de una variable.

-- Resta 1 $a-- Resta 1 al contenido de una variable.

OPERADORES DE COMPARACIÓN

Operador Nombre Ejemplo Devuelve cierto cuando

== Igual $a == $b $a es igual $b

!= Distinto $a != $b $a es distinto $b

< Menor $a < $b $a es menor $b

> Mayor $a > $b $a es mayor $b

<= Menor o igual $a <= $b $a es menor o igual $b

>= Mayor o igual $a >= $b $a es mayor o igual $b

Ejemplos: ejecuta los siguientes códigos:

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 8; $b = 3; echo $a + $b,"<br>"; echo $a - $b,"<br>"; echo $a * $b,"<br>"; echo $a / $b,"<br>"; $a++; echo $a,"<br>"; $b--; echo $b,"<br>"; ?> </body> </html>

6

Page 7: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 8; $b = 3; $c = 3; echo $a == $b,"<br>"; echo $a != $b,"<br>"; echo $a < $b,"<br>"; echo $a > $b,"<br>"; echo $a >= $c,"<br>"; echo $b <= $c,"<br>"; ?> </body> </html>

OPERADORES LÓGICOS (Evalúan varias comparaciones)

Operador Nombre Ejemplo Devuelve cierto cuando

&& Y (7>2) && (2<4) Devuelve verdadero cuando ambas condiciones son verdaderas.

and Y (7>2) and (2<4) Devuelve verdadero cuando ambas condiciones son verdaderas.

|| O (7>2) || (2<4) Devuelve verdadero cuando al menos una de las dos es verdadera.

or O (7>2) or (2<4) Devuelve verdadero cuando al menos una de las dos es verdadera.

! No ! (7>2) Niega el valor de la expresión.

Ejecutar el siguiente código:

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 8; $b = 3;

7

Page 8: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

$c = 3; echo ($a == $b) && ($c > $b),"<br>"; echo ($a == $b) || ($b == $c),"<br>"; echo !($b <= $c),"<br>"; ?> </body> </html>

SENTENCIAS REPETITIVAS

Muchas veces debemos realizar tares repetitivas, para ello existen una serie de sentencias, llamadas bucles:

Sentencia while

<?while ( condicion ) {

instrucciones}?>

Se ejecutarán las instrucciones enceradas entre llaves mientras se cumpla la condición.

Sentencia dowhile

<?do {

instrucciones} while ( condicion )?>

La única diferencia con while es que se ejecutan las instrucciones una vez antes de evaluar la condición, después se volverán a ejecutar mientras dicha condición sea verdadera.

Sentencia for

<?for( inicialización; condición; actualización ) {

instrucciones}?>

La inicialización se ejecuta la primera vez para dar el valor adecuado a la variable que controlará el bucle, la condición se debe cumplir para que el bucle siga ejecutándose y la actualización es una instrucción que se ejecuta al final de cada repetición y sirve para modificar el valor de la variable .

8

Page 9: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

Ejemplo:

<?php for($i=0 ; $i<10 ; $i++) { echo "El valor de i es ", $i,"<br>"; } ?>Se mostrarán diez líneas, en cada una de ellas el valor de i se habrá ido incrementando desde 0 (inicialización) hasta 9 ($i<10).

Ejercicios

1) Detecta los 7 errores:

<?php$y = 9;$suma = x + y;print("El valor de x es <i>$x<i>")<br />print("El valor de y es <i>$y</i><br />";print("La suma es <b><i>$suma</i></b><br />");?>;

2) Genera un valor aleatorio entre 1 y 100. Luego muestra si tiene 1,2 o 3 dígitos. Función a utilizar: rand (1,100)

3) Almacena en un vector o array los 10 primeros números pares. Después imprímelos, cada uno en una línea.

9

Page 10: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

FORMULARIOS

El lenguaje PHP nos proporciona una manera sencilla de manejar formularios, permitiéndonos de esta manera procesar la información que el usuario ha introducido.

Al diseñar un formulario debemos indicar la página PHP que procesará el formulario, así como el método por el que se le pasará la información a la página.

<html> <head>

<title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> Introduzca su nombre: <FORM ACTION="procesa.html" METHOD="GET"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Al pulsar el botón ‘Enviar’, el contenido del cuadro de texto es enviado a la página que indicamos en el atributo ACTION (procesa.html) de la etiqueta FORM:

En versiones anteriores a 4.2.0 PHP creaba una variable por cada elemento del FORM, esta variable creada tenía el mismo nombre que el cuadro de texto de la página anterior y el valor que habíamos introducido. Pero por razones de seguridad, a partir de entonces, para acceder a las variables del formulario hay que usar el array de parámetros $_POST[] o $_GET[] dependiendo del método usado para enviar los parámetros.

En este ejemplo se ha creado una entrada en el array $_GET[] con el índice 'nombre' y con el valor que haya introducido el navegante.

<html> <head>

<title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> El nombre que ha introducido es: <?php echo $_GET['nombre'] ?> <br> </body> </html>

10

Page 11: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

Otro ejemplo

Queremos procesar el siguiente formulario, de forma que se verifique que se han rellenado todos los campos y se envíe por email. De lo contrario, se obtendrá un mensaje de error:

<form action="contacto_script.php" method="post" id="contacto">

<label for="input_nombres">Nombre y Apellido</label><br /><input id="input_nombres" type="text" name="nombres" value="" /><br /><br />

<label for="input_email">Email</label><br /><input id="input_email" type="text" name="email" value="" /><br /><br />

<label for="input_sexo">Sexo</label><br /><select id="select_sexo" name="sexo"><option value="M">Masculino</option><option value="F">Femenino</option></select><br /><br />

<label for="textarea_mensaje">Mensaje</label><br /><textarea id="textarea_mensaje" name="mensaje" rows="5" cols="50"> </textarea><br /><br />

<input type="submit" name="submit" value="Enviar consulta" />

</form>

El script de verificación (contacto_script.php) sería el siguiente:<?php// definimos las variables o marcamos el errorif ( !empty($_POST['nombres']) ) $nombres = $_POST['nombres']; else $error = true;if ( !empty($_POST['email']) ) $email = $_POST['email']; else $error = true;if ( !empty($_POST['sexo']) ) $sexo = $_POST['sexo']; else $error = true;if ( !empty($_POST['mensaje']) ) $mensaje = $_POST['mensaje']; else $error = true;

// verificamos que no exista un error, si es así enviamos notificaciónif ( !empty($error) ) {header('Location: contacto_error.php' );die;}// definimos el cuerpo del email$cuerpo = "De: $nombres \n\rEmail: $email \n\rSexo: $sexo \n\rMensaje: \n\r$mensaje";// enviamos el emailif ( mail($email,'Recibiste un mensaje a través del formulario de

11

Page 12: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

contacto de tu sitio’,$cuerpo ) ) {header('Location: contacto_exitoso.php' );die;} else {header('Location: contacto_error.php' );die;}?>

‘contacto_exitoso.php’ y ‘contacto_error.php’ serán sendos scripts que contendrán avisos de que el contacto se ha realizado con éxito y se ha enviado un mail a su correo o ha habido algún error.

Funciones utilizadas en el script y otras:

empty($campo); pregunta si la variable campo está vacía, devolverá true o false.

mail ( $para , $asunto , $mensaje );Función de envío de correo, en el primer parámetro agregamos la dirección donde queremos que se envíe el mensaje, en el segundo parámetro ponemos el asunto y en el tercero el cuerpo, o sea el mensaje en sí.Esta función va a responder true o false, dependiendo si se pudo ejecutar correctamente.

isset ( $variable );Nos permite comprobar si una variable está definida, devolviendo true si lo está. Se puede utilizar para saber si se ha pulsado un botón.

count ( $vector );Devuelve el número de elementos que hay en un array o vector

FUNCIONES DE FECHA

En Php existen varias funciones que devuelven la fecha y hora actuales, una de ellas es date(formato); que recibe la fecha del sistema.

Esta función nos devuelve una cadena de caracteres que se corresponde con una fecha a la que se ha aplicado un determinado formato. Para definir el formato de la fecha se dispone de las siguientes opciones:

Opción Descripcióna Hace que en la hora aparezca la cadena am o pm A Hace que en la hora aparezca la cadena AM o PM d Día del mes con dos dígitos desde 01 a 31 D Día de la semana como cadena de tres letras(en inglés).Ejemplo: "Mon"

12

Page 13: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

F Nombre del mes completo como una cadena de caracteres.Ejemplo: "March" h Hace que la hora aparezca en formato 01 a 12 H Hace que la hora aparezca en formato 00 a 23 g Hace que la hora aparezca en formato 1 a 12 G Hace que la hora aparezca en formato 0 a 23 i Hace que los minutos aparezcan en formato 00 a 59 j Hace que el día aparezca en formato 1 a 31 l(L min) Día de la semana completo. Ejemplo: Monday L Escribe 0 si no es año bisiesto y 1 si lo es m Hace que el mes aparezca en formato 01 a 12 M Hace que el mes aparezca en formato 1 a 12 s Hace que los segundos aparezcan en formato 00 a 59 S Cadena de caracteres con el sufijo ordinal.Ejemplo: "th","nd". t Número de días del mes especificado de 28 a 31 U Número de segundos desde el comienzo de la "era UNIX" w Número del día de la semana de 0 a 6 Y Año con cuatro cifras y Año con dos cifras z Día del año de 0 a 365 Z Obtiene la diferencia horaria en segundos con respecto al GMT

Ejemplo:

<html><body>

La fecha de hoy es: <?php echo date( “d/m/Y”); ?></body></html>

VALIDACIÓN DE UN CHEKBOX

Los posibles valores se recogen en una variable de tipo ‘array’ o vector.

13

Page 14: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

<?php//Compruebo si vino el vector con opción elegidaif (isset($_POST['nombre_check'])){//Como sé que es un vector, calculo su tamaño para recorrerlo después$checks = $_POST['nombre_check'];$longitud = count($checks);$i = 0;//recorro cada elemento del vectorwhile ($i < $longitud){//lo muestro en la pagina o hago lo que tenga que hacer.//tener en cuenta que por cada opción tildada en el form//aquí cargará lo que pusiste en value.echo "checks[$i]";$i++;}}?>

EJEMPLO DE CHECKBOX RECOGIDO EN PHP

<form action="trataformulario.php" method="POST"> Nombre: <input type="text" name="nombre"><br> Apellidos: <input type="text" name="apellidos"><br> Email: <input type="text" name="email"> <br> Cerveza: <br> <select multiple name="cerveza[]"> <option value="SanMiguel">San Miguel</option> <option value="Mahou">Mahou</option> <option value="Heineken">Heineken</option> <option value="Carlsberg">Carlsberg</option> <option value="Aguila">Aguila</option> ... </select><br> <input type="submit" value="Enviar datos!" > </form>

Y para recoger la información y tratarla (en tratarformulario.php) actuaríamos del siguiente modo...

<?php echo "Nombre: ", $_POST["nombre"];

14

Page 15: Tema8 Lenguaje Php

Implantación de Aplicaciones Web 2º ASIR2ª evaluación

Tema 8: Lenguajes de script de servidor, PHP

echo "<br>Apellidos: ", $_POST["apellidos"]; echo "<br>E-mail: ", $_POST ["email"]; $cervezas=$_POST["cerveza"];

//recorremos el array de cervezas seleccionadas. No olvidar que la primera posición de un //array es la 0

for ($i=0;$i<count($cervezas);$i++) { echo "<br> Cerveza " , $i, ": ", $cervezas[$i]; } ?>

EJERCICIO FINAL TEMA 8

Realizar un formulario, recogido y validado en un ‘script’ de php, atendiendo a las siguientes características:

1.- El formulario debe constar de, al menos, cinco o seis elementos, siendo uno de ellos un ‘checkbox’.

2.- Validar que se hayan rellenado todos los campos (en caso del checkbox, se deberá haber marcado alguna de las opciones), de lo contrario emitir un aviso.

3.- Si no hay error, mostrar todos los datos por pantalla y/o enviar a una dirección de correo.

4.- Recoger el día de la semana utilizando alguna de las funciones definidas en php y mostrar distintas bienvenidas o comentarios dependiendo de él.

15