Dónde almacenar la configuración de una aplicación PHP de forma segura

Dónde almacenar la configuración de una aplicación PHP de forma segura

Buenas prácticas
Una pregunta que me llegó de un amigo que viene del mundo .Net (Que parece ser un poco más organizado o estandarizado que el nuestro :). Lo primero que deberíamos preguntarnos es de qué nos estamos queriendo proteger. Por lo general, la posibilidad de que alguien externo a nuestra organización tenga acceso a la configuración de nuestra aplicación no parece muy tentadora... ¿por qué? Básicamente porque puede haber información sensible (Como ser contraseñas, nombres de hosts donde están las bases de datos, etc...) que podrían dar a un atacante una ventaja importante si decidiera hacernos un daño. Una línea de defensa que tenemos es guardar estos archivos en un directorio que no sea públicamente accesible. Si usás el webserver Apache, conocerás seguramente la directiva DocumentRoot: lo que está "a la vista" de…
Leer más
Cómo acceder a Google Drive usando PHP

Cómo acceder a Google Drive usando PHP

Cómo hacer para...
El escenario que voy a analizar es este: Una aplicación desarrollada en PHP requiere acceder a archivos que sus usuarios tienen almacenados en sus propios documentos en Google Drive. Configuración de la API De Google 1. Crear un proyecto en Google (yendo a https://console.developers.google.com/apis/credentials): 2. Habilitar el acceso a la API via OAuth (https://console.developers.google.com/apis/api/drive/overview?project=MI_PROYECTO): 3. Crear las credenciales de acceso vía OAuth: Seleccionar OAuth: 4. Descargar las credenciales a un lugar seguro: Ejemplo: descargar un archivo desde Google Drive usando PHP 5. Autorizar la URI de redireccionamiento Uso de la API de Google desde PHP Con esto hecho ya tenés lo básico para empezar a programar. Si bien podés hacer todo en un solo archivo, no es muy recomendable, es mejor tener un archivo para cada paso del trabajo. Ante todo, vas a necesitar…
Leer más
Los bundles mínimos para un proyecto empresarial Symfony

Los bundles mínimos para un proyecto empresarial Symfony

Herramientas
Ultimamente me estuve entusiasmando bastante con un par de proyectos en los que estamos trabajando en Leeway (obviamente codeados en mi framework favorito Symfony :)) y me pareció interesante compartir algo de la experiencia. Symfony por sí mismo es un gran Framework cuando se trata de armar un sólido Back-End, pero la parte de front... es un poco floja para mi gusto. Afortunadamente, el diseño modular que tiene ha permitido que mucha gente colabore con excelentes bundles, entre ellos: MopaBootstrapBundle Lograr un frontend responsive sin saber casi nada de css es, en mi opinión, un sueño hecho realidad. Este bundle permite apalancarse en Twitter Bootstrap para lograr una UI muy profesional (y estándar). Ejemplo de una pantalla lograda: Más información acá AsseticBundle La librería Assetic provee una forma muy buena de manejar los recursos estáticos…
Leer más
Cómo borrar archivos usando php

Cómo borrar archivos usando php

Cómo hacer para...
Leyendo en algún foro he visto algo que me sorprendió mucho. Alguien estaba intentando borrar un archivo desde PHP usando este comando: exec("rm ".$directorio.$imagen); En general, no soy muy amigo de la función exec... demasiados riesgos de seguridad... pero particularmente, en este caso, este código sólo podrá ejecutar en un entorno que contenga el comando "rm" (Linux o similar). Lo llamativo es que PHP cuenta con una función específicamente diseñada a tal fin (unlink), con lo cual, el código escrito de esta forma será más portable (léase: menos dolores de cabeza). Una de las maravillosas (y muchas veces odiadas) características de php es que tiene una cantidad enorme de funciones, o sea, antes de escribir código tuyo, preguntate si no habrá alguna función que lo haga... casi seguramente la respuesta…
Leer más
Cómo pasar un sistema de Xampp a un Hosting Web

Cómo pasar un sistema de Xampp a un Hosting Web

Cómo hacer para...
Una práctica muy común entre los desarrolladores de PHP (Especialmente los que recién arrancan), es instalar en sus propias computadoras un paquete como XAMPP. Si bien considero mejor instalar todo el entorno de trabajo de un proyecto en su propia máquina virtual, esta alternativa no está mal para comenzar. El problema viene cuando llega el gran día: la salida en vivo. Lo primero que necesitarás hacer es subir todo tu código (vía FTP probablemente) al hosting que hayas contratado. Luego necesitarás crear la base de datos (asumo que será un MySQL) tal como está en tu XAMPP (puedes hacer un dump de lo que tienes actualmente y levantarlo en tu hosting). Una vez que tengas eso hecho deberás seguramente modificar alguna configuración de tu sistema para que apunte correctamente a…
Leer más
Cómo enviar emails con PHP

