Leer ficheros Excel desde PHP

Aunque no es lo más recomendable importar en una aplicación web ficheros Excel, lo más lógico sería guardar el archivo como CSV y luego usarlo en la aplicación, hay veces que lo que nos pide el cliente nos puede obligar a tener que leer ficheros Excel en nuestra aplicación.
Para ello usaremos la librería PHP-ExcelReader, siendo necesaria la librería OLE. Por ahora PHP-ExcelReader solo soporta BIFF7 y BIFF8, que son los formatos de archivo que usan Excel 95 hasta Excel 2003.
PHP-ExcelReader
Vía / 7bytes

|

AjaxCore: framework de PHP para Ajax

Ya en otras ocasiones hemos hablado de frameworks de PHP y para aumentar la lista y las alternativas, vamos a hablar de un nuevo framework de PHP pensado en facilitar el desarrollo con Ajax.
Se trata de AjaxCore, un framework cuyo propósito es facilitar el desarrollo de aplicaciones web con Ajax, encargándose de la generación del código Javascript necesario. Usa la librería de Javascript prototype para controlar el uso de las llamadas XMLHTTPRequest.
AjaxCore
Vía / Ajaxian

| |

Escritura el campos blob en MySQL y PHP

Muy buen artículo que explica cómo almacenar imágenes en campos blob usando MySQL y PHP, el post explica realmente cómo crear galerías de imágenes almacenándolas en campos blob. Yo personalmente no soy muy partidario de esta opción, cuando realmente se debería guardar la ruta de la imagen en el servidor y que el servidor web se encargue de enviar la imágen, ya que si no, lo que hacemos es hacer trabajar bastante a la BD.
De todas formas, el artículo puede sernos útil para saber como almacenar en este tipo de campos, porque aunque el ejemplo no sea del todo correcto, en alguna ocasión si que vamos a necesitar guardar datos en campos blob.
Muy bien explicado, añade conceptos básicos de protección por contraseña, actualización y borrado de imágenes, a parte de un par de consejos sobre los problemas que nos podemos encontrar con la capacidad máxima que se permite subir al servidor usando PHP.
PHP MySQL example: image gallery (blob-storage)
Vía / Good PHP Tutorials

|

Lógica de aplicación y plantillas mediante PHP

Cuando desarrollamos una aplicación web, algo muy importante es separar la lógica de la aplicación de la presentación. En el siguiente artículo, nos comentan como hacerlo mediante PHP y el sistema de plantillas Smarty.

Primero nos explica la direfencia entre la lógica de aplicación, la cual se encarga de las operaciones como acceso a base de datos, validación de formularios, de la lógica de plantillas, que es la que se preocupa únicamente de mostrar la información.

Dentro de la lógica de aplicación nos tenemos que ocupar de la inicialización y configuración de la lógica de plantillas:

<?php
$smarty = new Smarty();
$smarty->display('index.tpl');
?>

Y en la plantilla mostraremos la información:

<p>
Title: {$title|strtoupper}
Summary: {$summary|truncate}
</p>

Hay que tener cuidado de no cometer el error de en la plantilla modificar el formato del texto, por ejemplo quitarle espacios u otras cosas que corresponden a la lógica de aplicación.

Os recomiendo el artículo, porque viene muy claramente explicado, con ejemplos y nos puede ser de mucha ayuda.

Application logic versus template logic

Técnicas de anti-spam con PHP

spam.pngEl spam se ha convertido en uno de los mayores problemas con los que nos podemos enfrentar a la hora de desarrollar una aplicación web. Si estás en el proceso de creación de una aplicación, te va a venir bastante bien la lectura de los artículos que os pasamos a continuación y de los que hacemos un pequeño resumen.

Las técnicas para luchar contra el spam se pueden dividir en dos:

  • Proteger a la gente que participa en tu web de sufrir spam.
  • Proteger a la propia web del spam.

Si permites que los usuarios puedan participar en tu web, también deberás tener en cuenta que si su dirección de correo electrónico se hace pública puede ser usada para el envio masivo de spam. Al igual, si pones una dirección de email para que contacten contigo, también puedes ser víctima de todos estos mensajes.

Para evitar que los spammers usen tu e-mail, podemos usar varias técnicas:

  • Ofuscación: sustituir los caracteres de la dirección de correo electrónico por sus respectivos hexadecimales.
<a href="mailto:%61%6e%74%69%73%70%61%6d%40%65%78%61%6d%70%6c%65%2e%63%6f%6d">
&#x61;&#x6e;&#x74;&#x69;&#x73;&#x70;&#x61;&#x6d;  <!-- antispam -->
&#x40; <!-- @ -->
&#x65;&#x78;&#x61;&#x6d;&#x70;&#x6c;&#x65;        <!-- example -->
&#x2e; <!-- . -->
&#x63;&#x6f;&#x6d; <!-- com -->
</a>
  • Reescribir: Tan sencillo como cambiar antispam@example.com por antispam [ARROBA] example [PUNTO] com.
  • Uso de imágenes: sustituir la dirección de correo electrónico por una imagen que muestre el mismo texto, ya sea mediante una imagen estática o una dinámica creada mediante PHP.
  • Uso de formularios: aunque no te evita del todo el spam, si no muestras tu email y usas un formulario en su lugar, conseguirás que te llegue menos spam.

