Skip to content

UD 5 Programación y herramientas web

RA 6 Desarrolla aplicaciones web de acceso a almacenes de datos, aplicando medidas para mantener la seguridad y la integridad de la información.
  • a) Se han identificado los mecanismos disponibles para el mantenimiento de la información que concierne a un cliente Web concreto y se han señalado sus ventajas.
  • b) Se han utilizado sesiones para mantener el estado de las aplicaciones Web.
  • c) Se han utilizado «cookies» para almacenar información en el cliente Web y para recuperar su contenido.
  • d) Se han identificado y caracterizado los mecanismos disponibles para la autentificación de usuarios.
  • e) Se han escrito aplicaciones que integren mecanismos de autentificación de usuarios.
  • f) Se han realizado adaptaciones a aplicaciones Web existentes como gestores de contenidos u otras.
  • g) Se han utilizado herramientas y entornos para facilitar la programación, prueba y depuración del código.

Índice

  1. Envío HTTP
  2. Variables Supeglobales
  3. Envío HTTP

1. Variables Superglobales en PHP 🌐✈️

Las variables superglobales en PHP son arrays asociativos predefinidos que permiten acceder a información de la solicitud HTTP, variables del entorno, archivos, sesiones, entre otros.

  • Están disponibles en todo el ámbito del script (global y local).
  • No requieren ser declaradas previamente.

Principales Variables Superglobales

  1. $_GET : Contiene los datos enviados mediante el método HTTP GET.
  2. $_POST : Contiene los datos enviados mediante el método HTTP POST.
  3. $_REQUEST : Contiene los datos enviados por GET, POST o COOKIE.
  4. $_FILES : Contiene los archivos cargados desde un formulario HTML.
  5. $_SERVER : Información sobre el servidor y el entorno de ejecución.
  6. https://www.php.net/manual/es/reserved.variables.server.php
  7. $_SESSION : Contiene las variables de sesión del usuario.
  8. $_COOKIE : Contiene las cookies enviadas al cliente o al servidor.

Las variables superglobales en PHP permiten manejar eficientemente datos enviados desde formularios y cargar archivos. Este enfoque es fundamental para aplicaciones web que requieren interacción del usuario y manejo de datos dinámicos, como una aplicación de reserva de vuelos.

Ya has usado alguna de ellas como GET, POST, REQUEST o SERVER.

Ruta UD5/1Cabeceras

Crea la ruta UD5/1Cabeceras para hacer las pruebas que necesites con estas características de PHP tan importantes.

Un primer ejemplo podría ser UD5/1Cabeceras/1server.php ...

1732730365227

<?php
echo $_SERVER["PHP_SELF"]."<br>"; // /u4/401server.php
echo $_SERVER["SERVER_SOFTWARE"]."<br>"; // Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.4.9
echo $_SERVER["SERVER_NAME"]."<br>"; // localhost

echo $_SERVER["REQUEST_METHOD"]."<br>"; // GET
echo $_SERVER["REQUEST_URI"]."<br>"; // /u4/401server.php?heroe=Batman
echo $_SERVER["QUERY_STRING"]."<br>"; // heroe=Batman
?>

1732730588516

$_FILES "Subiendo archivos"

Se almacenan en el servidor en el array $_FILES con el nombre del campo del tipo file del formulario.

Cada archivo cargado en $_FILES tiene:

  • name: nombre
  • tmp_name: ruta temporal
  • size: tamaño en bytes
  • type: tipo MIME
  • error: si hay error, contiene un mensaje. Si ok → 0.

Actividad "Subiendo archivos"

Subiendo archivos

Ejecuta y personaliza el código deSubir Fichero en la carpeta 1Cabeceras/subirFichero

/ ... y comprueba elementos nuevos como es el caso de la variable superflobal FILES

1732729414164

Link al artículo anterior https://www.cloudflare.com/es-es/learning/ddos/glossary/hypertext-transfer-protocol-http/

What Is HTTP or Web Protocol?

2. Envío HTTP 📡

