ASIX – Módulo 9
UF 1: Lenguaje de guión de servidor
Formularios La verdadera potencia del lenguaje reside en la aplicación de las técnicas aprendidas a través de varias páginas Web, pasando información de unas a otras.
Argumentos GET Los argumentos GET pasan la información como parte de la URL. Cuando se utilice esta forma de trabajar, las parejas de variable / valor podrán verse en la casilla de dirección del navegador. Ejemplo: formulario.php?variable1=Hola Mundo&variable2 = 1234
El array $_GET es considerado en PHP una variable súper-global. Ésta almacena todas las variables pasadas entre páginas mediante el método GET. Para extraer el valo valorr de una una vari variab able le pasa pasada da por por este este méto método do sólo sólo hay hay que que escr escrib ibir ir $_GET ["nombre_variable"] en la página que recibe los datos.
Formularios Formularios con GET La forma más utilizada para recoger información acerca de los usuarios es emplear formularios HTML. El siguiente código muestra cómo recoger información: Ejemplo FormularioGET.php: FormularioGET.php:
F >For ormu mula lari rio o
-
Enví En vío o
de
dato da tos s
con co n
el
méto mé todo do
GET Introduzca sus datos personales:
Hay varios aspectos a tener en cuenta. Lo primero es que el apartado action de la etiqueta
6
ASIX – Módulo 9
UF 1: Lenguaje de guión de servidor
Cuand Cuando o el formul formulari ario o es envia enviado, do, PHP PHP detec detectar tará á automá automátic ticame amente nte que que se está está descargando un archivo y lo colocará en un directorio temporal en el servidor. Dicho directorio será que el que esté indicado en el archivo de configuración php.ini, o en su defecto en el directorio temporal del sistema. Cuando PHP detecta que se está descargando un archivo crea varias variables con el prefijo del nombre del archivo pero con distintas terminaciones. terminaciones.
$_FILES['archivo']['error'] $_FILES['archivo']['name'] $_FILES['archivo']['tmp_name'] $_FILES['archivo']['type'] $_FILES['archivo']['size']
Si el proceso de descarga no ha sido correcto la variable archivo tomará el valor none y size será 0, y si el proceso ha sido correcto, pero la variable $_FILES['archivo'] ['size'] da 0, quiere decir que el archivo a descarga supera el tamaño máximo indicado indicado por MAX_FILE_SIZE. Una vez descargado el archivo, lo primero que debemos hacer es moverlo a otro lugar, pues sino se hace nada con él, cuando acabe la ejecución de la página se borrará. Las matrices que manejan los ficheros son asociativas de dos índices. El primero (el de las filas) contiene el nombre que se ha dado en el formulario a cada campo de fichero (puede haber más de uno en un mismo formulario). Dentro de cada fila encontramos otro índice con las propiedades del fichero, como el nombre, tamaño, tipo… Las propiedades que definen un archivo enviado al servidor son las siguientes:
PROPIEDAD error name tmp_name
type size
CONTENIDO
Indica si se ha producido un error en el envío del fichero. Si todo ha ido correctamente, esta propiedad almacena el valor 0. Si se ha producido un error, el valor será diferente de 0. El nomb nombre re del del arch archiv ivo, o, tal tal como como lo tien tiene e alma almace cena nado do el usuario en su ordenador. Es un nomb nombre re temp tempor oral al que que usa usa PHP PHP para para la gest gestió ión n provisional del archivo, hasta que lo almacene en el disco del servidor, lo envíe por correo electrónico a donde corr corres espo pond nda, a, o cual cualqu quie ierr otra otra acci acción ón que que le haya hayamo moss programado al script. Almacena el tipo de fichero que se ha enviado. Puede ser una imagen, audio, vídeo, texto plano, etc. El peso del archivo en bytes.
7
ASIX – Módulo 9
UF 1: Lenguaje de guión de servidor
Ejemplo enviarFichero1.php: Ficheros - S_FILES
Ejemplo enviarFichero2.php: $valor){ echo ("Propiedad: $clave ---- Valor: $valor
"); } ?>
En este script se emplea un bucle foreach para recorrer cada uno de los elementos de una matriz que, a su vez, es el elemento “fichero” de la matriz $_FILES. Ejemplo enviarFichero.php: "; echo "Tamaño: ". $_FILES['archivo']['size']." bytes
"; echo "Fich. Tmp.: ".$_FILES['archivo']['tmp_name']."
"; echo "Tipo: ". $_FILES['archivo']['type']."
"; echo "Error: ". $_FILES['archivo']['error']."
"; if(!is_dir("descarga/")){//Comprueba si existe el directorio mkdir("descarga/", 0700); //Crea el directorio } $carpetaDestino="descarga/".$_FILES['archivo']['name']; if(move_uploaded_file($_FILES['archivo']['tmp_name'], $carpetaDestino)){ echo "El archivo se ha copiado a la carpeta de destino
"; }else{ echo "No se ha podido copiar el archivo a la carpeta de destino
"; } $tipo=$_FILES['archivo']['type']; $barra=strpos($tipo, "/"); $cadena_extraida=substr($tipo,0,$barra);
8
ASIX – Módulo 9
UF 1: Lenguaje de guión de servidor
$extension="image"; if (strcmp($extension,$cadena_extraida) == 0){ echo ""; } }elseif($_FILES['archivo']['name'] != "" && $_FILES['archivo'] ['size'] == 0){ echo "El tamaño del archivo es superior al máximo
"; }else{ echo "No ha elegido un archivo para mover
"; } }//Fin de isset else{ ?>
En este script se recoge un archivo del formulario y se muestra los datos del archivo por pantalla, si el tamaño supera el máximo mostrará un error, si no se carga ningún archivo también mostrará un error, si la carga del archivo se realiza con éxito y no se supera el tamaño se mostrarán los datos del archivo y en caso de que sea una imagen imagen,, se mostra mostrará rá la image imagen. n. Se puede puede obser observar var una nueva nueva funció función n llama llamada da move_uploaded_file(), esta función se encarga de mover un archivo cargado a una nueva ubicación. bool move_uploaded_file (string $nombre_archivo , string $destino)
Realiza un chequeo para asegurar que el archivo indicado por nombre_archivo sea un archivo cargado válido. Si el archivo es válido, será movido al nombre de archivo dado por destino. nombre_archivo - El nombre del archivo cargado. Destino - El destino del archivo a mover.
Si nombre_archivo no es un archivo cargado válido, entonces no se tomará ninguna acción, y move_uploaded_file() devolverá FALSE. Si nombre_archivo es un archivo cargado válido, pero no puede ser movido por alguna alguna razón, razón, no se tomará tomará ninguna ninguna acción acción,, y move_uploaded_file() devolverá FALSE. Si el archivo de destino ya existe será sobrescrito.
9
ASIX – Módulo 9
UF 1: Lenguaje de guión de servidor
Variables súper-globales Las arrays súper-globales sirven para almacenar los valores que se pasan de unas páginas a otras, se almacenan en el ordenador del usuario o en el servidor. En PHP 5 el uso de estas variables se hace obligatorio para recuperar todos los valores. Las variables a utilizar son:
$_GET: Almacena las variables pasadas por GET de un formulario. $_POST: Almacena las variables pasadas por POST de un formulario. $_COOKIE: Guarda los valores que están almacenados en cookies. $_SESSlON: Guarda las variables que se pasan entre sesiones. $_SERVER : Contiene numerosos valores relativos al servidor. $_FILES: Almacena los archivos que enviemos a través de un formulario f ormulario..
10