martes, 19 de agosto de 2014

Las variables superglobales en PHP - 1 de 2



1. $GLOBALS

En el capítulo Funciones y estructuras de control - Las funciones, hemos visto que hay variables locales y globales. Estas variables tienen un alcance determinado dependiendo de dónde se declaran.

En PHP existe la tabla $GLOBALS o "superglobal" que contiene valores válidos, sea cual sea su alcance, es decir, en cualquier ubicación de la página PHP. Esta tabla tiene como índice el nombre de las variables, y como valor, el valor de las variables.

Por ejemplo:

<?php
$nombre = "Juan";
$apellido = "Gómez";
funcion concatenada() {
$GLOBALS[’nombre’] = $GLOBALS[’nombre’] . " " . $GLOBALS[’apellido’];
}
concatena(); //concatena el nombre y el apellido
echo $nombre;
?>

Da como resultado:

Juan Gómez

Si ha escrito en la función $nombre = $nombre . " " . $apellido; PHP generará un error debido a que estas variables no tienen el alcance necesario para que la función las pueda conocer.

Puede pensar que resulta más sencillo declarar solo las variables superglobales, pero no es así. Esto evita muchas confusiones a la hora de declarar las variables en modo local y sobre todo ahorra mucha memoria si muchos usuarios visitan su sitio Web de manera simultánea; cada variable $GLOBALS ocupará memoria en su servidor y correrá el riesgo de saturarse. Si utiliza variables locales, PHP liberará la memoria que ya no se utiliza.

Más adelante veremos que existen otras variables superglobales. Se escriben siempre con mayúsculas, en forma de tabla y son válidas en todas las páginas PHP.


2. $_SERVER

$_SERVER es una tabla que se crea automáticamente y que contiene información, como rutas del script, encabezamientos, etc.

Veamos parte de la información más útil:

  • $_SERVER[’REMOTE_ADDR’]: permite conocer la dirección IP del usuario que ha solicitado la página.

Por ejemplo:

<?php
echo $_SERVER[’REMOTE_ADDR’];
?>

Da como resultado:

127.0.0.1

Si está trabajando con su equipo y su servidor Web crea la dirección http://127.0.0.1 y está ejecutando esta página PHP, $_SERVER[’REMOTE_ADDR’] reenvía esta misma dirección.

  • $_SERVER[’PHP_SELF’]: permite conocer el nombre del script que se utiliza actualmente.

Por ejemplo:

<?php
echo $_SERVER[’PHP_SELF’];
?>

Da como resultado:

/prueba.php

La página PHP que contiene este código se llama prueba.php.

  • $_SERVER[’REQUEST_METHOD’]: permite conocer el método de consulta que se utiliza.

Estos métodos son: GET, POST, PUT y HEAD, y se explicarán más adelante.

Por ejemplo:

<?php
echo $_SERVER[’REQUEST_METHOD’];
?>

Da como resultado:

GET

  • $_SERVER[’QUERY_STRING’]: permite conocer la cadena de consulta que se utiliza, es decir, las variables y los valores que pasan por la URL.

Por ejemplo, si llama a la página PHP pasando como argumento una variable var igual a 1, es decir, http://127.0.0.1/prueba.php?var=1:

<?php
echo $_SERVER[’QUERY_STRING’];
?>

Da como resultado:

var=1

  • $_SERVER[’HTTP_USER_AGENT’]: permite conocer la versión del navegador y sus librerías que se utilizan para mostrar la página actual.

Por ejemplo:

<?php
echo $_SERVER[’HTTP_USER_AGENT’];
?>

Da como resultado:

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36(KHTML, Like Gecko)/ Chrome/29.0.1547.76 Safari/537.36

  • $_SERVER[’HTTP_ACCEPT_LANGUAGE’]: permite conocer el idioma que utiliza su navegador.

Por ejemplo:

<?php
echo $_SERVER[’HTTP_ACCEPT_LANGUAGE’];
?>

Da como resultado:

es_ES

  • $_SERVER[’HTTP_HOST’]: permite conocer el nombre del servidor y su dirección IP.

Por ejemplo:

<?php
echo $_SERVER[’HTTP_HOST’];
?>

Da como resultado:

127.0.0.1

Se obtiene el mismo resultado con $_SERVER[’REMOTE_ADDR’]. Cuando trabaja en modo local, lo hace como cliente y servidor al mismo tiempo.


3. $_ENV

Esta tabla contiene las variables de entorno del sistema operativo, como el nombre de usuario y del equipo. Tenga cuidado al comprobar si php.ini tiene variables_order = "EGPCS". En el siguiente capítulo explicaremos el contenido de este archivo, al que se accede a través del menú Configuration - PHP. A continuación, debe reiniciar el servidor Web una vez que guarde el archivo.

Veamos parte de la información más útil:

  • $_ENV[’USERNAME’]: permite conocer el nombre del usuario que se conecta a Windows.

Por ejemplo:

<?php
echo $_ENV[’USERNAME’];
?>

Da como resultado:

Juan Gómez

Si se conecta en Windows con este identificador.

  • $_ENV[’COMPUTERNAME’]: permite conocer el nombre del equipo de la persona que ejecuta esta página PHP.

Por ejemplo:

<?php
echo $_ENV[’COMPUTERNAME’];
?>

Da como resultado:

EQUIPO 1

  • $_ENV[’OS’]: permite conocer el sistema operativo de la persona que ejecuta esta página PHP.

Por ejemplo:

<?php
echo $_ENV[’OS’];
?>

Da como resultado:

Windows_NT

Si introduce el siguiente código, podrá obtener todos los valores de la tabla $_ENV:

<?php
echo ’<pre>’;
print_r($_ENV);
echo ’</pre>’;
?>

Da como resultado:

Array
(
[ALLUSERSPROFILE] => C:\ProgramData
[AMDAPPSDKROOT]=>C:\Program Files (x86)\AMD APP\
[APPDATA]=>C:\Users\Olivier\AppData\Roaming
etc.
)


4. $_SESSION

Una sesión es un archivo que se almacena en el servidor de cada una de las personas que se conectan en su sitio Web. Se destruye automáticamente cuando la persona abandona el sitio Web.

$_SESSION es una tabla asociativa que permite almacenar cualquier valor de cada usuario. Esta tabla es válida en todas las páginas PHP del sitio Web y permite pasar variables de una página a otra. Tenga cuidado con no abusar de ella, porque si se conecta mucha gente en su sitio Web puede llenar la memoria del servidor Web.

Antes de utilizar $_SESSION, es imprescindible reiniciar la sesión o llamar a una sesión existente en cada página donde quiera utilizar $_SESSION. Esto se denomina session_start();.

La función session_destroy() sirve para destruir la sesión actual. Tenga cuidado porque esta función no destruye las variables de la sesión asociadas a la sesión actual. Debe utilizar también la función unset($_SESSION). La sesión se destruirá automáticamente cuando el usuario cierre la ventana de su navegador.

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

<?php
session_start();
$_SESSION[’nombre’] = ’Juan’;
echo "El nombre en sesión es:".$_SESSION[’nombre’];
?>

Da como resultado:

El nombre en sesión es: Juan

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

<?php
session_start();
echo "El nombre en sesión siempre es:".$_SESSION[’nombre’];
?>

Da como resultado:

El nombre en sesión siempre es: Juan

De hecho, $_SESSION[’nombre’] queda en la memoria siempre y cuando no cierre su navegador.

Puede utilizar la función session_status(), que devuelve 0 si se desactivan las sesiones, 1 si se activan, pero sin guardar ninguna aquí, y 2 si se activan las sesiones, siempre y cuando se guarde al menos una de ellas.



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







No hay comentarios:

Publicar un comentario

       

Etiquetas

Academy (23) 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 (212) 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 (314) Cloud Computing (3) CNNA v5.0 Routing & Switching (233) 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 (3) 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 (186) 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