El envío de solicitudes y respuestas HTTP en PHP es fundamental para la comunicación entre el cliente (navegador) y el servidor.

  • A través de estas solicitudes, podemos enviar datos, recuperar información, manejar formularios, realizar redirecciones y gestionar recursos.

Tipos de Solicitudes HTTP

Los métodos más comunes que se utilizan en PHP para manejar solicitudes HTTP son:

  • GET : Solicita datos del servidor.
  • POST : Envía datos al servidor para ser procesados.
  • PUT : Envía datos al servidor para actualizar un recurso.
  • DELETE : Solicita la eliminación de un recurso en el servidor.

Repasemos el envío de Datos al Servidor

a) Solicitud GET

  • Se utiliza para enviar parámetros en la URL.
  • Generalmente usado para recuperar información.
  • No es adecuado para enviar datos sensibles, ya que se muestran en la URL.

Ejemplo:

Formulario HTML que envía datos con GET:

<form action="procesar.php" method="GET">
  <input type="text" name="nombre" placeholder="Introduce tu nombre">
  <input type="submit" value="Enviar">
</form>

Procesamiento en PHP:

// procesar.php
if (isset($_GET['nombre'])) {
    $nombre = htmlspecialchars($_GET['nombre']);
    echo "Hola, $nombre";
}

b) Solicitud POST

  • Se utiliza para enviar datos en el cuerpo de la solicitud.
  • Más seguro que GET para enviar información sensible.
  • Adecuado para enviar grandes cantidades de datos.

Ejemplo:

Formulario HTML que envía datos con POST:

<form action="procesar.php" method="POST">
  <input type="text" name="nombre" placeholder="Introduce tu nombre">
  <input type="submit" value="Enviar">
</form>

Procesamiento en PHP:

// procesar.php
if (isset($_POST['nombre'])) {
    $nombre = htmlspecialchars($_POST['nombre']);
    echo "Hola, $nombre";
}

Recuperación de Datos en PHP

PHP ofrece variables superglobales para acceder a los datos enviados en las solicitudes HTTP:

  • $_GET : Contiene los datos enviados a través del método GET.
  • $_POST : Contiene los datos enviados a través del método POST.
  • $_REQUEST : Contiene datos enviados tanto por GET como por POST.

Redirección con HTTP en PHP

La redirección permite enviar al usuario a otra página o URL.

Ejemplo de redirección:

header("Location: https://www.google.com");
exit(); // Detener la ejecución del script

Envío de JSON en una Solicitud HTTP

PHP puede enviar y recibir datos en formato JSON, especialmente útil para aplicaciones web modernas.

Enviar datos JSON en una respuesta:

header('Content-Type: application/json');

$data = [
    "nombre" => "Juan",
    "edad" => 25,
    "ciudad" => "Madrid"
];

echo json_encode($data);

Recibir datos JSON en una solicitud POST:

// Obtener datos JSON enviados en el cuerpo de la solicitud POST
$json = file_get_contents('php://input');
$data = json_decode($json, true);

if ($data) {
    echo "Nombre: " . $data['nombre'];
    echo "Edad: " . $data['edad'];
}

Manejo de Errores HTTP

Es importante manejar errores de solicitud y enviar códigos de estado HTTP adecuados.

Ejemplo: Enviar un código de error 404:

header("HTTP/1.1 404 Not Found");
echo "Página no encontrada";

Ejemplo: Enviar un código 500 (Error Interno del Servidor):

header("HTTP/1.1 500 Internal Server Error");
echo "Error interno en el servidor";

  • PHP permite manejar solicitudes HTTP de manera sencilla a través de las variables superglobales ($_GET, $_POST, $_REQUEST).
  • Las cabeceras HTTP controlan el tipo de contenido, redirecciones y códigos de estado.
  • El uso adecuado de GET y POST mejora la seguridad y eficiencia de las aplicaciones web.

3. Cabeceras de respuesta HTTP en PHP 🛠️

