Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:desarrollo_web_backend:integracion_php_aplicacion_web

Integración de PHP en una aplicación web

Módulo perteneciente al curso Desarrollo web back-end

La integración de PHP en una aplicación web es fundamental para el desarrollo de cualquier sitio web dinámico. PHP se utiliza para procesar y generar contenido dinámico en el lado del servidor. Con PHP, es posible interactuar con los datos de un sitio web, recopilar información del usuario y enviar correos electrónicos.

Aprenderás los aspectos esenciales de la integración de PHP en una aplicación web, incluyendo cómo recoger información de una aplicación web, cómo utilizar variables de sesión y cookies, cómo leer y escribir archivos, cómo incorporar múltiples idiomas en una página web y cómo enviar correos electrónicos.

Recoger información de una aplicación web

Recoger información de una aplicación web es una tarea común en la programación web, y PHP ofrece dos métodos principales para recopilar información: el método POST y el método GET.

El método POST se utiliza para enviar datos desde el cliente al servidor. Los datos se envían en el cuerpo de la solicitud HTTP y no son visibles en la URL. Este método se utiliza comúnmente para enviar información confidencial como contraseñas o información de pago. Para recopilar información con el método POST en PHP, se utiliza el superglobal $_POST.

Por otro lado, el método GET se utiliza para enviar datos desde el cliente al servidor a través de la URL. Los datos se envían como parte de la URL y son visibles en la barra de direcciones del navegador. Este método se utiliza comúnmente para enviar información no confidencial como búsquedas en un sitio web. Para recopilar información con el método GET en PHP, se utiliza el superglobal $_GET.

A continuación se muestran ejemplos de cómo utilizar estos dos métodos para recopilar información en PHP:

Método POST

<form method="post" action="procesar.php">
    Nombre: <input type="text" name="nombre"><br>
    Contraseña: <input type="password"  name="contraseña"><br>
    <input type="submit" value="Enviar">
</form>

En este ejemplo, se utiliza un formulario HTML para recopilar información del usuario. Los datos se envían al archivo procesar.php utilizando el método POST. Para acceder a la información recopilada en procesar.php, se utiliza el superglobal $_POST. Por ejemplo, si queremos acceder al nombre recopilado, utilizaríamos lo siguiente:

$nombre = $_POST["nombre"];

Método GET

<a href="buscar.php?palabra=ejemplo">Buscar</a>

En este ejemplo, se utiliza un enlace HTML para enviar información al archivo buscar.php utilizando el método GET. La información se envía como parte de la URL y es visible en la barra de direcciones del navegador. Para acceder a la información recopilada en buscar.php, se utiliza el superglobal $_GET. Por ejemplo, si queremos acceder a la palabra recopilada, utilizaríamos lo siguiente:

$palabra = $_GET["palabra"];

Uso de variables de sesión

En PHP, las variables de sesión son una herramienta útil para almacenar información del usuario a través de diferentes páginas y visitas al sitio web.

Las variables de sesión son variables que se almacenan en el servidor y están disponibles en todas las páginas que el usuario visita.

El uso de variables de sesión en PHP es bastante sencillo. Cuando se crea una sesión, PHP genera un identificador único de sesión que se utiliza para identificar al usuario en visitas posteriores. Para crear una variable de sesión, se utiliza la función session_start(). Esta función debe ser llamada al principio de cada página donde se desee utilizar las variables de sesión. Después de llamar a session_start(), se puede acceder a las variables de sesión utilizando el superglobal $_SESSION.

Para utilizar variables de sesión en PHP debemos seguir los siguiente pasos:

Iniciar una sesión: antes de poder utilizar las variables de sesión en PHP, debemos iniciar una sesión. Esto se hace mediante la funciónsession_start(). La función debe ser llamada al principio de cada página donde se desee utilizar las variables de sesión. Si la sesión ya ha sido iniciada, PHP recuperará la sesión existente en lugar de crear una nueva.

<?php
session_start();
?>

Crear una variable de sesión: una vez que la sesión ha sido iniciada, podemos crear una variable de sesión utilizando el superglobal $_SESSION. Las variables de sesión se comportan de manera similar a las variables normales de PHP, y se pueden asignar valores a ellas de la misma manera.

<?php
session_start();
$_SESION['username'] = 'john_doe';
?>

En este ejemplo, se crea una variable de sesión llamada username y se le asigna el valor de john_doe.

Acceder a una variable de sesión: después de que se ha creado una variable de sesión, se puede acceder a ella en cualquier página que utilice la misma sesión. Para acceder a la variable de sesión, utilizamos el superglobal $_SESSION seguidos del nombre de la variable:

