Archivos para Php

Generar códigos de barras con PHP y PEAR:Image_Barcode

Ante la necesidad de generar códigos de barras mediante PHP, he encontrado el paquete de PEAR Image_Barcode.

La instalación no puede ser más sencilla en Ubuntu 8.04. Image_Barcode se encuentra en los repositorios en forma de módulo de PHP (php-image-barcode). Ha instalado Pear y Gd como dependencias y ya está.

Con un:

sudo apt-get install php-image-barcode

Ya tenemos instalado todo lo necesario

En caso de no tener hasta ahora Gd, se hace necesario reiniciar apache:

sudo /etc/init.d/apache2 restart

Bien, ahora ya podemos ejecutar el ejemplo que nos dan en la documentación:
[PHP]
require_once ‘Image/Barcode.php’;
Image_Barcode::draw(‘1234′, ‘int25′, ‘png’);

[/PHP]
Nos generará la siguiente imagen:

En nuestro caso necesitamos generar códigos con letras y descripciones, por esta razón utilizamos el tipo de código “code128″, quedando el ejemplo de la siguiente manera:

[PHP]
require_once ‘Image/Barcode.php’;
Image_Barcode::draw(‘ControlZeta’, ‘code128′, ‘png’);

[/PHP]
Se nos genera esta otra imagen:

Código de barras alfanumérico con Control Zeta

Hasta aquí todo perfecto, pero… Estos códigos son demasiado altos para el uso que se les va a dar, así que necesitamos disminuir el alto del código. Una opción seria modificar directamente la altura de la imagen, pero esto “achataría” el texto inferior. No nos interesa.

Evidentemente hemos ido a la documentación oficial: http://pear.php.net/package/Image_Barcode/docs

Tras no ser capaz de encontrar ningún método para modificar la altura de códigos de barras code128 (cualquier ayuda será bienvenida) he ido directamente a la clase para ver como podía modificar esta altura. Mi sorpresa ha sido no encontrar ningún método que hiciera lo que necesitaba, pero en cambio, me encontrado con esta simple porción de código nada más empezar a leer:

[PHP]

class Image_Barcode_code128 extends Image_Barcode
{
var $_type = ‘code128′;
var $_barcodeheight = 60;
var $_font = 2;
var $_barwidth = 1;
var $code;

[/PHP]

Evidentemente, he cambiado el valor $_barcodeheight y todo ha funcionado a la perfección, pero estoy seguro que hay algún motivo para que este valor sea fijo. ¿Alguien tiene alguna explicación al respecto?

Por cierto, el resultado final es este:

Comentarios (3)

Usuarios online en PHP & MySQL

<?php
//BD
include(‘conexion.php’);
// Minutos maximos de inactividad
$minutos= 10;
// Momento cuando entra el usuario a la web
$fecha= time() ;
// IP del usuario
$ip = $REMOTE_ADDR ;
// Tiempo Limite de espera, en este ejemplo es el tiempo actual menos 10 minutos
$limite = $fecha-$minutos*60 ;
// si se supera el tiempo limite (10 minutos) lo borramos
mysql_query(“delete from gente_online where date < $limite”) ;
// miramos si la ip del visitante ya existe
$resp = mysql_query(“select * from gente_online where ip=’$ip’”) ;
// Si existe la actualizamos
if(mysql_num_rows($resp) != 0) {
mysql_query(“update gente_online set date=’$date’ where ip=’$ip’”) ;
}
// de lo contrario lo insertamos
else {
mysql_query(“insert into gente_online (date,ip) values (‘$date’,'$ip’)”) ;
}
// Seleccionamos toda la tabla
$query = “SELECT * FROM gente_online”;
$resp = @mysql_query($query) or die(mysql_error());
// en la variable usuarios habra el total de fias(ip unicas) de nuestra tabla
$usuarios = mysql_num_rows($resp);
// Montamos la frase, teniendo en cueta plural, singular y el 0
if($usuarios==0){
echo “No hay”;
}else{
echo “Hay”;
}

if($usuarios > 1 || $usuarios == 0){
echo “$usuarios usuarios en línea.”;
}else{
echo “$usuarios usuario en línea.”;
}
?>

Por supuesto, en el include inicial tiene que haber la conexion a la base de datos.

Y la tabla a la cual hacemos referencia es esta:

create table gente_online (
date int not null,
ip varchar(40) not null
);

Comentarios (2)