Noticias Raspberry Pi

Cómo decodificar y codificar cadenas Base64 en PHP

Este tutorial le mostrará cómo codificar y decodificar una cadena base64 en PHP.

Base64 es un tipo de codificación útil que le permite codificar una cadena en PHP que puede decodificar fácilmente.

PHP usa el estándar MIME Base64 para su codificación. Este estándar se diseñó originalmente para facilitar el envío de datos binarios en protocolos basados ​​en texto, como el correo electrónico.

Algo así como una imagen se codificaría en este formato durante el tránsito y luego el cliente receptor la decodificaría a sus datos originales.

Hay muchos otros usos para la codificación y decodificación Base64 en PHP. Por ejemplo, en un sistema de comentarios anterior, usamos datos SVG codificados en Base64 que luego el navegador web interpretó en sus datos originales.

En las próximas secciones, le mostraremos cómo codificar y decodificar usando Base64 en PHP. En particular, discutiremos las funciones PHP base64_encode() y base64_decode().

Tenga en cuenta que Base64 nunca debe usarse por seguridad. Está diseñado para codificarse y decodificarse de manera eficiente sobre la marcha y no ofrece protección.

La función base64_encode() en PHP

En esta sección, le mostraremos cómo codificar en Base64 una cadena en PHP. Para lograr esto, aprenderá todo sobre la función base64_encode().

Definición de la función PHP base64_encode()

Permítanos mostrarle exactamente cómo se define la función base64_encode() en PHP. Saber cómo se define le facilitará comprender con qué tipo de datos trabajará.

Esta función es muy simple porque solo tiene un parámetro singular que espera una cadena.

A continuación puede ver cómo se define base64_encode(). Esta definición indica el tipo de datos esperado de los parámetros y el tipo de retorno de las funciones.

Esta función requiere solo un parámetro. Este parámetro es la cadena que desea codificar según el estándar MIME Base64.

PHP devolverá una versión codificada en Base64 de su cadena. Notará que esta cadena consumirá más datos y será más larga que los datos originales.

Debido a cómo funciona Base64, esto consumirá aproximadamente un 33 % más de datos que la cadena original. Así que tenga cuidado si está tratando con una cadena de origen grande.

Ejemplo de uso de base64_encode()

Ahora que conocemos la definición de la función base64_encode() en PHP, podemos explorar un ejemplo de cómo la usaría en su código.

Mantendremos este ejemplo relativamente simple pasando una cadena directamente a la función.

En la parte superior de este ejemplo, crearemos una variable llamada «$website» y le asignaremos la cadena «TecnoPasion.com».

Luego usamos la función base64_encode() de PHP, pasando la variable “$website” como su único parámetro. La cadena Base64 devuelta se generará gracias a nosotros mediante la declaración de eco.

A continuación puede ver cómo PHP codificó nuestra cadena «TecnoPasion.com» en formato Base64.

Inmediatamente notará que la cadena resultante es más larga y termina con un signo igual. Esto se debe a que el estándar MIME-Base64 usa el signo igual para el relleno porque la longitud siempre debe ser un múltiplo de tres.

La función base64_decode() en PHP

Ahora que sabe cómo codificar una cadena en formato MIME-Base64 en PHP, exploremos cómo decodificar la cadena.

PHP proporciona una función llamada base64_decode() que toma una cadena codificada y la decodifica a sus datos originales.

Definición de la función PHP base64_decode()

Antes de continuar, exploremos la definición de base64_decode() en PHP. Esta definición le mostrará los diferentes parámetros y el tipo de retorno de esta función.

Esta función es lo que tomará una cadena Base64 y la convertirá de nuevo a sus datos originales.

A continuación puedes ver la definición de la función. Esto muestra los dos parámetros junto al tipo de datos de retorno.

Esta función tiene dos argumentos que puede utilizar. El primero es obligatorio y el segundo es opcional.

$cadena: este parámetro es requerido y aquí es donde pasará su cadena codificada MIME Base64.

