Sunteți pe pagina 1din 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:

EPISI 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


?>

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

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).

EPISI 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);

EPISI 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

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

EPISI 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 & ");
?>

EPISI 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";
}
?>

EPISI 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";

EPISI 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";

EPISI 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";
}
}
?>

EPISI 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^_`a-
z{|}~]+\.' . '[-!#$%&\'*+\\./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>';
}
}
?>

EPISI 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.

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 14

S-ar putea să vă placă și