GUÍA-DE-LABORATORIO-3.pdf

14
GUÍA DE LABORATORIO 3 “Funciones estándares y formularios”

Transcript of GUÍA-DE-LABORATORIO-3.pdf

Page 1: GUÍA-DE-LABORATORIO-3.pdf

GUÍA DE LABORATORIO 3

“Funciones estándares y formularios”

Page 2: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 2

LABORATORIO

Objetivos:

Escribir funciones en PHP. Utilizar las funciones predeterminadas del PHP. Recuperar valores de los formularios HTML con PHP. Equipos, Materiales, Programas y Recursos:

Sistema Operativo Windows.

Navegador Web.

Editor de texto. Introducción:

En esta unidad aprenderemos sobre las librerías estándares del PHP, como las de manejo de vectores, caracteres, tiempo, fecha, para uso de formularios, etc. Además conoceremos cómo trabajar con formularios en HTML, para recuperar y procesar los datos enviados. Seguridad:

Ubicar maletines y/o mochilas en el gabinete al final de aula de laboratorio. No ingresar con líquidos ni comida al aula de laboratorio. Al culminar la sesión de laboratorio, apagar correctamente la computadora y el

monitor. Preparación:

Los alumnos deberán realizar todos los ejercicios realizados y propuestos de esta guía de laboratorio. Procedimiento y Resultados:

Page 3: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 3

LABORATORIO

FUNCIONES

Primera función

<?php function mayor ($x, $y) { $msg = ""; if ($x > $y) { $msg = $x." es mayor que ".$y; } else { $msg = $y." es mayor que ".$x; } return $msg; } print mayor(3, 5); ?>

Paso de valores a las funciones por valor

<?php function incrementar($x){ $x = $x + 1; return $x; } $x = 10; incrementar($x); print $x; // Imprime 10 ?>

Paso de valores a las funciones por referencia

<?php function incrementar(&$x){ $x = $x + 1; return $x; } $x = 10; incrementar($x); print $x; // Imprime 11 ?>

Page 4: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 4

Parámetros por defecto en las funciones

<?php function suma ($x=1, $y) { $x = $x + 1; return $x+$y; } print suma (3); //Error: Imprime: 'Warning: Missing argument 2 for suma()' ?>

<?php function suma ($y, $x=1) { $x = $x + 1; return $x+$y; } print suma (3); // Correcto!: Imprime : '5' ?>

Ambito de las variables en las funciones

<?php $posicion = "m"; function cambiar_posicion(){ $posicion = "s"; } cambiar_posicion(); echo $posicion; ?>

Ejercicio1: Programar las siguientes funciones:

Función llamada cuadrado que calcule el cuadrado de un número.

Función llamada implicación que calcule si la implicación lógica de sus dos operandos es verdadera o falsa.

Función que devuelve la media aritmética de los números contenidos en un vector que se le pasa como argumento. (Nota: count($a) devolvería el número de elementos del vector $a).

Función que calcule el factorial de un número (el factorial de un número natural es ese número multiplicado por todos los demás números naturales menores que él, de modo que el factorial de 4 sería igual a 4*3*2*1).

Page 5: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 5

FUNCIONES DE VECTORES Búsqueda en vectores

<?php $paises = array("us", "uk", "ca", "cr", "de"); if (in_array ("us", $paises)){ print "Encontrado us <br/>"; } if (in_array("uk", $paises)) { echo "Encontrado uk <br/>"; }

?>

Búsqueda en vectores asociativos

<?php $paises = array("us" => "United States", "uk" => "United Kingdom", "ca" => "Canada", "cr" => "Costa Rica", "pe" => "Perú"); $clave = array_search('Perú', $paises); print $clave; ?>

Ordenar vectores

<?php $paises = array("us", "uk", "ca", "cr", "de"); sort($paises); while( list($key, $val) = each($paises) ){ echo "El elemento $key equivale a $val <br/>"; } ?>

Ordernar un vector asociado

<?php $paises = array("us" => "United States", "uk" => "United Kingdom", "ca" => "Canada", "cr" => "Costa Rica", "de" => "Germany"); sort($paises); // asort($paises);

Page 6: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 6

// ksort($paises); while( list($key, $val) = each($paises) ){ echo "El elemento $key equivale a $val <br/>"; } ?>

Agregar elementos a un Vector

<?php $paises = array("us", "uk", "ca", "cr", "de"); array_push($paises, "pe"); print '<pre/>'; print_r($paises); ?>

Agregar elementos a un Vector Asociativo

<?php $paises = array("us" => "United States", "uk" => "United Kingdom", "ca" => "Canada", "cr" => "Costa Rica", "pe" => "Perú"); $mas_paises = array("co" => "Colombia"); $total_paises = array_merge($paises, $mas_paises); print '<pre/>'; print_r($total_paises); ?>