<?php
session_start();
echo "El nombre de usuario es " . $_SESION['username'];
?>

En este ejemplo, se muestra el valor de la variable de sesión username en la página.

Destruir una variable de sesión: cuando ya no necesitamos una variable de sesión, podemos destruirla utilizando la función unset(). Esto elimina la variable de sesión y su valor asociado.

<?php
session_start();
unset($_SESSION['username']);
?>

En este ejemplo, se destruye la variable de sesión username.

Destruir la sesión: cuando el usuario ha terminado de utilizar el sitio web, es una burna práctica destruir la sesión. Esto se hace mediante la función session_destroy(). Esta función destruye toda la información asociada con la sesión actual.

<?php
session_start();
session_destroy();
?>

En este ejemplo, se destruye la sesión actual.

Cookies

Las cookies son pequeños archivos de texto que se almacenan en el navegador del usuario. Las cookies se utilizan comúnmente en la programación web para almacenar información del usuario, como preferencias de idioma, información de inicio de sesión, productos en el carrito de compra, entre otros. Las cookies pueden ser creadas tanto por el servidor como por el cliente.

El uso de cookies en la página web se puede dividir en tres aspectos importantes:

  • Uso de cookies en la página web
  • Políticas de aceptación de cookies
  • Seguridad en el uso de cookies

Uso de cookies en la página web

En PHP, se pueden crear y leer cookies utilizando la función setcookie() y el superglobal $_COOKIE, respectivamente.

La función setcookie() se utiliza para crear una cookie, y acepta varios parámetros, como el nombre de la cookie, el valor, la fecha de caducidad, entre otros.

El superglobal $_COOKIE se utiliza para leer el valor de una cookie.

<?php
setcookie('username', 'john_doe', time() + (86400 * 30), '/');
?>

En este ejemplo, se crea una cookie con el nombre username y el valor john_doe. La cookie caducará después de 30 días, y será accesible desde cualquier página en el directorio raíz.

Para leer el valor de una cookie en PHP se utiliza el superglobal $_COOKIE:

// Lee el valor de la cookie 'username' y lo muestra en pantalla:
echo "El nombre de usuario es: ' . $_COOKIE["username"];

Políticas de aceptación de cookies

La Unión Europea y otros países han establecido políticas de aceptación de cookies para proteger la privacidad del usuario.

Estas políticas requiren que el usuario dé su consentimiento antes de que se puedan crear cookies en su navegador.

Para cumplir con estas políticas se debe informar al usuario sobre el uso de cookies y pedir su consentimiento antes de crear cookie en su navegador.

Seguridad en el uso de cookies

Las cookies pueden ser utilizadas para almacenar información confidencial, como nombres de usuario y contraseñas. Por lo tanto, es importante utilizar prácticas seguras al utilizar cookies en una aplicación web.

Algunas prácticas recomendadas incluyen:

  • No almacenar información sensible en cookies.
  • Utilizar cookies cifradas (HTTPS)
  • Establecer fechas de caducidad para alas cookies.
  • Validar y filtrar el contenido de las cookies.

Uso de ficheros y carpetas

El manejo de ficheros y carpetas es una tarea común en la programación web. En PHP, se pueden crear, leer, escribir y borrar ficheros y carpetas utilizando varias funciones y métodos.

El manejo de ficheros y carpetas es importante para el almacenamiento de datos y la manipulación de archivos en una aplicación web.

Leer y escribir en ficheros

En PHP, se pueden leer y escribir en ficheros utilizando varias funciones, como fopen(), fread(), fwrite(), fclose(), entre otras. La función fopen() se utiliza para abrir un fichero, fread() para leer su contenido, fwrite() para escribir en el fichero, y fclose() para cerrarlo.

Para leer y escribir en un fichero en PHP, se utiliza la función fopen(). La función acepta dos parámetros: el nombre del fichero y el modo de apertura. El modo de apertura puede ser r (solo lectura), w (escritura, truncamiento) o a (escritura, añadiendo al final). Por ejemplo:

<?php
    // Abre el fichero 'archivo.txt' en modo lectura
    $archivo = fopen('archivo.txt', 'r');
 
    // Lee el contenido del fichero y lo muestra en pantalla
    echo fread($archivo, filesize('archivo.txt'));
 
    // Cierra el fichero
    fclose($archivo);
?>

