sábado, 23 de agosto de 2014

Las variables superglobales en PHP - 2 de 2



5. $_COOKIE

Una cookie es un archivo que contiene información que se almacena en el equipo del visitante. Cada navegador utiliza sus propias cookies. Se pueden almacenar durante varios meses y, por ejemplo, permite mostrar automáticamente su nombre de usuario cuando vuelve a un sitio Web. No almacene información crítica ya que el usuario puede acceder fácilmente a una parte de estos archivos. Por otro lado, si una persona prohíbe las cookies en su navegador, su sitio Web no le funcionará.

$_COOKIE también es una tabla global; por lo tanto, es válido en todas las páginas de su sitio Web.

Por ejemplo, el siguiente código en la página prueba.php:

<?php
$_COOKIE[’nombre’] = ’Juan’;
echo "El nombre en cookie es:".$_COOKIE[’nombre’];
?>

Da como resultado:

El nombre en cookie es:Juan

La página prueba.php contiene un botón que envía a la página mostrar_cookie.php. En esta página el código es:

<?php
echo "El nombre en cookie siempre es:".$_cookie[’nombre’];
?>

Da como resultado:

El nombre en cookie siempre es:Juan

También puede utilizar la siguiente sintaxis para crear una cookie:

<?php
setcookie("nombre","Juan");
//¡Recargar la página!
if (isset($_COOKIE[’nombre’])) { //comprueba si la cookie está
presente
echo "El nombre en cookie es:".$_COOKIE[’nombre’];
}
?>

Da como resultado:

El nombre en cookie es:Juan

Tenga cuidado al recargar la página para que aparezca la cookie.

La instrucción setcookie() permite pasar como argumento el tiempo de expiración de la cookie, es decir, el tiempo necesario antes de que desaparezca de su equipo.

Este tiempo se expresa en segundos con la función time(), que reenvía el tiempo actual en segundos y el tiempo en segundos tras el cual su cookie se eliminará. Si no marca un tiempo de expiración, la cookie se destruirá cuando se cierre el navegador.

Por ejemplo:

<?php
$tiempo_expiracion = 365 * 24 * 3600; //tiempo en segundos relativo
a 1 año
setcookie("nombre","Juan",time()+$tiempo_expiracion);
//¡Recargar la página!
if (isset($_COOKIE[’nombre’])) { //comprueba si la cookie está
presente
echo "El nombre en cookie es:".$_COOKIE[’nombre’];
}
?>

Da como resultado:

El nombre en cookie es:Juan

Esta cookie es válida durante un año en su navegador, salvo que decida eliminar manualmente todas las cookies de su navegador.

De momento hemos visto cómo se almacena una cadena de caracteres o un número. También puede almacenar una cookie en una tabla. Solo tiene que serializar, es decir, transformar la tabla en una cadena de caracteres. Para mostrar los valores nuevamente, deberá deserializar.

Por ejemplo:

<?php
$tabla = array(’Juan’,’Roberto’,Ana);
$tiempo_expiracion = 365 * 24 * 3600; //tiempo en segundos relativo
a 1 año
$cadena_serializada = serialize($tabla); //serialización de la tabla
setcookie("serializa",$cadena_serializada,time()+$tiempo_expiracion);
//¡Recargar la página!
if (isset($_COOKIE["serializa"])) { //comprueba si la cookie está
presente
$nueva_tabla = unserialize($_COOKIE["serializa"]);//deserializa
print_r($nueva_tabla); //muestra los valores de la tabla
}
?>

Da como resultado:

Array ( [0] => Juan [1] => Roberto [2] => Ana )


6. $_FILES

$_FILES es una tabla asociativa que contiene información de archivos que se han transmitido al servidor Web.

Esta tabla contiene el nombre, el tipo, el nombre temporal, el error y el tamaño del archivo que se ha enviado.

Por ejemplo:

Veamos una página elección_imagen.php que permite elegir una imagen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejercicio sobre archivos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
</head>
<body>
<form action="upload.php" method="POST"
enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<p>Seleccione una foto con un tamaño inferior a 2 MB.</p>
<input type="file" name="photo">
<br />
<input type="submit" name="ok" value="Enviar">
</form>
</body>
</html>

Da como resultado:


No olvide el código enctype="multipart/form-data" en el formulario; de lo contrario, no se transmitirá el archivo.

Observe también el campo oculto cuyo nombre es MAX_FILE_SIZE. Este campo sirve para definir el tamaño máximo del archivo que va a transmitir. Pero tenga cuidado, ya que no todos los navegadores tienen en cuenta este campo; por lo tanto, por seguridad se recomienda configurar este tamaño máximo en el archivo PHP.ini introduciendo upload_max_file-size = 2M. Si supera este límite, el servidor Web devuelve un error. El archivo PHP.ini también permite configurar otras opciones relativas a archivos que se han transmitido. La propiedad file_uploads permite autorizar o no el envío de archivos. La propiedad upload_tmp_dir permite definir el directorio temporal que almacena el archivo que se ha transmitido. La propiedad post_max_size permite definir el tamaño máximo de los datos que ha enviado el formulario (imagen + texto). La propiedad post_max_size siempre tiene que ser mayor que upload_max_filesize.