Eliminar elementos de un Vector

<?php $paises = array("us" => "United States", "uk" => "United Kingdom", "ca" => "Canada", "cr" => "Costa Rica", "de" => "Germany"); unset($paises['ca']); print_r($paises); ?>

Encontrar la posición de un elemento dentro de un Vector

Page 7: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 7

<?php $paises = array("us" => "United States", "uk" => "United Kingdom", "ca" => "Canada", "cr" => "Costa Rica", "de" => "Germany"); $posicion = array_search("Canada", $paises); print $posicion; ?>

Invertir un Vector

<?php $paises = array("us" => "United States", "uk" => "United Kingdom", "ca" => "Canada", "cr" => "Costa Rica", "de" => "Germany"); $paises2 = array_reverse($paises); print_r($paises2); ?>

Ejercicio2: Crear una función que tome un vector no asociativo y lo devuelva ordenado de forma ascendente, sin duplicados y con el puntero interno apuntando al principio.

FUNCIONES DE CADENAS Substring

<?php $s = substr("hola", 1); // $s = "ola" print $s; $s = substr("hola", -1); // $s = "a" $s = substr("hola", 1, 2); // $s = "ol" $s = substr("hola", 0, -2); // $s = "ho" $s = substr("hola", 1, 52); // $s = "ola" $s = substr("hola", 1, -2); // $s = "o" ?>

Page 8: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 8

Reemplazar un string

<?php $s = substr_replace("hola", "arbol", 1, 2); // $s = "harbola" print $s; ?>

Quitar espacios en blanco

<?php $s = trim(" hola "); // $s = "hola" print $s; ?>

Convertir a mayúsculas y minúsculas

<?php $texto = "hola pepe"; $s = ucwords($texto); // $s = "Hola Pepe" $s = strtolower($texto); $s = strtoupper($texto); print $s; ?>

Obtener la longitud de la cadena

<?php $n = strlen("hola"); // $n = 4 print $n; ?>

Manejo de cadenas con HTML

<?php $s = addslashes("'hola'"); // $s = "\'hola\'" print $s; ?>

Convertir los \n en <br/>

<?php echo nl2br("Aqui sucede un salto de\nlinea"); ?>

Convertir caracteres especiales a entidades HTML

<?php echo htmlspecialchars("Texto de \" prueba \". Este es un ampersand & "); ?>

Page 9: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 9

FUNCIONES DE TIEMPO Y FECHA Mostrar la hora actual (Número de segundos transcurridos desde las 00:00:00 del 1 de enero de 1970 GMT)

<?php print time(); ?>

Formatos de Fecha y Hora

<?php date("d-m-Y"); // 07-04-2007 date("H:i:s"); // 14:30:22 date("Y"); // 2007 date("YmdHis"); // 20070407143022 date("d/m/y H:i a"); // 07/04/07 14:30 pm date("d-m-Y H:i", time()); // el momento actual ?>

Función restar días

<?php function restarDias($numdias) { list($hora, $min, $seg, $dia, $mes, $anno) = explode( " ", date("H i s d m Y")); $d = $dia - $numdias; $fecha = date("d-m-Y", mktime($hora, $min, $seg, $mes, $d, $anno)); return $fecha; } $resultado = restarDias(2); print $resultado; ?>

Verificar una fecha

<?php if (checkdate(2, 31, 2007)) { echo "La fecha es correcta"; } else { echo "La fecha es incorrecta"; } ?>

Page 10: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 10

Ejercicio3: Crear una función que, dado un día, mes y año, devuelva verdadero si dicha fecha está entre el día actual y 30 días después de la fecha actual (inclusive).

FUNCIONES DE ENTRADA Y SALIDA Leer un archivo

<?php //abre un archivo e imprime cada línea $archivo = fopen("data.txt" , "r"); if ($archivo) { while (!feof($archivo)) { $linea = fgets($archivo, 255); echo $linea . “<br/>”; } } fclose ($archivo); ?>

Escribir en un archivo

<?php //abre un archivo y escribe en él $archivo = fopen("data.txt" , "w"); if ($archivo){ fputs ($archivo, "Curso de PHP"); } fclose ($archivo); ?>

Verificar si un archivo existe

<?php if (file_exists("data.txt")){ echo "El archivo existe"; } else { echo "El archivo NO existe"; } ?>

Copiar archivo

<?php if (copy("data.txt", "data_backup.txt")) echo "El archivo ha sido copiado con éxito"; else echo "El archivo NO se ha podido copiar";

Page 11: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 11

?>

Ejercicio4: Escribir una función que lee un archivo compuesto por direcciones de correo electrónico, una por línea y devuelva un vector con esas líneas.

