Artículos

¿Cuál es la diferencia entre PDO y MySQLi?

¿Cuál es la diferencia entre PDO y MySQLi?

Conceptos
Si me decís que estás desarrollando una aplicación web usando PHP y no me das más datos, cerrando los ojos diría que estás usando una base de datos MySQL y, seguro que en el 80% de los casos acertaría. Es un hecho: PHP y MySQL son un dúo muy común en este mundillo. Lo que no está tan definido es cuál es el mejor modo de conectarse a MySQL utilizando PHP. A priori destacan dos: MySQLiPDO Ambos pueden usarse para armar CRUDs, reportes y cualquier otra necesidad que implique comunicar una aplicación PHP con una base de datos MySQL. Entonces... ¿cómo elegir? Para hacerte (algo) más fácil la tarea te voy a comentar brevemente de qué se trata cada uno. Qué es MySQLi MySQLi es una extensión de PHP creada…
Leer más
¿Qué son las extensiones de PHP?

¿Qué son las extensiones de PHP?

Conceptos
Quién no se cruzó con mensajes como: Debes tener instalada/habilitada la extension en PHP sobre GD Pero... ¿qué es exactamente una extensión de PHP? Para comprenderlo debes conocer un poco cómo funciona PHP internamente. A continuación te daré una visión algo simplificada, si quieres una explicación completa y detallada te recomiendo este excelente tutorial de Diego Lázaro. PHP es un lenguaje interpretado, lo que significa que para ejecutar una aplicación escrita en PHP se requiere de un proceso auxiliar llamado intérprete (Si usas Windows ese proceso será php.exe, si usas Linux o similares será el binario php). Este binario se ha generado a partir de la compilación de una base de código C, la cual, como es abierta, cualquiera con los conocimientos necesarios puede leer y alterar a su antojo.…
Leer más
Cómo exportar una tabla de MySQL a Excel usando PHP

Cómo exportar una tabla de MySQL a Excel usando PHP

