Hey, bienvenidos!
Mi nombre es Marcelo Ferreiro, y cree esta web para aprender php, compartiendolo con el mundo, mi idea es postear primero las lecciones más básicas y luego ir compartiendo todo lo que voy aprendiendo. Recursos, tutorials, y manuales de PHP. Espero que os sea tan útil como a mi.
Marcelo Ferreiro - Autor

Nueva web: Pixelar.me

Hola!

Por medio de este anuncio quería compartir con todos los lectores de PHPnight que con mucha alegría hace tan sólo unas semanas inauguré una web que contendrá todo el contenido de PHPnight e incluso más, ya que tendrá una temática más amplia y se tratarán temas, no sólo de Programación PHP, sino además de todo lo que es Desarrollo Web en general.

Por lo tanto, te invito a visitar Pixelar.me, puedes seguirnos en twitter (@pixelarme) y suscribirte al feed RSS o vía Email ;)

Pixelar.me

El contenido de PHPnight, ya puede encontrarse en su totalidad en la sección PHP de Pixelar.me, pero de momento también seguirá siendo accesible en PHPnight.com, los nuevos artículos sobre PHP (el más reciente: Subir imágenes mediante PHP) estarán disponibles sólo en Pixelar.me.

Definir imagen por defecto

Visto en WebIntenta, comparto con ustedes una forma sencilla para definir una imagen por defecto que se cargue cuando cualquier otra imagen que llamemos no se encuentre.

Simplemente debemos agregar estas 2 líneas en el .htaccess:

1
2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]

Obviamente puedes cambiar la extención (.jpg) y el nombre del archivo por defecto (default.jpg) acorde a tu necesidad.

Restar dias a una fecha en PHP

Un post super cortito, pero bien útil para cuando necesitamos restarle días (u horas) a una fecha.
Simplemente tomamos time() que nos da el tiempo actual en segundos y le restamos la cantidad de segundos que querramos (60 para un minuto, 60*60 para una hora, o 24*60*60 para un día entero). Por ejemplo:

1
2
3
4
5
6
7
8
// Restamos un día
$fecha_menos24hs = date('Y-m-d H:i:s',time()-(24*60*60));
 
// Restamos dos días
$fecha_menos48hs = date('Y-m-d H:i:s',time()-(2*24*60*60));
 
// Restamos siete horas
$fecha_menos7hs = date('Y-m-d H:i:s',time()-(7*60*60));

Espero que les haya sido útil ;)

Pedido personal

No suelo publicar nada personal en este sitio (para eso tengo mi blog), pero por primera vez haré una excepción.

veroMi hermana, lectora de PHPnight, así como de todos mis proyectos, ha participado en un concurso de diseño, el premio del cuál es una beca para poder estudiar la carrera que ella quiere (Diseño de Interiores), y como soy fiel creyente de que debemos seguir nuestros sueños y debemos intentar siempre hacer lo que realmente nos gusta, quiero desde acá apoyarla (y todos quienes deseen colaborar) votandola aquí: http://bit.ly/uDGrD (es el proyecto Burbujas).

proyecto-vero

Simplemente eso, muchas gracias y sorry por el off-topic ;)

Programación Orientada a Objetos en PHP (Parte I)

Una de las ventajas que ofrece PHP desde su versión 5.0 es la capacidad de utilizar completamente el paradigma de programación que se conoce como Programación Orientada a Objetos (POO de ahora en adelante). POO utiliza “objetos” estructuras de datos que consisten en propiedades y métodos. Este paradigma intenta representar las partes de una aplicación y/o la aplicación completa de una forma más humana.

Componentes pilares de la POO.
Para entender la POO es necesario dominar los siguientes conceptos.

Objeto. Se refiere comúnmente a atributos (elementos) y comportamientos (métodos) encapsulados en una entidad. Son un método natural para implementar estructuras de datos abstractos, trayendo “físicamente” componentes de datos con procedimientos para luego manipularlos. Todo objeto tiene estado, exhibe un comportamiento bien definido y posee identidad única.

