Archive

Archive for the ‘PHP’ Category

VPS Baratos (a precio asumible)

November 22nd, 2011 No comments

Desde hace poco conozco a Evidalia Host, son una empresa seria y que tiene un muy buen soporte al cliente.

He visto que ofrecen lo siguiente:

Características Servidores VPS VPS BÁSICO 1 VPS BÁSICO 2 VPS 30 VPS 100
Precio Mensual 12€  10.80 €
-10% en
planes
nuevos
16€  13.60 €
-15% en
planes
nuevos
23€  18.40 €
-20% en
planes
nuevos
45€  33.75 €
-25% en
planes
nuevos
Memoria RAM Garantizada 512 MB 768 GB 1 GB 2 GB
Memoria RAM Compartida (Bursted) 1GB 1.5 GB 2 GB 3 GB
Dominios Alojados (ampliables) 10 10 30 100
Espacio en Disco 5 GB 15 GB 30 GB 50 GB
Transferencia Mensual 200 GB 500 GB 800 GB 1000 GB
Direcciones IP (ampliables) 1 1 2 2
Servidores DNS Propios
Panel Virtuozzo
Reinicio Remoto Panel de Control
Backup Automático
Restauración Imagen Servidor
Tarea Programadas Cron
Sistema Operativo Linux Centos Centos Centos Centos
Panel de Control en Español Plesk Plesk Plesk Plesk
Acceso SSH (root)
Firewall
PHP 5 y MySQL 5
Servidor Apache
Servidor FTP
Reinstalación
Correo SMTP, POP3/IMAP, Webmail
Cuentas Correo Ilimitadas Ilimitadas Ilimitadas Ilimitadas
Capacidad por Cuenta Ilimitado Ilimitado Ilimitado Ilimitado
Categories: Apache, Internet, MySQL, PHP Tags: , , , , ,

TCPDF + MySQL

July 14th, 2011 No comments

Como hay mucha gente que no sabe como enlazar TCPDF con MySQL, y ya vimos anteriormente como hacer un documento básico, ahora voy a dejar aquí un ejemplo de como se podría enlazar.

El ejemplo esta basado en el exemple_011.php (original) de la colección de ejemplos de TCPDF.

El resultado del ejemplo sería un documento como este: Ejemplo TCPDF + MySQL

mysql_connect("localhost","root","");
mysql_select_db("information_schema");

require_once('../config/lang/eng.php');
require_once('../tcpdf.php');

// extend TCPF with custom functions
class MYPDF extends TCPDF {

	// Colored table
	public function ColoredTable($header,$data) {
		// Colors, line width and bold font
		$this->SetFillColor(255, 0, 0);
		$this->SetTextColor(255);
		$this->SetDrawColor(128, 0, 0);
		$this->SetLineWidth(0.3);
		$this->SetFont('', 'B');
		// Header
		$w = array(50, 80, 50);
		$num_headers = count($header);
		for($i = 0; $i < $num_headers; ++$i) { 			$this->Cell($w[$i], 7, $header[$i], 1, 0, 'C', 1);
		}
		$this->Ln();
		// Color and font restoration
		$this->SetFillColor(224, 235, 255);
		$this->SetTextColor(0);
		$this->SetFont('');
		// Data
		$fill = 0;
		foreach($data as $row) {
			$this->Cell($w[0], 6, $row[0], 'LR', 0, 'L', $fill);
			$this->Cell($w[1], 6, $row[1], 'LR', 0, 'L', $fill);
			$this->Cell($w[2], 6, $row[2], 'LR', 0, 'L', $fill);
			$this->Ln();
			$fill=!$fill;
		}
		$this->Cell(array_sum($w), 0, '', 'T');
	}
}

// create new PDF document
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Jordi Girones');
$pdf->SetTitle('TCPDF Tutorial - TCPDF + MySQL');
$pdf->SetSubject('TCPDF Tutorial - TCPDF + MySQL');
$pdf->SetKeywords('TCPDF, PDF, example, test, mysql');

// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 011', PDF_HEADER_STRING);

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

//set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

//set some language-dependent strings
$pdf->setLanguageArray($l);

// ---------------------------------------------------------

// set font
$pdf->SetFont('helvetica', '', 12);

// add a page
$pdf->AddPage();

//Column titles
$header = array('Schema', 'Name', 'Engine');

//Data loading
$sql = "SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE FROM tables WHERE TABLE_SCHEMA IN ('information_schema','mysql','phpmyadmin') ORDER BY TABLE_SCHEMA ASC";
$rs = mysql_query($sql);
if (mysql_num_rows($rs)>0){
	while($rw = mysql_fetch_array($rs)){
		$data[] = $rw;
	}
}

// print colored table
$pdf->ColoredTable($header, $data);

// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('example_011.pdf', 'I');

//============================================================+
// END OF FILE
//============================================================+
Categories: MySQL, PHP Tags: , ,

Actualizar PHP, MySQL en dedicado con Plesk

August 2nd, 2010 3 comments

En este nuevo post, vamos a tratar de actualizar nuestra versión de MySQL y PHP en un servidor dedicado administrador mediante el panel de control Plesk.