MANEJO DE FORMULARIOS HTML CON PHP

Script que recupera los datos del formulario recupera.php

<?php if ( isset ( $_POST['enviar'] )) { echo "<b>RECUPERANDO LOS DATOS:</b><p>\n"; echo "Hola <b>" . $_POST['nombre'] . "</b> que tal estás<BR>\n"; echo "Eres " . $_POST['sexo'] . "<BR>\n"; echo "Tienes " . $_POST['edad'] . "<BR>\n"; echo "Tu sistema favorito es " . $_POST['sistema'] . "<BR>\n"; if ( isset ( $_POST['futbol'] ) ) { echo "Te gusta el futbol <BR>\n"; } else { echo "NO te gusta el futbol <BR>\n";

Page 12: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 12

} if ( $_POST['aficiones'] != "" ) { echo "Tus aficiones son: <BR>\n"; echo nl2br($_POST['aficiones']); } else { echo "NO tienes aficiones <BR>\n"; } } ?>

Ejercicio5: Crear un formulario que pida a un cliente sus datos. Estos serán: nombre, apellidos, nombre de usuario, contraseña (pedirla dos veces), dirección, ciudad, Codigo Postal, País, teléfono y dirección de correo electrónico. Escribir todos estos datos en un archivo. Debe ir todo el mecanismo en un sólo archivo en PHP. Validar formularios (del ejercicio anterior)

<?php $error = ""; if (isset($_POST['enviar'])) { if (!$_POST['nombre']) $error .= "Tendrá usted un nombre, digo yo.<br>"; if (!$_POST['aficiones']) $error .= "No creo que sea usted tan aburrido, algo hará, seguro.<br>"; print $error; } if ($_POST['enviar'] && !$error) { echo "<b>RECUPERANDO LOS DATOS:</b><p>\n"; echo "Hola <b>" . $_POST['nombre'] . "</b> que tal estás<BR>\n"; echo "Eres " . $_POST['sexo'] . "<BR>\n"; echo "Tienes " . $_POST['edad'] . "<BR>\n"; echo "Tu sistema favorito es " . $_POST['sistema'] . "<BR>\n"; if ($_POST['futbol']) { echo "Te gusta el futbol <BR>\n"; } else { echo "NO te gusta el futbol <BR>\n"; } if ($_POST['aficiones'] != "") { echo "Tus aficiones son: <BR>\n"; echo nl2br($_POST['aficiones']); } else { echo "NO tienes aficiones <BR>\n"; } } ?>

Page 13: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 13

Función para validar Correos

function validar($email) { return eregi('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.' . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email); }

Ejercicio6: Vamos a incorporar nuevas reglas de validación a nuestro formulario de nuevo cliente (del ejercicio anterior):

El nombre, apellidos, país, teléfono y dirección de correo electrónico deben ser rellenados obligatoriamente.

La dirección de correo electrónico debe ser válida.

El teléfono debe tener más de 9 caracteres.

Si el usuario lo rellena, el código postal debe tener 5 caracteres. La página deberá mostrar todos los errores que haya en el formulario.

SUBIR ARCHIVOS AL SERVIDOR Formulario para subir archivos

<FORM ENCTYPE="multipart/form-data" ACTION="subir_archivo.php" METHOD="post"> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000"> <INPUT NAME="archivo" TYPE="file"> <INPUT TYPE="submit" VALUE="Subir Archivo"> </FORM>

Script PHP que sube el archivo al servidor

<?php if ( isset ($_FILES['archivo']['tmp_name'])) { $uploaddir = 'C:/tools/Apache2/htdocs/ '; $uploadfile = $uploaddir. $_FILES['archivo']['name']; $maxsize = '100000'; if (move_uploaded_file($_FILES['archivo']['tmp_name'], $uploadfile)){ print 'archivo subido correctamente: <br>'; print_r ($_FILES); } else { print 'Error, algo no anda bien.<br>'; } } ?>

Page 14: GUÍA-DE-LABORATORIO-3.pdf

Universidad Nacional del Santa Laboratorio4-Fundamentos del Lenguaje PHP

EAPISI Dra. Diana Cecilia Muñoz Casanova –[email protected] Pág. 14

Ejercicio7: Al ejercicio anterior, vamos a incorporarle la posibilidad de que el cliente suba una foto. Esta posibilidad será opcional pero, si se emplea, se deberá dar error si el archivo supera los 100Kb. Si todo eso se cumple, el archivo con la foto se guardará en el mismo directorio donde esté el script. Conclusiones: En la presente sesión, se detalló la creación de funciones PHP. Además, se utilizó algunas funciones estándares que trae el PHP. Finalmente, se detalló la forma cómo recuperar valores de los formularios HTML.