Cómo enviar emails con PHP

Cómo hacer para...
Es muy común la necesidad de email desde PHP, tanto si se trata de un script de CLI (como puede ser un cronjob) o de una aplicación web. Existen varias opciones a la hora de conseguirlo: La más simple es el uso de la función mail. Es una función de bastante bajo nivel (es decir, algo tosca), pero está disponible en casi cualquier instalación de php. Esta opción está bien para escenarios de envíos de mail simples, pero para usos más avanzados (como enviar adjuntos, HTML o similares), es conveniente utilizar alguna otra opción algo más robusta. Algunas alternativas interesantes son: PHPMailer SwiftMailer ZendMail Cualquiera de estas alternativas resultará más adecuada que el uso de la simple función mail en contextos en los que la performance es una preocupación (Por ejemplo, cuando…
Leer más
Cómo conectar un botón HTML con un método de un objeto php

Cómo conectar un botón HTML con un método de un objeto php

Cómo hacer para...
Un alumno del curso de PHP Orientado a Objetos me hizo esta pregunta: Necesito hacer que un botón o link de mi HTML ejecute un método de un objeto php. Intenté lo siguiente pero sin éxito: <a href="<?php $objeto->Método() ?>"> Reservar </a> La pregunta encerraba una confusión respecto del modelo de ejecución de PHP. Revisemos un poco Cuál es el modelo de ejecución de PHP Lo primero que hay que entender para responder esta pregunta es el ciclo de vida de una petición a una aplicación (o página) PHP. Recordemos que PHP es un lenguaje pensado (al menos originalmente) para generar código HTML en forma dinámica sin recurrir a complicados mecanismos tipo CGI. HTML es la salida por defecto de PHP cuando se ejecuta como módulo de algún servidor web (Apache por…
Leer más
Cómo se usan las funciones anónimas en PHP

Cómo se usan las funciones anónimas en PHP

Cómo hacer para...
Las funciones anónimas son, como te habrás imaginado, funciones que no tienen un nombre. Esto puede sonar bastante raro, siendo que seguramente cuando aprendiste qué es y cómo se define una función en PHP te dijeron que era algo con la pinta: function f( $param1, $param2 ) { // Algo de código } Pues te mintieron. Bueno, no, en realidad no te mintieron pero te dieron una versión parcial de la verdad. Lo que quiero decir es que generalmente las cosas son así como las conoces, pero existen otras posibilidades. Te presento la función anónima: $f = function( $param1, $param2 ) { return $param1 + $param2; } En este ejemplo estoy asignando a la variable $f la función que estoy definiendo (¡No el resultado de su evaluación! No te confundas). Y…
Leer más
Cómo se usan los callbacks en PHP

Cómo se usan los callbacks en PHP

Cómo hacer para...
[caption id="attachment_651" align="aligncenter" width="640"] Hand holding phone coming out from laptop. Contact us flat illustration. Eps8[/caption] Este es uno de mis temas preferidos cuando a PHP se refiere. Debo confesar que lo descubrí bastante tarde, pero fue prácticamente amor a primera vista. Veamos un ejemplo: Si tengo un array con números ( [ 1, 2, 3, 4, 5 ] ) y quiero obtener sólo los números pares, la forma normal de hacerlo sería algo como: $pares = []; foreach ( $numeros as $numero ) {    if ( $numero % 2 == 0 ) {        $pares[] = $numero;    } } Levantemos un poco el nivel de abstracción: function esPar( $numero ) { return $numero % 2 == 0; } $pares = []; foreach ( $numeros as $numero…
Leer más
Cómo interactuar con Excel desde PHP

Cómo interactuar con Excel desde PHP

Cómo hacer para...
Un problema bastante común en el desarrollo de aplicaciones para empresas es la interacción con Excel (Levantar datos, generar planillas, etc...). Un modo sencillo de evadir el problema (y que muchas veces funciona), es exportar la información hacia archivos de texto separados por comas (Los famosos CSV) y luego tratarlos desde PHP con funciones como fgetcsv. Obviamente, esto servirá si se trata de una aplicación que sólo requiere leer datos... ¿Qué pasa si necesitamos generarlos? (O si la estructura de la planilla en cuestión es algo más compleja). Como en la mayoría de los casos, existen diversas opciones de solución. Una particularmente buena es la librería PHPExcel PHPSpreadSheet. Escribir un archivo Excel usando PHP Un detalle importante de la librería PHPSpreadSheet es que permite interactuar con planillas de cálculo diversas (xls,…
Leer más