Cómo pasar una variable PHP a JavaScript

Cómo pasar una variable PHP a JavaScript

Cómo hacer para...
Un problema muy común es cómo hacer para utilizar información que se tiene en PHP en la ejecución de código JavaScript. Detrás de esta inocente pregunta sin embargo, se esconde un error conceptual similar al que tratamos en este artículo: no se domina por completo el esquema de ejecución de una aplicación web. Es entendible: la confusión se produce porque en muchas ocasiones se escribe un único texto que se ejecutará en diferentes lugares y momentos. Es un poco como jugar a este juego: Para entenderlo bien veamos un ejemplo simple: <table> <?php for ( $i = 0; $i < 5; $i++ ) { ?> <tr> <td><?php echo $i; ?></td> </tr> <?php } ?> </table> Este código está mezclando puro código HTML con PHP, pero el PHP se ejecuta en el…
Read More
Un redimensionador de imágenes eficiente hecho con PHP

Un redimensionador de imágenes eficiente hecho con PHP

Ejemplos
Un proyecto interesante que tuve la oportunidad de realizar hace unos años fue un sistema de procesamiento de imágenes. El desafío era lograr un servicio simple que permitiera escalar y rotar imágenes velozmente. Lo diseñé como un componente separado de la aplicación principal (Una red social de viajes) para poder instalarlo sin inconvenientes en un servidor diferente (y eventualmente poder vincularlo a otros proyectos). Por entonces me pareció una buena idea montarlo sobre una arquitectura RESTFul y, como era un proyecto muy simple y acotado (y tenía ganas de aprender algo nuevo de paso) decidí usar un framework especialmente diseñado para estos efectos: Tonic. Lo más importante como siempre: ¿qué nombre ponerle a una aplicación como esta? Mucho de fotografía no sé, pero buscando un poco me pareció que Bresson podía…
Read More
Cómo ser el primero en enterarse de los errores de tu aplicación web

Cómo ser el primero en enterarse de los errores de tu aplicación web

Cómo hacer para...
Cuántas veces te pasó que te mande un mail un cliente (o peor, te llame por teléfono) para decirte que la aplicación que pusiste en producción hace más de una semana acaba de dar uno de esos errores inentendibles: Y vos, estando en cualquier otro tema tenés que buscar en lo más recóndito de la memoria para recordar de qué se trataba y contestar algo medianamente coherente... ¿No sería genial poder decirle a tu cliente apenas atender: "Sí, ya sé, hubo un problema con la app, ya lo estoy viendo y enseguida lo tenés solucionado"? (Obviamente mejor sería que el problema nunca hubiese sucedido, pero bueno... sabemos cómo es esto de desarrollar aplicaciones :)). Hay varios puntos para señalar en este escenario: Más allá de que "queda feo" que un…
Read More

Cómo consumir un WebService REST con PHP

Cómo hacer para...
Un poco de background como para asegurarnos de que hablamos de lo mismo Qué es un webservice Un webservice (o servicio web) es una forma de integrar aplicaciones web. Básicamente se trata de un servidor que expone parte de su funcionalidad para que sus clientes (que generalmente son otros servidores de diferentes aplicaciones) puedan utilizarlas. Las principales ventajas de usar web services son: La posibilidad de valernos de la capacidad instalada (¡y mantenida!) por terceros La facilidad para extender la funcionalidad de nuestra aplicación (Basta con realizar las llamadas al servicio web que deseamos) La principal desventaja de usar este enfoque es que dependemos de servicios de terceros que, salvo en casos muy puntuales, no podemos controlar. Ejemplos de webservices: Autenticación de usuarios vía Facebook, Google, Twitter, etc... Generación de…
Read More
Qué es un CDN y por qué deberías usarlo

Qué es un CDN y por qué deberías usarlo

Herramientas
CDN significa Content Delivery Network o Red de Distribución de Contenidos. Se trata de conjuntos (por lo general bastante grandes) de servidores sincronizados entre sí y preparados para servir contenido estático desde diversos puntos del planeta. Su objetivo principal es el de disminuir el tiempo de carga de una página web (Algo que siempre viene bien). Este objetivo se logra combinando varios factores. Entre ellos: Aprovechando el paralelismo de los pedidos HTTP: Al tener el contenido distribuido en diversos servidores (en lugar de tener el código php y los archivos estáticos en el mismo) el cliente puede lanzar varias peticiones en paralelo por un lado y, por el otro, el pobre servidor al que llegan todos los visitantes de tu sitio puede delegar parte de la carga, lo cual a…
Read More

Cuál es el modo más seguro de almacenar passwords en PHP