Lo siguiente a tener en cuenta es evitar que nuestra web sufra spam, para ello disponemos de tres técnicas:

  • CAPTCHA: se trata de mostrar una imagen con un texto distorsionado para que los programa de reconocimiento de caracteres no puedan leerlo, y que así solo sea una persona quien lo lea y escriba su contenido en un campo del formulario. Esta técnica es muy buena, salvo que en ocasiones hay spammers que ofrecen contenido tipo pornografía o cracks a cambio de que el usuario se registre en una de estas web, y así saltarse esta técnica.
  • Moderadores: se trata de que personas aprueben el contenido de los mensajes antes de que sean publicados.
  • Filtros: tener filtros de palabras no permitidas, así como direcciones IP o números de enlaces posibles que identifiquen los mensajes como posibles spam.
  • Validación de email: se envia un email con una url que valida y finaliza el proceso de inscripción.

Anti-spam techniques in PHP, Part 1

Anti-spam techniques in PHP, Part 2

Vía / Good PHP Tutorials

Gráficos 3D con PHP

Si el otro día hablábamos de crear gráficos 3D con Javascript, ahora le toca el turno a PHP. Se trata de una librería que dibuja modelos en 3D, proporcionando las coordenadas de los vértices, permitiendo diferentes ficheros de datos y modelos básicos para poder ser usados. Además, es posible realizar rotación del modelo dado un eje y un ángulo.
3dphp.png
Convex 3D
Vía / dzone

|

Listas de correo con PHP y AJAX

En SitePoint siempre sacan algún tutorial útil y que nos puede facilitar mucho nuestros desarrollos. En este caso se trata de listas de correos, quizás con el tema de las feeds, ya no se usen mucho, pero conozco a unos cuantos que aún tiran de ellas.

A grandes rasgos se trata de lo siguiente:

  • Un HTML dentro de un PHP que recibe las direcciones de correo de los usuarios.
  • Un Javascript que leerá cada cierto tiempo el formulario y realizará una llamada AJAX al servidor con la dirección de correo introducida.
  • Un script PHP que recibe la dirección, comprueba si es correcta, la almacena en la base de datos y manda un mensaje de que todo ha ido bien o de que ha habido error a la página web para que la muestre al usuario.

Use AJAX and PHP to Build your Mailing List

Lista de librerías de manipulación de imágenes en PHP

Según la Ley del Mínimo Esfuerzo, no hagas lo que ya han hecho otros, y en este caso, si estás interesado en manipulación de imágenes mediante PHP, te puede interesar esta lista de librerías o scripts para la manipulación de imagenes mediante PHP.

  • GD image resize transparent gif: script para cambiar el tamaño de un GIF transparente usando GD.
  • Image Thumb: crear miniaturas (thumbnails).
  • phpThumb(): permite crear miniaturas de nuestras imágenes, exportando a distintos formatos y pudiendo aplicar diversos filtros.
  • GDGraph: crea gráficas de barra, pastel.
  • PanaChart: gráficas en menos de 2 Kb. y en menos de 20 ms.
  • OIC: conversor de formatos de imágenes.
  • PHPaint: crea botones dinámicamente.
  • GraPHPico: genera graficos en formato .PNG, actualmente existen los estilos Porcentaje, Barras y Pastel.
  • GD- Sombras: crea textos con sombras.
  • JpGraph: completísima utilidad para la creación de gráficos.
  • PHPGD: recursos para la manipulación y creación de imágenes con PHP y GD.
  • Unsharp Mask for PHP: máscara unsharp para imágenes.
  • PHPLOT: una ‘biblioteca’ para generar todos tipo de gráficos sobre estadísticas varias. (Gracias alidhaey)

En Sentido Web

|

Internacionalización mediante PHP

Yo creo que el hecho de usar multilenguaje en un sitio web puede ser algo muy importante, sobre todo si deseas que tenga bastante repercusión. En Sentido Web ya hay entradas que trata el tema del multi-idioma ya sea mediante Apache o aportando recursos.

Esta vez vamos a hablar sobre un método que nos muestran en PHPBuilder. Se trata de tener varios ficheros para almacenar los textos traducidos, un fichero para cada idioma admitido (en.php, es.php, fr.php, de.php …) en el cual tendremos un array que contendrá código-traducción. En este caso, también hay un array para las imágenes, por si hay botones con texto que son realmente imágenes:

<?php
// Textos a traducir
$dicc['text'] = array (
'welcome' => 'Bienvenidos',
'thanks' => 'Gracias por participar',
...
);
// Imágenes especificas para idiomas
$dicc['imgsrc'] = array (
'title' => 'graphics/title.es.png',
'footer' => 'graphics/footer.es.jpg',
..
);
?>

Ahora solo falta obtener el idioma o asignar uno por defecto, importar el script específico del idioma seleccionado y usarlo.

// Buscamos si el idioma está especificado en la URL
if (isset($_GET['lang'])) {
// Si lo está, lo introducimos en una coockie para tenerlo la próxima vez
$lang = $_GET['lang'];
setcookie('lang', $lang, time()+(3600*24*365));
} else if (isset($_COOKIE['lang'])) {
// Miramos si lo está en una cookie
$lang = $_COOKIE['lang'];
} else {
// Por defecto en inglés
$lang = 'en';
}
// Obtenemos las traducciones
require_once "{$lang}.php"
echo $dicc['text']['welcome'];

Claro, que a parte de un diccionario/traductor se puede usar un directorio específico para cada idioma que contenga el contenido en ese idioma. Por ejemplo en un sitio de noticias no puedes tener un diccionario para introducir todo el texto de la noticia.

Afortunadamente los frameworks actuales como Seagull ya nos ofrencen módulos que nos facilitan esta labor.

Localizing a Web Page for Different Languages

Vía / dzone