Cómo determinar la versión de PHP de un sistema

Cómo determinar la versión de PHP de un sistema

Cómo hacer para...
Una de las primeras tareas que debemos encarar cuando realizamos una auditoría de código de un sistema es detectar la versión de PHP que se está utilizando. Es importante saberlo para darnos una idea de qué tanto mantenimiento se ha realizado sobre el código y hasta cuánto se puede mejorar apalcándonos en las últimas características disponibles (O qué tan costoso será incorporarlas debido a refactors y demás). Hay diversas formas de encarar esta tarea. Nombraré algunas: Qué nos dice el webserver Una forma muy sencilla es realizar una petición al servidor web y analizar los encabezados de la respuesta. Ejemplo: No hace falta ser muy perspicaz... si el webserver tiene instalada la versión 5.3.29... el código a lo sumo está desarrollado usando esa versión. Si bien no es una información 100%…
Leer más
Cómo hacer backups con MySQL

Cómo hacer backups con MySQL

Cómo hacer para...
Cuando una aplicación entra en producción (si no antes), resulta clara la necesidad de realizar backups. Por más que uno esté usando hostings virtualmente irrompibles (Como Digital Ocean), nunca se puede ser demasiado precavido. Por otro lado, seguro que el código de la aplicación que hiciste es una obra de arte digna del Louvre, pero, lo realmente importante son los datos que el cliente genera con ella (¡al menos para él!). Hay varias formas de resolver este problema, voy a nombrar algunas en orden de simplicidad decrecreciente (Es decir, empiezo por la más fácil :) ): Usando MySQL WorkBench Desde la pantalla principal (Una vez conectado a un servidor) Arriba a la izquierda encontramos el menú "Management": De ahí tenemos la opción "Data Export": Eso nos lleva a la pantalla…
Leer más
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…
Leer más
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…
Leer más

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…
Leer más
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');…
Leer más
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…
Leer más
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…
Leer más
Cómo definir relaciones Cero-a-Uno con Doctrine

Cómo definir relaciones Cero-a-Uno con Doctrine

Cómo hacer para...
En general cuando uno comienza a estudiar Bases de Datos Relacionales se habla de un tipo de relación Uno-a-Uno que, en la práctica se usa muy poco. Sin embargo las relaciones tipo Cero-a-Uno tienen muchísimo sentido. Es el caso de que se quiera modelar un sistema donde una entidad es un caso especial de otra (Algo similar al concepto de herencia de POO), como por ejemplo la relación entre personas y actores: Todos los actores son personas No todas las personas son actores La forma de implementar esto en una base de datos relacional es poner un campo tipo clave foránea en la tabla hija, el cual a su vez tendrá un índice único (Para reforzar la cardinalidad de la relación). En el caso del ORM Doctrine, todo esto parte de la…
Leer más
Cómo usar el intérprete de PHP de una VM desde PhpStorm

Cómo usar el intérprete de PHP de una VM desde PhpStorm

Cómo hacer para...
Una práctica muy buena a la hora de programar (y ahorrarse dolores de cabeza) es el uso de máquinas virtuales. Muchos desarrolladores usan este esquema, sin embargo, también es bastante común que tengan sus propias versiones del software usado para ejecutar sus aplicaciones instalado en su máquina física (por ejemplo PHP). Si estás trabajando en varios proyectos a la vez, los cuales están deployados en servidores diversos, es muy probable que en cada VM tengas instalada una versión diferente de PHP (La misma que tenés en el servidor de producción), con lo cual, al menos una VM debe tener instalada una versión diferente de PHP que la que tenés instalada en tu máquina. Como usás una VM no deberías tener mayores dificultades a la hora de deployar, pero a la hora…
Leer más