Buenas prácticas
Es bastante común últimamente recibir noticias de que algún sitio de gran popularidad ha sido hackeado (O, como suele comunicarse, "su seguridad se ha visto comprometida"). Dependiendo del tipo de sitio del que se trate el problema puede preocuparnos más o menos. Pero eso es cuando somos meramente usuarios del sitio... ¿qué pasa cuándo se trata de un sitio que está bajo nuestra responsabilidad? Aclaremos algo antes de seguir: es imposible hacer un sitio 100% libre de vulnerabilidades. Si hay gente decidida (y capaz) a romper nuestra seguridad lo van a lograr. Es por eso que es muy importante, no sólo poner trabas a los atacantes si no también dejar un botín poco atractivo para el caso de que lo consigan. Algo bastante común es que la gente reutilice sus contraseñas…
Read More
¿SQL vs. NoSQL?

¿SQL vs. NoSQL?

Reflexiones
Se escucha mucho últimamente que SQL pasó de moda, que hoy lo cool es usar NoSQL (MongoDB, CouchDB, etc...) pero... ¿es siempre así? Empecemos por entender qué es una base de datos NoSQL (formalmente no estoy muy convencido de que un almacenamiento que no respete las reglas ACID pueda llamarse base de datos, pero bueno... como para no entrar en más de una discusión a la vez, digamos que sí). De lo que estamos hablando es de un medio de almacenamiento no estructurado, comúnmente conocido como base de datos documental. Más allá de las formalidades (los registros de la base de datos relacional se llaman documentos en una base NoSQL, las tablas pasan a ser colecciones, etc..), existen diferencias muy concretas: Los documentos no tienen estructura (Pueden guardar literalmente cualquier cosa) No existen…
Read More
Cómo usar CC y BCC con PHPMailer

Cómo usar CC y BCC con PHPMailer

Cómo hacer para...
[caption id="attachment_834" align="aligncenter" width="1592"] Mailbox with enveloppes isolated on white.[/caption] PHPMailer es una librería que permite enviar emails desde PHP (Podés consultar algunas opciones acá). Su uso es bastante simple: basta con crear una instancia de PHPMailer para tener acceso a una gran cantidad de funcionalidad: <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once 'vendor/autoload.php'; $mail = new PHPMailer(); $mail->isSMTP(); $mail->Host = 'mail.google.com'; $mail->SMTPAuth = true; $mail->Username = 'usuario@gmail.com'; $mail->Password = 'miSuperPassword'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('acedmy@leewayweb.com', 'Leeway Academy'); $mail->addAddress('juan.perez@yahoo.com', 'Juan Perez'); $mail->Subject = 'Este es el asunto'; $mail->Body = 'Este el cuerpo del mensaje'; if(!$mail->send()) { echo 'No se pudo enviar el mensaje...'.$mail->ErrorInfo; } else { echo 'El mensaje se envió!'; } Para agregar otros destinatarios en copia (CC) o copia oculta (BCC), simplemente debemos agregar estas líneas: $mail->addCC('copiado@hotmail.com');…
Read More
Cómo definir la configuración de la sesión en Symfony

Cómo definir la configuración de la sesión en Symfony

Cómo hacer para...
Ante todo, una aclaración: PHP maneja las sesiones a través de cookies (Antiguamente también se podía propagar el ID de sesión vía URL, aunque es una práctica muy poco segura y, sinceramente, hace mucho que no lo veo). Bien, ahora... ¿qué cosas podrías querer cambiar de la configuración de la sesión? Varias. El nombre de la cookie El tiempo de duración El lugar donde se almacena la información del lado del servidor Sobre la segunda y la tercera, acá tenés un ejemplo de por qué querrías hacerlo :) Respecto de la primera, más que nada se trata de un tema de seguridad. Fijate esta captura de pantalla de la consola del navegador: El nombre PHPSESSID es el nombre por defecto que se le asigna a la cookie de sesión de una…
Read More
Cómo enviar mails con formato usando SwiftMailer

Cómo enviar mails con formato usando SwiftMailer

Cómo hacer para...
Ya he comentado en otros artículos sobre las diferentes posibilidades para enviar emails usando PHP. De todas las que he probado hasta el momento, SwiftMailer es la que me resulta más cómoda y conveniente, sin embargo, he tenido algunas peleas a la hora de enviar mails con formato (es decir, mails que contengan HTML que necesito que sea entendido como tal y no como mero texto). La verdad es que es bastante simple lograrlo, sólo hay que conocer el método adecuado :) En general, lo que uno hace cuando quiere enviar un email es algo como esto: $message = (new Swift_Message()) ->setSubject('Este es el asunto') ->setFrom(['mauro.chojrin@leewayweb.com' => 'Mauro Chojrin']) ->setTo(['destinatario@dominio.com' => 'Gran Amigo']) ->setBody('Este es el importante mensaje que quiero enviarte!!') ; El problema (si puede llamársele así) es que…
Read More