Si su canal usa un estándar diferente, puede encontrar problemas al usar esta función.

$strict – El parámetro estricto es opcional y se establece en «falso» de forma predeterminada.

Al establecer $strict en «true», PHP devolverá «false» si la cadena Base64 contiene un carácter que no está disponible en el alfabeto Base64.

Cuando se establece en «falso», PHP eliminará silenciosamente todos los caracteres no válidos e intentará decodificar la cadena resultante.

La función PHP base64_decode() devolverá «falso» en caso de falla o los datos decodificados. Los datos decodificados pueden ser binarios, así que prepárese para manejar eso en su código.

Ejemplos de uso de base64_decode() en PHP

En esta sección, le mostraremos cómo usar la función base64_decode() en PHP. A continuación daremos dos ejemplos diferentes.

El primer ejemplo mostrará cómo se usa la función sin el parámetro opcional. El segundo ejemplo le mostrará cómo funciona la opción estricta.

Uso básico de la función base64_decode()

Nuestro primer ejemplo explorará el uso básico de la función base64_decode(). Entonces, con este ejemplo, ignoraremos el segundo parámetro.

Para iniciar este script, definiremos una cadena PHP llamada «$cadena» y le asignaremos una cadena codificada en Base64 («cGlteWxpZmV1cC5jb20=»). Esta cadena es la misma que codificamos anteriormente en esta guía.

Luego pasamos nuestra variable «$cadena» directamente a la función base64_decode(). Luego mostramos la cadena resultante usando la declaración de eco delante de ella.

Después de ejecutar el código de muestra anterior, PHP habrá decodificado nuestra cadena Base64 a sus datos originales. En nuestro caso, será el siguiente texto.

Usando un campo estricto en la función base64_decode()

Ahora que hemos visto el uso básico, intentemos usar la función base64_decode(), pero habilitaremos el modo estricto configurando el segundo parámetro en «verdadero».

Ajustaremos nuestra cadena codificada agregando tres caracteres Base64 no válidos para mostrar lo que hace. Estos son un signo de exclamación (!), un signo de interrogación (?) y un hashtag (#).

En la parte superior de nuestro script, definimos nuestra variable llamada «$base64_string» y la configuramos en «cGlteWxpZ?#mV1cC5jb20=».

Luego pasaremos esto en dos llamadas de función separadas.

El primero usará la función base64_decode() de PHP pero dejará el estricto deshabilitado.

Esto mostrará cómo PHP normalmente maneja una cadena Base64 que contiene caracteres no válidos.

Habilitamos la funcionalidad estricta base64_decode() para la segunda llamada configurando su segundo parámetro en verdadero.

En lugar de intentar eliminar los caracteres no válidos, la función fallará y devolverá falso.

Para ambas funciones, pasamos su salida directamente a la función var_dump() de PHP. Esta función imprimirá tanto el valor como el tipo de datos devueltos.

A continuación puede ver cómo funciona la función base64_decode() de PHP al configurar el parámetro estricto. Cuando no se establece estricto o se establece en falso, limpia la cadena proporcionada e intenta decodificarla.

Sin embargo, simplemente fallará y devolverá falso cuando el modo estricto esté habilitado.

Conclusión

En este tutorial, le mostramos cómo PHP maneja las cadenas codificadas en Base64. Puede decodificar y codificar fácilmente cualquier cadena dada usando dos funciones simples.

Aunque originalmente se diseñó para ayudar a enviar datos binarios en protocolos optimizados para texto, esta codificación todavía tiene sus usos.

Si tiene alguna pregunta sobre las funciones base64_encode() y base64_decode(), comente a continuación.

Asegúrese de consultar nuestros otros tutoriales de PHP si desea obtener más información. También tenemos muchas otras guías de programación si quieres aprender un nuevo idioma.

Actualizaciones semanales directamente a su bandeja de entrada

¡Reciba nuestros proyectos de Raspberry Pi, tutoriales de codificación, guías de Linux y más!

Suscribir

También puede gustarte...