Muchos dicen que es peligroso hacer este tipo de actualizaciones, yo lo hice en mi propio servidor porqué no tenia nada que si lo perdiese era excesivamente grave (además, se solucionaria dejando las versiones anteriores).

Para actualizar PHP y MySQL en nuestro servidor con Plesk, es bien sencillo, solo tenemos que realizar dos pasos.

wget -q -O – http://www.atomicorp.com/installers/atomic.sh | sh

Con esto lo que hacemos es añadir el repositorio Atomic a nuestro sistema (este repositorio tiene las últimas versiones de PHP y MySQL. Con lo que ya podemos trabajar con YUM con este repositorio. El paso siguiente es actualizar como hemos dicho mediante YUM los paquetes referentes a PHP y MySQL. Para ello, basta con escribir lo siguiente:

yum update php mysql

YUM nos informará de cuantos paquetes se instalan de nuevo y los que se actualizarán. Nos informará de la cantidad de datos que necesita descargar del repositorio y solo necesitará una confirmación para empezar a descargar los nuevos paquetes. Una vez el YUM haya terminado de instalar/actualizar los paquetes de PHP y MySQL, solo tendremos que reiniciar nuestro Apache

/etc/init.d/httpd restart o /etc/init.d/apache restart

Si queremos podemos hacer uso de la funcion phpinfo() para ver que la versión de PHP se ha actualizado correctamente. O bien también podemos verlo por consola, con el siguiente comando:

php -v

De esta forma podemos actualizar los PHP y MySQL anteriores a las versiones estables más actuales. Este procedimiento ha sido probado en un servidor dedicado CentOS + Plesk contratado en OVH Hispano.

Evitar cache de ficheros CSS y JS

May 4th, 2010 No comments

Uno de los problemas habituales que tenemos los desarrolladores, es evitar las caches de los navegadores. Frecuentemente este es un problema al inicio y no después cuando el proyecto ya es estable.

Ahora voy a exponer el último método que he hecho servidor para evitar la cache de ficheros CSS y JS. Se trata de combinar PHP con el mod_rewrite del Apache.

Primero que nada, crearemos una función que nos devuelva el nombre (con anticache) del fichero.


function getAntiCache($file){

  $firma = '';

  $info = pathinfo($file);

  if (file_exists(DIR_FS_CATALOG.$file)){

    $firma = md5_file(DIR_FS_CATALOG.$file);

  }else{

    $firma = md5(rand(10000,99999));

  }

  return $info['dirname'].'/'.$info['filename'].'-'.$firma.'.'.$info['extension'];

}

echo getAntiCache('/recursos/css/www.css');
// Sacara por pantalla /recursos/css/www-{md5_file}.css

Como vemos en el nombre del fichero se incluye la firma en MD5 del fichero, por lo que cada vez que se cambie el contenido del fichero, la firma MD5 cambiará y el nombre del fichero cambiará. Aunque en realidad el nombre del fichero sea siempre el mismo.

Esto lo haremos de puertas hacia fuera con el mod_rewrite del Apache, el recibirá una petición por un fichero que no existe y la transformará a un fichero que si que existe, xq nosotros lo configuraremos así.

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^recursos/css/(.*)-(.*).css$ /recursos/css/$1.css?cache=$2 [s=100,QSA]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^recursos/js/(.*)-(.*).js$ /recursos/js/$1.js?cache=$2 [s=100,QSA]

Con esto vemos que los clientes nos realizaran peticiones del tipo /recursos/css/web-123ab123eHq132321.css pero que en realiadad van al fichero /recursos/css/web.css de esta forma como obligamos a que el nombre del fichero cambia, no hay cache posible por parte del navegador para este tipo de ficheros.

Espero que este método os sirva de ayuda igual que me ha servido a mi.

Categories: CSS, PHP Tags: , , , , ,

Número de páginas en TCPDF

April 26th, 2010 No comments

Hoy comentamos uno de los métodos que nos puede resultar bastante útil en algunas ocasiones, se trata de getAliasNbPages, su aplicación es la de devolver el número de páginas que tenemos cuando tenemos un objeto TCPDF.

El método podemos consultarlo en la documentación oficial de la libreria:

http://www.tecnick.com/pagefiles/tcpdf/doc/com-tecnick-tcpdf/TCPDF.html#methodgetAliasNbPages

Categories: PHP Tags: ,

Crear un documento básico con TCPDF

April 24th, 2010 8 comments

Después de ver el otro día la libreria TCPDF,hoy vamos a empezar a hacer cositas…

Aquí tenemos un ejemplo básico de como crear un documento PDF con un contenido bastante simple con la libreria TCPDF

// Rutas donde tendremos la libreria y el fichero de idiomas.
require_once('../tcpdf.php');

// Crear el documento
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// Información referente al PDF
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Jordi Girones');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// Contenido de la cabecera
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);

// Fuente de la cabecera y el pie de página
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// Márgenes
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// Saltos de página automáticos.
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// Establecer el ratio para las imagenes que se puedan utilizar
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// Establecer la fuente
$pdf->SetFont('times', 'BI', 16);