En este ejemplo, se abre el fichero archivo.txt en modo lectura utilizando la función fopen(). Se lee el contenido del fichero utilizando la función fread(), y se muestra en pantalla utilizando la función echo. Finalmente, se cierra el fichero utilizando la función fclose().

Para escribir en un fichero en PHP, se utiliza la función fwrite(). La función acepta dos parámetros: el fichero abierto y el contenido a escribir. Por ejemplo:

<?php
    // Abre el fichero 'archivo.txt' en modo escritura
    $archivo = fopen('archivo.txt', 'w');
 
    // Escribe el contenido 'Hola, mundo!' en el fichero
    fwrite($archivo, 'Hola, mundo!');
 
    // Cierra el fichero
    fclose($archivo);
?>

En este ejemplo, se abre el fichero archivo.txt en modo escritura utilizando la función fopen(). Se escribe el contenido Hola, mundo! en el fichero utilizando la función fwrite(). Finalmente, se cierra el fichero utilizando la función fclose().

Crear y borrar carpetas

En PHP, se pueden crear y borrar carpetas utilizando las funciones mkdir() y rmdir(), respectivamente. La función mkdir() se utiliza para crear una carpeta, mientras que la función rmdir() se utiliza para borrar una carpeta vacía.

Para crear una carpeta en PHP, se utiliza la función mkdir(). La función acepta dos parámetros:

<?php
    // Crea una carpeta llamada 'mi_carpeta' con permisos 0777
    mkdir('mi_carpeta', 0777);
?>

En este ejemplo, se crea una carpeta llamada mi_carpeta con permisos de acceso 0777 utilizando la función mkdir().

Para borrar una carpeta en PHP, se utiliza la función rmdir(). La función acepta un parámetro, que es el nombre de la carpeta a borrar. Por ejemplo:

<?php
    // Borra la carpeta 'mi_carpeta'
    rmdir('mi_carpeta');
?>

En este ejemplo, se borra la carpeta mi_carpeta utilizando la función rmdir().

Es importante tener en cuenta que la eliminación de carpetas con archivos puede ser peligrosa y se debe tener cuidado al realizar esta operación.

Incorporación de multiidioma en una página web

Incorporar múltiples idiomas en una página web es esencial si deseas llegar a una audiencia global.

Los visitantes de tu sitio web deben poder cambiar el idioma de la página para adaptarse a sus preferencias. Para lograr esto, se pueden seguir los siguientes pasos:

Crear archivos de idioma: primero debes crear archivos de idioma para cada idioma que desees incluir en la página web. Estos archivos deben contener todas las cadenas de texto utilizadas en la página web y sus correspondientes traducciones en el idioma deseado. Es decir, debes traducir todas las palabras y frases que aparecen en la página.

Configurar el idioma predeterminado: luego, debes configurar el idioma predeterminado de la página web en el archivo de configuración de PHP. Esto se puede hacer utilizando la función setlocale(). El idioma predeterminado se utilizará si el idioma preferido por el usuario no está disponible.

Detectar el idioma preferido del usuario: para detectar el idioma preferido del usuario, debes utilizar el encabezado Accept-Language enviado por el navegador del usuario. Este encabezado contiene una lista de idiomas preferidos del usuario en orden de preferencia.

El idioma preferido se puede obtener utilizando la función locale_accept_from_http(). Si el idioma preferido del usuario no está disponible en la página web, se debe utilizar el idioma predeterminado.

Mostrar el contenido en el idioma correspondiente: finalmente, debes mostrar el contenido de la página web en el idioma correspondiente. Esto se puede hacer utilizando una fundión de traducción personalizada que lee el archivo de idioma correspondiente y devuelve la traducción correspondiente de cada cadena de texto en la página web.

Para comprenderlo mejor, aquí te dejamos un ejemplo de código PHP que muestra cómo se pueden utilizar estas técnicas para incorporar múltiples idiomas en una página web:

<?php
// Configurar el idioma predeterminado
setlocale(LC_ALL, 'es_ES.utf8');
 