Observe el código de la página upload.php a la que se llama en la acción del formulario y que permite recibir toda la información sobre el archivo que se transmite.

<pre><?php print_r($_FILES); ?></pre>

En el siguiente ejemplo, supongamos que elige la imagen Hydrangeas.jpg:

Array
(
[photo] => Array
(
[name] => Hydrangeas.jpg
[type] => imagen/pjpeg
[tmp_name] => C:\Program Files\EasyPHP-DevServer-13.1VC11\
binarias\tmp\php2AO.tmp
[error] => 0
[size] => 595284
)
)

Si se produce un error y desea mostrar el tipo de error y a continuación mover el archivo a un directorio específico:

<?php
if ($_FILES[’photo’][’error’]) {
switch ($_FILES[’photo’][’error’]){
case 1: // UPLOAD_ERR_INI_SIZE
echo "El tamaño del archivo supera el límite permitido
por el servidor (argumento upload_max_filesize del archivo
php.ini).";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo " El tamaño del archivo supera el límite permitido
por el formulario (argumento post_max_size del archivo php.ini).";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "El envío del archivo se ha interrumpido durante
la transferencia.";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "El tamaño del archivo que ha enviado es nulo.";
break;
}
}
else {
//si no hay error entonces $_FILES[’nombre del_archivo’][’error’] es 0
echo "No hay error en la carga del archivo.<br />";
if ((isset($_FILES[’photo’][’name’])&&($_FILES[’photo’][’error’] ==
UPLOAD_ERR_OK))) {
$ruta destino = ’archivos/’;
//desplazamiento del archivo del directorio temporal (almacenado
//por defecto) al directorio de destino con la función
//move_uploaded_file($archivo_uploaded,
$carpeta_nombre_archivo_destino)
move_uploaded_file($_FILES[’photo’][’tmp_name’],
$ruta_destino.$_FILES[’photo’][’name’]);
echo "El archivo ".$_FILES[’photo’][’name’]." se ha copiado
en el directorio archivos";
}
else {
echo "El archivo no se ha podido copiar en el directorio
archivos.";
}
}
?>

Da como resultado:

No hay error en la carga del archivo
El archivo Hydrangeas.jpg se ha copiado en el directorio archivos



Espero haber ayudado en algo. Hasta la próxima oportunidad!







No hay comentarios:

Publicar un comentario

       

Etiquetas