// Añadir página
$pdf->AddPage();

// Escribir una línea con el método CELL
$pdf->Cell(0, 12, 'Example 001', 1, 1, 'C');

// ---------------------------------------------------------

//Cerramos y damos salida al fichero PDF
$pdf->Output('example_001.pdf', 'I');
Categories: PHP Tags: , , , , , , ,

Libreria PHP para crear PDF

April 17th, 2010 No comments

Despues de algún tiempo, aquí pongo una libreria para crear documentos PDF mediante PHP de forma fácil y sencilla.

Se trata de TCPDF. Este paquete tiene las siguiente características, además de caracterizarse por su facilidad de uso.

  • No requiere ningúna libreria externa para funcionar.
  • Soporta todos los formatos de páginas ISO, también tiene formatos de página personalizables así como los márgenes y las unidades de medida.
  • UTF-8 Unicode y idiomas de lectura de izquierda a derecha.
  • Fuentes TrueTypeUnicode, OpenTypeUnicode, TrueType, OpenType, Type1 y CID-0.
  • Métodos para publicar XHTML, Javascript y formularios.
  • Métodos para imágenes, figuras geométricas y transformaciones.
  • Códigos de barras: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index – Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, QR-Code.
  • Escala de grises, RGB, CMYK y transparencias.
  • Gestor de cabeceras y pies de páginas.
  • Encriptación de documentos y certificados de firma digital.
  • Anotaciones en PDF, incluyendo enlaces, textos y ficheros adjuntos.
  • Modos diferentes de renderizado de texto.
  • Multiples columnas.
  • Marcadores y tabla de contenidos.
  • Saltos de página automáticos, saltos de línea y justificación de texto.
  • Numeración de páginas y grupos.
  • Mover y eliminar páginas.
  • Compresión de páginas.

En la página web del proyecto se pueden ver multitud de ejemplos de como utilizar esta libreria.

TCPDF :: http://www.tcpdf.org/

Categories: PHP Tags: , , ,

Apache + MySQL + PHP en Debian 5

August 20th, 2009 3 comments

Hola, este post es fruto de la necesidad. Necesitaba un sistema para pruebas basado en Linux y he optado por probar Debian, ya que nunca lo había utilizado.

Nuestra finalidad es la de dejar el sistema disponible para actual de servidor web con php + mysql

Veámos paso a paso como debemos de ir instalando las cosas.

Todos los comandos que se usan, son por consola en modo root.

Paso 1: Instalar servidor Apache en Debian:

# apt-get install apache2

Esto instalará el servidor web, por defecto, la carpeta donde se almacenaran los ficheros es /var/www

Paso 2: Instalar PHP y sus librerias en Debian:

# apt-get install php5 php5-cli php5-gd php5-mcrypt php5-curl php5-imagick php5-mhash php5-sqlite php5-xsl

Nótese que la mayoría de paquetes aparte del php5, son librerias adicionales de PHP. En este ejemplo hemos puesto algunas de las más habituales.

Paso 3: Instalar el módulo de Apache para PHP5 en Debian:

# apt-get install libapache2-mod-php5

Con este módulo, podremos hacer que nuestro Apache sea capaz de interpretar las páginas con código PHP

Paso 4: Instalar servidor MySQL en Debian:

# apt-get install mysql-server

Este paquete es el necesario para poder tener un servidor de base de datos MySQL en nuestro sistema. Una vez descargado el paquete, empezará la instalación y nos pedirá un password para el usuario root de MySQL

Paso 5:Instalar libreria de PHP5 para comunicación con MySQL en Debian:

# apt-get install php5-mysql

Esta libreria no la hemos incluido antes, debido a que quiero remarcar la importancia que tiene. Sin ella, nuestras páginas PHP no podrán comunicarse con la base de datos. Así que es una librería fundamental si queremos trabajar con PHP+MySQL

Una vez hemo todo esto, nuestro sistema está listo, vamos a probarlo.

Deberíamos de poder acceder desde nuestro navegador web a http://localhost/

Si sustituimos el fichero index.html por un index.php cuyo contenido sea:

<?php phpinfo();?>

Deberíamos ver nuestro navegador un resumen con toda la información de PHP en nuestro sistema.

Pasos Adicionales:

Si nuestro impetu va más alla y queremos cambiar parámetros de PHP o la configuracio de Apache, o cualquier cosa de la configuración de MySQL las rutas donde se encuentran los ficheros de configuración son las siguientes:

Apache: /etc/apache2/apache2.conf
PHP: /etc/php5/apache2/php.ini
MySQL: /etc/mysql/my.cnf

Una vez modificados los ficheros de configuración, recuerda que debes de reiniciar los servicios, para que los cambios se vean reflejados.

# /etc/apache2 restart
# /etc/mysql restart

Con esto finalizamos este pequeño tutorial de como instalar Apache+MySQL+PHP en Debian.

Espero que os sea de ayuda.

Categories: Apache, Linux, MySQL, PHP Tags: , , , , ,