Вы находитесь на странице: 1из 14

GUA DE LABORATORIO 3

Funciones estndares y formularios

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

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.

Introduccin:
En esta unidad aprenderemos sobre las libreras estndares del PHP, como las de manejo de
vectores, caracteres, tiempo, fecha, para uso de formularios, etc. Adems conoceremos
cmo 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 lquidos ni comida al aula de laboratorio.
Al culminar la sesin de laboratorio, apagar correctamente la computadora y el
monitor.

Preparacin:
Los alumnos debern realizar todos los ejercicios realizados y propuestos de esta gua de
laboratorio.

Procedimiento y Resultados:

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 2

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

LABORATORIO
FUNCIONES
Primera funcin
<?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
?>

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 3

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

Parmetros 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:

EAPISI

Funcin llamada cuadrado que calcule el cuadrado de un nmero.


Funcin llamada implicacin que calcule si la implicacin lgica de sus dos
operandos es verdadera o falsa.
Funcin que devuelve la media aritmtica de los nmeros contenidos en un vector
que se le pasa como argumento. (Nota: count($a) devolvera el nmero de
elementos del vector $a).
Funcin que calcule el factorial de un nmero (el factorial de un nmero natural es
ese nmero multiplicado por todos los dems nmeros naturales menores que l,
de modo que el factorial de 4 sera igual a 4*3*2*1).

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 4

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

FUNCIONES DE VECTORES
Bsqueda 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/>";
}
?>
Bsqueda 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);
EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 5

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

// 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 posicin de un elemento dentro de un Vector

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 6

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

<?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 funcin 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"
?>

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 7

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

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 maysculas y minsculas
<?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 & ");
?>
EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 8

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

FUNCIONES DE TIEMPO Y FECHA


Mostrar la hora actual
(Nmero 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
?>
Funcin restar das
<?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";
}
?>

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 9

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

Ejercicio3:
Crear una funcin que, dado un da, mes y ao, devuelva verdadero si dicha fecha est
entre el da actual y 30 das despus de la fecha actual (inclusive).
FUNCIONES DE ENTRADA Y SALIDA
Leer un archivo
<?php
//abre un archivo e imprime cada lnea
$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";
EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 10

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

?>

Ejercicio4:
Escribir una funcin que lee un archivo compuesto por direcciones de correo electrnico,
una por lnea y devuelva un vector con esas lneas.
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 ests<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";
EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 11

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

}
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 sern: nombre, apellidos,
nombre de usuario, contrasea (pedirla dos veces), direccin, ciudad, Codigo Postal,
Pas, telfono y direccin de correo electrnico. Escribir todos estos datos en un archivo.
Debe ir todo el mecanismo en un slo 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 ests<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";
}
}
?>

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 12

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

Funcin para validar Correos


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

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

El nombre, apellidos, pas, telfono y direccin de correo electrnico deben ser


rellenados obligatoriamente.
La direccin de correo electrnico debe ser vlida.
El telfono debe tener ms de 9 caracteres.
Si el usuario lo rellena, el cdigo postal debe tener 5 caracteres.

La pgina 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>';
}
}
?>

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 13

Universidad Nacional del Santa

Laboratorio4-Fundamentos del Lenguaje PHP

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 sesin, se detall la creacin de funciones PHP. Adems, se utiliz
algunas funciones estndares que trae el PHP. Finalmente, se detall la forma cmo
recuperar valores de los formularios HTML.

EAPISI

Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es

Pg. 14