¿Qué son las cabeceras HTTP?

Las cabeceras HTTP son información adicional que se envía antes del cuerpo de la respuesta o solicitud HTTP. Estas cabeceras proporcionan detalles sobre cómo el servidor y el cliente deben manejar la solicitud o la respuesta.

  • Cabeceras de solicitud : Son enviadas por el navegador al servidor para indicar el tipo de contenido o la configuración de la conexión.
  • Cabeceras de respuesta : Son enviadas por el servidor al navegador para definir cómo debe interpretarse el contenido recibido.

Debe ser lo primero a devolver. Se devuelven mediante la función header(cadena). Mediante las cabeceras podemos configurar el tipo de contenido, tiempo de expiración, redireccionar el navegador, especificar errores HTTP, etc.

Enlace Wikipedia

Artículo Análisis de cabeceras Servidor

1732732444941

Ejemplo de una cabecera HTTP básica:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

¿Qué hacen las cabeceras HTTP en PHP?

En PHP, las cabeceras HTTP permiten controlar la forma en que el navegador interpreta el contenido, redirige al usuario, maneja sesiones, entre otras funciones.

  • Se envían antes de que se genere cualquier salida (HTML, texto, etc.) .

Funciones Principales para Manipular Cabeceras en PHP

Esta función permite enviar una cabecera HTTP personalizada.

Sintaxis:

header(string $cabecera, bool $replace = true, int $http_response_code = 0);
  • $cabecera : La cadena que contiene la cabecera que queremos enviar.
  • $replace : (opcional) Si es true, reemplaza una cabecera previa con el mismo nombre.
  • $http_response_code : (opcional) Define el código de estado HTTP (200, 404, 301, etc.).

Ejemplo: Redirigir a otra página:

header("Location: https://www.google.com");
exit(); // Importante usar exit() después de redirigir.

Tipos Comunes de Cabeceras HTTP

a) Cabeceras de Control de Caché

Indican cómo debe manejarse la caché de la página.

  • Evitar caché :
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");

b) Cabeceras de Autenticación

Indican que se requiere autenticación para acceder al recurso.

Ejemplo: Solicitar autenticación básica:

header("WWW-Authenticate: Basic realm='Área Restringida'");
header("HTTP/1.0 401 Unauthorized");
echo "Autenticación requerida.";

c) Cabeceras de Redirección

Indican que el navegador debe redirigir a otra URL.

Ejemplo: Redirección 301 (permanente):

header("Location: https://www.ejemplo.com", true, 301);
exit();

d) Cabeceras de Tipo de Contenido

Especifican el tipo de contenido que el servidor está enviando.

Ejemplo: Enviar JSON:

header("Content-Type: application/json");

Ejemplo: Descargar un archivo:

header("Content-Disposition: attachment; filename='archivo.pdf'");
header("Content-Type: application/pdf");

Reglas Importantes al Usar Cabeceras HTTP en PHP

  • No se puede enviar ninguna salida antes de header() . Si hay un espacio, un texto o una línea en blanco, las cabeceras no se podrán modificar.
  • Error común:
    echo "Hola"; // Esto envía salida antes de la cabecera
    header("Content-Type: text/html"); // Error
    
  • exit() después de redirecciones : Siempre es recomendable usar exit() después de una redirección para evitar que se siga ejecutando el script.

Las cabeceras HTTP en PHP son fundamentales para controlar el comportamiento de las respuestas del servidor. Desde la redirección de usuarios hasta la definición del tipo de contenido, permiten optimizar la interacción entre el cliente y el servidor de manera eficiente.

Ver cabeceras en el navegador

Como muchos conocéis, se pueden investigar desde cada navegador.

Aquí tienes un enlace para más información

ES 3rd Apple response headers

Actividad

Investiga algunas de estas cabeceras en la carpeta 1Cabeceras de la unidad

Tendrás que generar varias carpetas dentro de la misma para organizar tu código.Tienes ejemplos en 1b, 1c...

Tiempo estimado: 1 hora.