Cómo subir archivos a un servidor usando php

Cómo subir archivos a un servidor usando php

Cómo hacer para...
La subida de archivos a un servidor se compone de dos partes: El envío del archivoEl procesamiento una vez que se recibió Cómo enviar un archivo a un servidor desde un formulario HTML La primera parte es simplemente un poco de HTML. El elemento que se utiliza para indicar que se va a querer enviar un archivo es file: <input type="file" name="archivo"> Algunos detalles importantes: El formulario que contiene una subida de archivos debe llevar un atributo que generalmente se ignora: enctype (Tipo de codificación). Además, debe indicarse el tamaño máximo del archivo a enviar (mediante un campo oculto). Ejemplo: <form enctype="multipart/form-data" action="procesarArchivo.php" method="POST"> <!-- El nombre de este campo siempre debe ser MAX_FILE_SIZE --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> Enviar este fichero: <input name="archivo" type="file" /> <input type="submit" value="Subir"…
Leer más
Cómo autenticar usuarios en una aplicación web con PHP

Cómo autenticar usuarios en una aplicación web con PHP

Cómo hacer para...
Este es un tema que suele causar bastante confusión en la gente que se enfrenta con este problema por primera vez... hay tantos usuarios/passwords/niveles de autenticación que si no se presta mucha atención es fácil perderse. Lo principal es entender que la autenticación es un proceso de comunicación entre dos entidades: Un clienteUn servidor El cliente es el que se identifica (generalmente utilizando un par "nombre de usuario" + "contraseña") y el servidor es quien valida esas credenciales y devuelve algún tipo de identificador de acceso. Podríamos pensarlo como el guardián de una discoteca en una fiesta privada. Cualquiera puede pararse ante el grandote y decirle que es uno de los invitados, pero si tu nombre no figura en la lista... por más que patalees, te vas a quedar afuera…
Leer más
Cómo autenticar usuarios con redes sociales en PHP

Cómo autenticar usuarios con redes sociales en PHP

Cómo hacer para...
Algo que se ha puesto bastante de moda últimamente es la posibilidad de logearse en un sitio cualquiera usando un usuario creado para otro (Por ejemplo, logearte a StackOverflow usando tu Gmail o a Clarin usando tu Facebook). Este enfoque presenta varias ventajas: Para el usuario significa no tener que inventar (¡y recordar!) una contraseña más y, por si eso fuera poco, ingresar a tu sitio haciendo un solo click. Para el sitio significa no tener que almacenar información de usuarios ni hacer un doble-opt-in (Se asume que el proveedor de autenticación ya ha validado la identidad del usuario). Ahora bien, desde el punto de vista de tu aplicación... ¿cómo podés implementar esto? La mayoría de los grandes proveedores de autenticación (Gmail, Facebook, Twitter, etc...) utilizan un protocolo que se conoce como OAuth, muy…
Leer más
Cómo autenticar usuarios vía HTTP usando PHP

Cómo autenticar usuarios vía HTTP usando PHP

Cómo hacer para...
La autenticación a nivel de HTTP se activa mediante la configuración del webserver. Es el nivel más bajo de autenticación que puede tenerse en un entorno web, ya que lo que va a verificar es que el cliente que solicita un determinado recurso (URI) tenga acceso a él, antes de hacer ningún otro tipo de verificación. De lo que estoy hablando es de lo que sucede cuando querés ingresar a un sitio, por ejemplo http://localhost y, en lugar de ver el contenido del sitio, se abre una ventana como esta:  Por lo general, no es mucho lo que puede validarse (No hay posibilidad de ofrecer diferentes niveles de acceso ni nada parecido), con lo cual, no es algo que suela utilizarse en entornos de acceso público. La forma de configurar este…
Leer más
Cómo almacenar archivos en una base de datos MySQL

Cómo almacenar archivos en una base de datos MySQL

Cómo hacer para...
Un clásico problema de una aplicación web es el almacenamiento de archivos subidos por los usuarios (Sus fotos por ejemplo). Si bien teóricamente se puede realizar sin mayores inconvenientes (Al fin y al cabo, un archivo digital no es más que una colección de datos binarios), es sumamente ineficiente hacerlo. Veamos cómo sería esto: Primero que nada, habría que manejar de alguna forma el upload de archivos, pero, asumiendo que el archivo ya está disponible para php se podría pensar en almacenarlo dentro de la base de datos utilizando algún campo tipo BLOB. Un problema inmediato que surge de tomar esta opción es que la base de datos crecerá mucho si el sistema es muy utilizado, lo cual impactará negativamente en su rendimiento, hará más costozos los backups, etc... Una…
Leer más
Cómo ejecutar stored procedures de MySQL usando PHP

Cómo ejecutar stored procedures de MySQL usando PHP

Cómo hacer para...
Un procedimiento almacenado es una herramienta que permite almacenar código ejecutable directamente en la base de datos. Personalmente no lo considero una práctica muy recomendable por varias razones: La idea de tener lógica de negocio fuera del código de mi aplicación me da cierta desconfianza (No me gusta no poder entender todo lo que está pasando en mi aplicación sólo con ver su código). Llegado el caso de tener que migrar de motor de base de datos el tener procedimientos almacenados puede convertirse en un problema Aún así, entiendo que puede haber situaciones en las que sea conveniente recurrir a ellos... especialmente cuando se trata de operaciones suamente complejas/pesadas o que tienen que ver estrictamente con el mantenimiento de la base de datos. ¿Cómo se llaman desde PHP? http://php.net/manual/es/mysqli.quickstart.stored-procedures.php http://www.mysqltutorial.org/php-calling-mysql-stored-procedures/
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): Habilitar el acceso a la API via OAuth (https://console.developers.google.com/apis/api/drive/overview?project=MI_PROYECTO): Crear las credenciales de acceso vía OAuth: Seleccionar OAuth: Descargar las credenciales a un lugar seguro: 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 la librería google/apiclient (Te recomiendo incorporarla con composer), acá podés ver un ejemplo de…
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 desde PHP

Cómo enviar emails desde PHP

Cómo hacer para...
Es muy común la necesidad de enviar emails 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 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: PHPMailerSwiftMailerZendMail Cualquiera de estas resultará más adecuada que el uso de la simple función mail en contextos en los que la performance sea una preocupación (Por ejemplo, cuando hay alto tráfico en el…
Leer más