Professional Documents
Culture Documents
LABORATORIO
Objetivos:
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:
Preparacin:
Los alumnos debern realizar todos los ejercicios realizados y propuestos de esta gua de
laboratorio.
Procedimiento y Resultados:
EAPISI
Pg. 2
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
Pg. 3
<?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
Pg. 4
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
Pg. 5
// 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
Pg. 6
<?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
Pg. 7
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
Pg. 8
EAPISI
Pg. 9
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
Pg. 10
?>
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
Pg. 11
}
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
Pg. 12
Ejercicio6:
Vamos a incorporar nuevas reglas de validacin a nuestro formulario de nuevo cliente (del
ejercicio anterior):
EAPISI
Pg. 13
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
Pg. 14