Clase. Es un tipo de dato definido por el programador que determina las estructuras de datos que lo forman y las funciones asociadas con él, es decir es un modelo con el que se construyen los objetos.
Se define como el constructor utilizado como “plano” para crear un Objeto. Describe el estado y el comportamiento del objeto creado. Un objeto creado por una Clase es una instancia de la clase y la clase que creó esa instancia es considerado como el tipo del objeto. Un ejemplo de un objeto creado por una clase “fruta” sería “piña”, otro “pera” y así sucesivamente. Es la abstracción de un concepto.

Instancia. Se crea cuando una construye un objeto. Las instancias de una clase comparten los mismo atributos pero pueden diferir en qué los atributos contengan. Por ejemplo una clase “Persona” describe los atributos comunes de una persona; cada persona es generalmente parecida, pero varía en atributos como “altura” y “peso”. La clase listaría tipos de atributos, así como también las acciones que una persona podría realizar: “saltar”, “caminar”, “andar”, “comer”. La instancia es el objeto creado en tiempo de corrida de una aplicación. Otro ejemplo sería: “Lassie” es una instancia de la clase “Perro” y así también “Pluto” sería otra instancia de la misma clase.

(seguir leyendo…)

Sistema para controlar visualizaciones de Boletines o Newsletter

El otro día tuve que realizar un pequeño script que permitiece guardar logs (registros) de qué usuarios recibían y abrían un boletín o email promocional que se enviaría a una gran base de suscriptores.

La que creo es la mejor opción, aunque por supuesto me encantaría escuchar otras opiniones, es incluir en el HTML del boletín una imágen de 1×1px que llame en el src=”…” a un archivo PHP, por ejemplo logs.php

De modo que el HTML nos quedaría de la siguiente forma:

1
2
3
4
5
6
7
8
9
<html>
<head>
...
</head>
<body>
<img src="ruta/logs.php?email=email@correo.com" alt="" width="1" height="1" />
<!-- Resto del contenido HTML del boletín -->
</body>
</html>

En el PHP lo que deberíamos hacer, sería: guardar en la BBDD el dato de que el correo email@correo.com ha abierto el email el día XX y hora YY (correspondiente al día-hora de ese momento) y luego crear una imagen vacía de 1×1 píxels para que la imagen no de error al mostrarse ;)

Para guardar los datos debemos usar algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$link=mysql_connect('HOST','USUARIO','PASSWORD');
mysql_select_db('BBDD');
 
// Chequeamos...
$sql = 'SELECT * FROM 'TABLA' WHERE email = "'.$_GET['email'].'"';
$pedido = mysql_query($sql);
$resultado = mysql_fetch_array($pedido);
$id = $resultado['id'];
 
if($id == ""){ // Si no existe, creamos el registro
$sql = "INSERT INTO 'TABLA' (`email` ,`fecha` ,`veces`) VALUES ('".$_GET['email']."', NOW(), 1);";
mysql_db_query('BBDD',$sql);
}else{ // Si ya existe, aumentamos la cant. de veces
$sql = "UPDATE 'TABLA' SET `email` = '".$_GET['email']."', `fecha` = NOW(), `veces` = veces+1 WHERE id = ".$id;
mysql_db_query('BBDD',$sql);
}

Y luego para crear y mostrar la imágen:

1
2
3
4
$im = imagecreatetruecolor(1, 1); // creamos una imágen de 1x1
header('Content-type: image/jpeg'); // definimos la cabecera
imagejpeg($im, NULL, 100); // muestra la imagen
imagedestroy($im); // y por último la destruye para liberar la memoria

¿Qué opinas? ¿Crees que es una buena forma de loggear las aperturas de un boletín o email? ¿Se te ocurre alguna idea mejor? Compártela! :)

CC - 2008 - PHPnight - Sitemap
CMS: WordPress, theme by nEUtrOniCs, translated and modified by Marcelo Ferreiro.