Cómo hacer para...
Seguro que te ha pasado algo como esto: creaste una aplicación con su base de datos, con unas funcionalidades espectaculares, fantásticos reportes y al momento de la demo... la pregunta tan temida: "¿Cómo puedo hacer para llevar toda esta información a Excel?" Y en tu cabeza suena: "¿A Excel? ¿En serio? Pero si se puede hacer todo mucho mejor con esta aplicación... ¿para qué querrías usar una planilla de cálculo?" Creeme, no estás solo, a todos nos ha pasado. La triste realidad es que difícilmente vayas a ganar la batalla... más vale amigarte con el Excel (y ganar algo de dinero mientras tanto, ¿no?). Una de las razones más comunes que se escuchan por ahí es que a través de Excel es fácil compartir la información con otros sistemas (Personalmente…
Leer más
Cómo saber cuáles son los procedimientos que tiene un WebService SOAP usando PHP

Cómo saber cuáles son los procedimientos que tiene un WebService SOAP usando PHP

Cómo hacer para...
Consumir Servicios Web basados en SOAP es una tarea muy común estos días, especialmente cuando se trata de integrar con entidades gubernamentales (Típico caso es la facturación electrónica). Una de las características interesantes que tiene este protocolo (SOAP) es que están definidas en forma explícita las operaciones disponibles a través de un archivo de descripción de WebService (WSDL). La desventaja es que, salvo que conozcas bien la especificación, leer un archivo como este puede ser algo complicado: <?xml version = "1.0" encoding = "utf-8"?> <definitions name="WS_EmissionFactura" targetNamespace="Gx" xmlns:wsdlns="Gx" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="Gx"> <types> <schema targetNamespace="Gx" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" elementFormDefault="qualified"> <element name="WS_EmissionFactura.Execute"> <complexType> <sequence> <element minOccurs="1" maxOccurs="1" name="Xmlrecepcao" type="xsd:string" /> </sequence> </complexType> </element> <element name="WS_EmissionFactura.ExecuteResponse"> <complexType> <sequence> <element minOccurs="1" maxOccurs="1" name="Xmlretorno" type="xsd:string" /> </sequence> </complexType> </element> </schema> </types> <message name="WS_EmissionFactura.ExecuteSoapIn"> <part name="parameters"…
Leer más
¿Qué tan «globales» son las variables globales en PHP?

¿Qué tan «globales» son las variables globales en PHP?

Conceptos
Parece una pregunta rara, ¿no? Seguro estás pensando "¿Dónde está la trampa?", ¿cierto? En general se entiende que una variable global es aquella que está presente (es decir, puede ser leída y modificada) en cualquier lugar de un programa. El caso de PHP es algo particular. Para comenzar si hicieras algo como esto: <?php $global = 'Soy una variable global'; function f() { echo '$global dentro de f vale: "'.$global.'"'.PHP_EOL; } echo '$global fuera de f vale: "'.$global.'"'.PHP_EOL; f(); Esperarías ver: $global fuera de f vale: "Soy una variable global" $global dentro de f vale: "Soy una variable global" Y sin embargo, si ejecutás este script verás: $global fuera de f vale: "Soy una variable global" $global dentro de f vale: "" Y, en el reporte de errores encontrarás: PHP…
Leer más
Cómo compartir la conexión a MySQL entre scripts PHP

Cómo compartir la conexión a MySQL entre scripts PHP

Cómo hacer para...
Leo frecuentemente comentarios como: Al guardar la conexión a MySQL usando serialize y unserialize me da errores O Guardo la conexión a la BD en una variable de sesión pero después cuando consulto ese valor desde otra página no existe En un contexto de alta concurrencia esto puede suponer un gran desperdicio de recursos e incluso convertirse en un cuello de botella. Sin embargo, la solución no es guardar la conexión dentro de la sesión... de hecho, eso no va a funcionar. Se trata de un caso muy particular, pero existe una alternativa. Qué son las conexiones permanentes a MySQL En el uso normal de las conexiones a MySQL (usando, por ejemplo mysqli_connect), al finalizar la ejecución del script se cierran automáticamente las conexiones que hayan sido abiertas. Si tenemos…
Leer más
Implementación de roles basada en PHP y MySQL

Implementación de roles basada en PHP y MySQL

Ejemplos
Una pregunta que veo a menudo: Estoy haciendo un inicio de sesión en php. el usuario solo debe ingresar su nombre y sera re direccionado dependiendo del rol que tenga. Estoy realizando un sistema en php y mysql quisiera saber cómo trabajar con múltiples sesiones como por ejemplo que tenga una cuenta de administrador y pueda trabajar con toda las páginas y tener cuenta de usuario que algunos vean cierta cantidad de páginas y realizar pocas funciones en el sistema ¿Cómo debo crear una sesión para el administrador? ¿En qué lugar de la aplicación se tiene que reflejar?El usuario normal no debe ver esa parte que le corresponde al Administrador. quiero ingresar roles de usuario en mi código pero no se como hacerlo. Voy a crear una aplicación web para…
Leer más
¿Qué puede guardarse en las sesiones PHP?

¿Qué puede guardarse en las sesiones PHP?

Conceptos
Es un hecho: las sesiones de PHP son una fuente de confusión y frustración para muchos desarrolladores. Desde mi punto de vista, el problema es que hay muchos puntos de fallo posible. En este artículo quiero detenerme sobre un punto que, si bien parece simple, tiene sus grises. Todo el mundo pre-supone que las sesiones son una suerte de baúl mágico donde puede guardarse cualquier cosa y, cual juego de rol, acompaña al héroe a donde vaya. La realidad no es tan así. Hay algunos objetos que no pueden ser almacenados en las sesiones PHP. Un ejemplo que veo con frecuencia es código similar a este: include("Conexion.php"); $Conexion = Conectar(); --> Donde conectar es una funcion que conecta a mysql $_SESSION['Conex'] = $Conexion; Y luego, al querer levantar el dato…
Leer más
Por qué se pierden las variables de sesión PHP

Por qué se pierden las variables de sesión PHP

Conceptos
¿Algo de esto te pasó alguna vez? Estoy haciendo un login y todo va perfecto hasta el momento que al subirlo a mi ftp comprueba que el usuario este registrado y que el password este correcto y me crea una variable de session pero en las paginas donde accedo despues del login no reciben esa variable de session y por ello no me deja verlo Tengo unas paginas que intercambian variables de sesion entre ellas y cuando en una pagina en especifico le doy al boton que me redirecciona a otro lugar la session se pierde (ando poniendo session_start() en todos los inicios de las paginas). Durante meses estuvo funcionando bien hasta que los que me proveen el servicio de hosting se les ocurrio cambiar el servidor, a partir de…
Leer más
Cómo funcionan las sesiones en PHP

Cómo funcionan las sesiones en PHP

Conceptos
Una fuente de mucha frustración y confusión para quienes arrancan con PHP es el manejo de sesiones. Hay muchas partes móviles y, a veces, tener todo esto en la cabeza marea... En este artículo intentaré hacer un repaso por cuáles son esas partes y cómo interactúan entre sí de modo que no te queden dudas respecto de cómo usar esta poderosa herramienta. Para qué sirven las sesiones Por supuesto que no puedo avanzar sin antes hablar de lo más importante: ¿para qué sirven las sesiones? O, dicho de otro modo: ¿por qué querrías complicarte la vida entendiendo todo esto? En pocas palabras: las sesiones sirven para compartir información no entre una página y otra (Un formulario HTML y el php que lo procesa por ejemplo), si no entre todas las…
Leer más