// Detectar el idioma preferido del usuario
$idioma_preferido = locale_accept_from_http($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
 
// Si el idioma preferido no está disponible, utilizar el idioma predeterminado
if (!in_array($idioma_preferido, ['en_US.utf8', 'es_ES.utf8'])) {
    $idioma_preferido = 'es_ES.utf8';
}
 
// Cargar el archivo de idioma correspondiente
$archivo_idioma = parse_ini_file("idiomas/$idioma_preferido.ini");
 
// Función de traducción personalizada
funciont traducir($cadena); {
    global $archivo_idioma;
    return isset($archivo_idioma[$cadena]) ? $archivo_idioma[$cadena] : $cadena;
}
 
// Ejemplo de uso de la función de traducción
echo "<h1>" . traducir("Bienvenido a mi sitio web") . "</h1>";    
?>

En este ejemplo, el idioma predeterminado se establece en es_ES.utf8. Luego, se utiliza la función locale_accept_from_http() para detectar el idioma preferido del usuario a partir del encabezado Accept-Language enviado por el navegador. Si el idioma preferido del usuario no está disponible en la página web, se utiliza el idioma predeterminado.

Una vez que se detecta el idioma preferido del usuario, se carga el archivo de idioma correspondiente utilizando la función parse_ini_file(). Luego, se define una función de traducción personalizada llamada traducir() que devuelve la traducción correspondiente de una cadena de texto en el archivo de idioma.

En este ejemplo, se utiliza la función de traducción personalizada para mostrar el encabezado Bienvenido a mi sitio web en el idioma correspondiente utilizando la función echo.

Envío de correos electrónicos

El envío de correos electrónicos es una tarea común en la programación web. En PHP, existen dos formas principales de enviar correos electrónicos: utilizando la función mail() o utilizando librerías externas.

Utilizando la función mail()

La función mail() es una función de PHP integrada que permite enviar correos electrónicos utilizando el protocolo SMTP. Esta función es fácil de utilizar y no requiere la instalación de librerías adicionales.

Para enviar un correo electrónico utilizando la función mail(), se deben proporcionar los siguientes parámetros:

  • El destinatario del correo electrónico (To)
  • El asunto del correo electrónico (Subject)
  • El cuerpo del correo electrónico (Body)
  • Opcionalmente, se pueden proporcionar encabezados adicionales como “From”,“Cc”, “Bcc” y “Reply-To”

A continuación, te dejamos un ejemplo de cómo se puede utilizar la función mail() para enviar un correo electrónico:

<?php
$para = 'destinatario@example.com';
 
$asunto = 'Prueba de correo electrónico';
 
$mensaje = 'Hola, esto es una prueba de correo electrónico';
 
$headers = 'From: remitente@example.com' . "\r\n" .
 
                'Reply-To: remitente@example.com' . "\r\n" .
 
                'X-Mailer: PHP/' . phpversion();
 
 
mail($para, $asunto, $mensaje, $headers);
?>

En este ejemplo, se define el destinatario del correo electrónico, el asunto del correo electrónico, el cuerpo del correo electrónico y los encabezados adicionales. Luego, se utiliza la función mail() para enviar el correo electrónico.

Utilizando librerías externas

También es posible enviar correos electrónicos utilizando librerías externas de PHP, como PHPMailer o SwiftMailer. Estas librerías proporcionan funcionalidades avanzadas para el envío de correos electrónicos, como la autenticación SMTP, la compatibilidad con HTML y la incorporación de archivos adjuntos.

Para utilizar estas librerías primero debes descargar e incluir la librería en tu proyecto PHP. Luego, debes configurar la librería con los detalles de tu servidor SMTP y de tus credenciales de correo electrónico.

A continuación, se presenta un ejemplo de cómo se puede utilizar la librería PHPMailer para enviar un correo electrónico:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
 
require 'vendor/autoload.php';
 
$mail = new PHPMailer(true);
 
try {
    $mail->SMTPDebug = 0;
    $mail->isSMTP();
    $mail->Host = 'smtp.example.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'usuario@example.com';
    $mail->Password = 'contraseña';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
 
    $mail->setFrom('remitente@example.com', 'Remitente');
    $mail->addAddress('destinatario@example.com', 'Destinatario');
    $mail->addReplyTo('remitente@example.com', 'Remitente');
 
    $mail->isHTML(true);
    $mail->Subject = 'Prueba de correo electrónico';
    $mail->Body = '<p>Hola, esto es una prueba de correo electrónico.</p>';
 
    $mail->send();
 
    echo 'El correo electrónico ha sido enviado exitosamente';
 
} catch (Exception $e) { 
    echo 'Error al enviar el correo electrónico: ' .  $mail->ErrorInfo; 
}
?>

En este ejemplo, se utiliza la librería PHPMailer para enviar un correo electrónico. Primero, se definen los detalles del servidor SMTP y las credenciales de correo electrónico. Luego, se establece el remitente, el destinatario y el cuerpo del correo electrónico utilizando métodos de PHPMailer. Finalmente, se utiliza el método send() para enviar el correo electrónico.

Es importante tener en cuenta que las librerías externas para enviar correos electrónicos pueden requerir configuraciones adicionales para funcionar correctamente en tu servidor. Es recomendable leer la documentación de la librería y realizar pruebas exhaustivas antes de utilizarla en un proyecto en producción.

Anexar imágenes y/o archivos a un correo electrónico

Para anexar una imagen o un archivo a un correo electrónico utilizando la función mail(), se debe agregar una cabecera Content-Type al mensaje de correo electrónico.

Esta cabecera indica el tipo de contenido que se está enviando, como multipart/mixed para un correo electrónico con archivos adjuntos.

Anexar imágenes y/o archivos utilizando la función mail()

A continuación, se presenta un ejemplo de cómo se puede anexar una imagen a un correo electrónico utilizando la función mail():

<?php
$para = 'destinatario@example.com';
$asunto = 'Prueba de correo electrónico con imagen';
$mensaje = 'Hola, esto es una prueba de correo electrónico con imagen';
 
$archivo = 'imagen.jpg';
$contenido = file_get_contents($archivo);
$adjunto = base64_encode($contenido);
$tipo = mime_content_type($archivo);
 
$headers = 'From: remitente@example.com' . "\r\n" .
                 'Reply-To: remitente@example.com' . "\r\n" .
                  'X-Mailer: PHP/' . phpversion() . "\r\n" .
                  'Content-Type: multipart/mixed; boundary="boundary"';
 
$mensaje_completo = "--boundary\r\n" .
                                "Content-Type: text/plain;charset=ISO-8859-1\r\n" .
                                "Content-Transfer-Encoding: 7bit\r\n\r\n" ."
                                $mensaje\r\n" .
                                "--boundary\r\n" .
                                "Content-Type: $tipo; name=\"$archivo\"\r\n" .
                                "Content-Transfer-Encoding: base64\r\n" .
                                "Content-Disposition: attachment;filename=\"$archivo\"\r\n\r\n" ."
                                $adjunto\r\n" .
                                "--boundary--";
 
mail($para, $asunto, $mensaje_completo, $headers);
?>

En este ejemplo, se define el destinatario del correo electrónico, el asunto del correo electrónico y el cuerpo del correo electrónico. Luego, se define el archivo a adjuntar, se lee su contenido y se codifica en base64. A continuación, se definen los encabezados del mensaje de correo electrónico y se crea el mensaje completo utilizando una cadena de texto con formato.

Anexar imágenes y/o archivos utilizando librerías externas

También es posible anexar imágenes y archivos a un correo electrónico utilizando librerías externas de PHP, como PHPMailer o SwiftMailer. Estas librerías proporcionan métodos convenientes para agregar archivos adjuntos al correo electrónico.

A continuación, se presenta un ejemplo de cómo se puede anexar una imagen a un correo electrónico utilizando la librería PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
 
$mail = new PHPMailer(true);
 
try {
    $mail->SMTPDebug = 0;
    $mail->isSMTP();
    $mail->Host = 'smtp.example.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'usuario@example.com';
    $mail->Password = 'contraseña';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
 
    $mail->setFrom('remitente@example.com', 'Remitente');
    $mail->addAddress('destinatario@example.com', 'Destinatario');
    $mail->addAttachment('imagen.jpg', 'imagen.jpg'); $mail->Subject = 'Prueba de correo electrónico con imagen'; $mail->Body = 'Hola, esto es una prueba de correo electrónico con imagen'; $mail->AltBody ='Este es el cuerpo en texto plano para clientes de correo que no admiten HTML';
 
    $mail->send();
    echo 'El correo electrónico se envió correctamente';
} catch (Exception $e) { 
    echo 'Error al enviar el correo electrónico: ' . $mail->ErrorInfo; 
}
?>

En este ejemplo, se utiliza la librería PHPMailer para enviar un correo electrónico con una imagen adjunta. Primero, se definen los detalles del servidor SMTP y las credenciales de correo electrónico. Luego, se establece el remitente, el destinatario, el cuerpo del correo electrónico y el archivo adjunto utilizando métodos de PHPMailer. Finalmente, se utiliza el método send() para enviar el correo electrónico.

Es importante tener en cuenta que las librerías externas de PHP para enviar correos electrónicos pueden requerir configuraciones adicionales para funcionar correctamente en tu servidor. Es recomendable leer la documentación de la librería y realizar pruebas exhaustivas antes de utilizarla en un proyecto de producción.

Recursos

informatica/programacion/cursos/desarrollo_web_backend/integracion_php_aplicacion_web.txt · Última modificación: por tempwin