Accediendo a datos con ADO .NET (31) Acceso a la red (30) Algoritmo (34) Algoritmos en JAVA (2) Ampliación de clases (2) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (3) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (10) Aprendiendo a desarrollar en Windows 8 (5) Aprendiendo UML en 24 Horas (Autor : Joseph Schmuller ) (30) Arquitectura (29) Arquitectura del Computador (3) Arquitectura del Computador - Historia de la informática (1) Asignación de direcciones IP (23) Aspectos fundamentales de bases de datos (5) Auditoría de la dirección (2) Auditoría de Sistemas (3) Auditoría Informática - Un enfoque práctico - Mario G . Piattini y Emilio del Peso (7) Avanzado (23) Base de Datos (67) Básico (23) Bios (29) Business Productivity Online Suite - BPOS (3) Capa de Red (22) Capa de Transporte (16) Capítulo 1 - Documentos HTML5 (6) Capítulo 10. API Web Storage (2) Capítulo 11. API IndexedDB (4) Capítulo 12. API File (1) Capítulo 2. Estilos CSS y modelos de caja (7) Capítulo 3. Propiedades CSS3 (4) Capítulo 4. Javascript (6) Capítulo 5. Video y audio (6) Capítulo 6. Formularios y API Forms (8) Capítulo 7. API Canvas (5) Capítulo 8. API Drag and Drop (2) Capítulo 9. API Geolocation (2) CCNA1 v5.0 (239) CCNA1 v6.0 (23) CCNA2 v5.0 (26) CCNA3 v5.0 (25) CCNA4 v5.0 (23) CD-ROM (3) Chapter 1 How does Xamarin.Forms fit in? (7) Chapter 2 Anatomy of an app (5) Cisco (341) Cloud Computing (3) CNNA v5.0 Routing & Switching (260) CNNA v6.0 Routing & Switching (2) Codigo (2) Computadora (32) Configuración (29) Configuración de un sistema operativo de red (21) Control (29) Creación de tipos de datos y tablas (3) Creación y Administración de bases de datos (3) Creando la Interface de la Aplicación Windows (50) Creating Mobile Apps with Xamarin.Forms (13) Cuenta (29) Curso (32) Curso Aprendiendo a Programar (25) Datos (3) Desarrollando en Windows 8 - AVANZADO (2) Desarrollando en Windows 8 - BÁSICO (3) Desarrollando en Windows 8 - INTERMEDIO (2) Desarrollo (2) Desarrollo .Net (21) Desarrollo avanzado de Windows Store Apps usando C# (1) Desarrollo basado en conceptos de Ingeniería de Software para Visual Studio (2) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (37) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (Autor: Luis Dueñas Huaroto) (29) Desarrollo en Microsoft Visual Studio (44) Desarrollo en Microsoft Visual Studio - AVANZADO (15) Desarrollo en Microsoft Visual Studio - BÁSICO (14) Desarrollo en Microsoft Visual Studio - INTERMEDIO (18) Desarrollo en Windows Phone 8 (13) Diagnostico (4) Diagrama (3) Diagramas de actividades (2) Diagramas de colaboraciones (2) Diagramas de secuencias (2) Digital (2) Diplomado (2) Disco (29) Disco Duro (4) Diseño de aplicaciones de Windows 8 en HTML 5 (7) Dispositivos Electrónicos (11) Doctorado (2) Ejemplos de algoritmos (27) El camino hacia el CSS3 (3) El diseño web flexible (6) El elemento de diseño Canvas (3) El enfoque de los sistemas (3) El flujo de un programa (2) El gran libro de HTML5 - CSS3 y Javascript - Autor: Juan Diego Gauchat (55) El principio de organicidad (7) Electrónica (2) Elementos de un sistema (5) Empresas (2) Entrada y salida (4) Entropía y neguentropía (7) Estrategia (2) Estructura de un programa Java (12) Estructuras de almacenamiento (10) Estructuras de control (6) Estructuras de las tablas en SQL Server (2) Estructuras fundamentales de los datos (2) Ethernet (21) Evolución y Familias de los Microprocesadores (15) Exámen (23) Exploración de la red (23) Extensión de clases (4) Facebook (4) Familia Intel (15) Forefront (8) Función (3) Funciones de una red (12) Funciones de una red informática (1) Fundamentos de C# para absolutos principiantes (17) Fundamentos de programación en Java (50) Generaciones de la computadora (5) Gestión (3) Gestión de riesgos - Auditoría de Sistemas (1) GONZALO MARTÍNEZ (1) Grupos Facebook (1) Harvard (29) Historia de las computadoras (11) HTML5 y CSS3 - Autor: Christophe Aubry (99) HTML5 y CSS3 aplicadal texto (7) HTML5 y CSS3 para los formularios (15) Imágenes (2) Implementación de Windows 7 (11) Información (31) Informática (29) Ingeniería (4) Instalar (29) Inteligencia (2) Inteligencia de Negocios con SQL Server (3) Intermedio (23) Internet (29) Internet Explorer 9 (3) Introducción a ASP.NET 5 (8) Introducción a Java (7) Introducción a jQuery (8) Introducción a la Auditoría de Sistemas (2) Introducción a la teoría general de sistemas (Oscar Johansen Bertoglio) (39) Introducción a Networking (2) Introducción a Window Forms (5) Introducción al acceso a datos con ADO .NET (9) Investigación de Operaciones (12) Java (52) Jump Start de consultas en las bases de datos de Microsoft SQL Server 2012 (8) La definición de un Sistema (6) La evolución del HTML y del CSS (3) La nueva sintaxis HTML5 (12) LA QUINTA DISCIPLINA en la práctica (Autor : Peter Senge) (28) Las animaciones en CSS3 (5) Las transformaciones CSS3 (11) Las transiciones con CSS3 (8) Licenciamiento Microsoft (3) Local Area Network (LAN) - Red de Area Local (2) Lógico (2) Los elementos de la estructura en html5 (9) Los elementos multimedia: audio y vídeo (2) Los estilos de caja en CSS3 (13) Los nuevos selectores de CSS3 (6) Maestría (2) Mantenimiento de Mouse y Teclado (2) Manual de Microsoft SQL Server - Full Transact SQL (68) Manual de soporte técnico para escuelas sobre windows 7 (42) Marco Teorico de Investigación de Operaciones (6) Medios de Almacenamiento (11) Medios de Networking (2) Mejorando la Interface de las Aplicaciones Windows (26) Memoria Tipos y Clases (5) Método (2) Metodología (1) Microsoft (324) Microsoft Lync 2010 (7) Microsoft Silverlight 4.0 (2) Microsoft Virtual Academy (356) Modelo (2) Modelo OSI y TCP-IP (2) Modelos con poco grado de dificultad de Programación Lineal - Investigación de Operaciones (13) Modelos con razonable grado de dificultad de Programación Lineal - Investigación de Operaciones (10) Modelos de desafio de Programación Lineal - Investigación de Operaciones (5) Modelos difíciles de Programación Lineal - Investigación de Operaciones (5) Modelos Fáciles de Programación Lineal - Investigación de Operaciones (13) Modelos lineales con solver (3) Modulo (23) Movimiento (2) Mozilla (29) MS SQL Server (77) MS Virtualization para Profesionales VMware - Gestión (3) MS Virtualization para Profesionales VMware- Plataforma (4) MVA (263) Negocio (2) Nivel Avanzado Desarrollo .Net (6) Nivel Básico Desarrollo .Net (11) Nivel Intermedio Desarrollo .Net (8) Normas técnicas peruanas y su evolución - Auditoría de Sistemas (1) Nube Privada - Avanzado (6) Nube Privada - Básico (6) Nube Privada - Intermedio (6) Office 365 (3) Optimización de Escritorio (10) Optimización de Escritorio - Avanzado (4) Optimización de Escritorio - Básico (3) Optimización de Escritorio - Intermedio (3) ORACLE 10g - ADMINISTRACIÓN Y ANÁLISIS (3) Oracle 10g y el Grid Computing (3) Organización aleatoria y secuencial (1) Partes principales de la Mainboard (12) Perceptron (2) Perfil (2) Periféricos de Entrada / Salida (15) Pesi (2) PHP y MySQL - Manual de aprendizaje para crear un sitio web - Autor : Olivier ROLLET (79) Plan (2) Plataforma (29) PMBOK (24) PMBOK - Guía de los fundamentos para la dirección de proyectos (24) PMBOK - INFLUENCIA DE LA ORGANIZACIÓN Y CICLO DE VIDA DEL PROYECTO (6) PMBOK - Introducción (11) PMBOK - PROCESOS DE LA DIRECCIÓN DE PROYECTOS (5) Prevención - Herramientas e Instrumentos de Medida (9) Principios básicos de enrutamiento y switching (213) Proceso (2) Proceso de auditoría de sistemas informáticos (2) Programación en Android - Auor : Salvador Gómez Oliver (46) Programación paso a paso de C# - Autor : Nacho Cabanes (16) Protocolos y comunicaciones de red (17) Proyecto (2) Qué es un sistema (4) Red de Área Local Inalámbrica (WLAN) (4) Redes (30) Redes inalámbricas - WIRELESS - Conocimiento general (15) Redes neuronales (2) Redes y Comunicaciones (45) Reparación de Fuentes - UPS - Estabilizadores (10) Reparación de Impresoras (9) Reparación de Monitores (16) Router (29) Seguridad en la Nube (3) Seminario (23) Server (24) Sharepoint 2010 - Nivel Básico (6) Sharepoint 2010 - Niveles Avanzados (18) Sharepoint 2010 - Niveles Avanzados - Básico (8) Sharepoint 2010 - Niveles Avanzados - Intermedio (9) Sinergia y recursividad (4) Sistema (33) Sistema de Cableado Estructurado (9) Software (30) SOLUCIÓN GRÁFICA DE MODELOS DE PROGRAMACIÓN LINEALES - INVOPE (8) Soporte a Infraestructura (3) SQL (38) SQL Azure - Introducción (3) Subsistemas de control (4) Tablas (4) Tarjeta Principal del Sistema (10) Tarjetas de Interfaces (7) Tecnología (31) Tecnologías LAN (1) TEORÍA GENERAL DE SISTEMAS (1) Tic (2) Tipo (2) TML5 y CSS3 - Autor: Christophe Aubry (12) Trabajando con el Formulario (7) Un diseño HTML5/CSS3: dConstruct 2011 (3) Un diseño HTML5/CSS3: FlipThru (2) Un diseño HTML5/CSS3: The Cat Template (2) Usando Controles Windows Forms (12) Usando Herramientas de Datos de Visual Studio (6) Ventas (2) Virtualización Hyper - V Nivel Básico (5) Virtualización Hyper - V Nivel Intermedio (5) What’s New in Windows 8.1 Security (4) Window (29) Windows 7 Segunda Fase - AVANZADO (4) Windows 7 Segunda Fase - BÁSICO (6) Windows 7 Segunda Fase - INTERMEDIO (4) Windows 8 - Vista Previa (4) Windows 8.1 To Go (2) Windows Azure (3) Windows Phone 7 (2) Windows Server 2008 R2 (3) Windows Server 2012 - Gestión y Automatización (3) Windows Server 2012 R2 Essentials (7) Windows Server 2012: Almacenamiento (5) Windows Server 2012: Identidad y Acceso (4) Windows Server 2012: Revisión Técnica (7) Xamarin (1)

Páginas vistas en total según Google