Archive for abril, 2011

abril 25, 2011 1

Parsear XML en PHP con SimpleXML

By in PHP

SimpleXML nos permite parsear un XML de una forma sencilla y usable. Para ello nos provee de una serie de funciones y de una clase para la manipulación de XML. Aquí solo vamos a ver la función simplexml_load_file, para ver un ejemplo, pero podemos ver el resto en la documentación de SimpleXML.

Supongamos que tenemos el siguiente archivo XML:

<?xml version="1.0" encoding="UTF-8"?>
<libros>
  <libro id="0">
    <titulo>Ubik</titulo>
    <autor>Philip K. Dick</autor>
</libro>
  <libro id="1">
    <titulo>La fundación</titulo>
    <autor>Isaac Asimov</autor>
  </libro>
  <libro id="2">
    <titulo>El señor de los anillos</titulo>
    <autor>J.R.R. Tolkien</autor>
  </libro>
</libros>

Con el siguiente código cargaríamos el archivo y mostraríamos un listado de los libros con el formato “id:titulo:autor”:

<?php

$libros = simplexml_load_file('libros.xml');

foreach($libros->libro as $libro)
{
 echo $libro['id'].':'.$libro->titulo.':'.$libro->autor."\n";
}

Como podemos ver cargamos el archivo libros.xml en un objeto al que hemos llamado $libros. Este objeto modelará el XML mediante arrays que contienen los elementos del xml. Las propiedades de cada elemento están implementadas como un array asociativo.

Como hemos podido ver en esta breve introducción es muy sencillo parsear un xml con SimpleML. Recomiendo revisar la documentación de este módulo para conocer todas las posibilidades que nos ofrece.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: ,

abril 19, 2011 0

Como evitar el hotlinking

By in General, Herramientas

El hotlinking es un grave problema puesto que consume parte del ancho de banda de nuestros servidores, y este ancho de banda se paga. Mediante mod_rewrite de apache podemos solucionar este problema de varias formas:

  1. Evitando que determinados sitios puedan hacer hotlinking (enemigos específicos).
  2. Permitir el hotlinking solo a sitios determinados (lista de amigos).

Lo que vamos a hacer en ambos casos es reescribir la dirección solicitada, desde un sitio que no tenga permiso para hacer hotlinking, por otra imagen distinta, o bien una pequeña e invisible (lo más recomendable para minimizar el consumo de transferencia) o bien por una imagen que advierta de que se está haciendo hotlinking (la versión vengadora). Vamos ahora con el primer método:

1-. Evitando que determinados sitios puedan hacer hotlinking (enemigos específicos):

Para implementar este método vamos a añadir lo siguiente a nuestro archivo .htaccess:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?enemigo1\.es/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?enemigo2\.org/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?enemigo3\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagenes/hotlinking.jpg [L]

De esta forma evitamos que pueda hacer hotlinking desde los dominios especificados. Para ello le indicamos que cuando se referencie a una imagen (jpg, gif, bmp o png) de nuestro servidor desde los dominios indicados se les envíe el contenido de otra dirección, en nuestro caso la imagen que queremos mostrar cuando se haga hotlinking.

2-. Permitir el hotlinking solo a stios determinados (lista de amigos):

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?misitio\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?amigo1\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?amigo2\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagenes/hotlinking.jpg [L]

De esta forma rescribimos la dirección para todas las referencias a nuestras imágenes desde cualquier sitio, salvo para los indicados en la lista (donde deberemos incluir también nuestro sitio).

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , ,

abril 15, 2011 0

Cambios en el blog y vuelta de verdad

By in General

Se están haciendo algunos cambios en el blog, visuales principalmente. Es posible que durante unos días se vean algunas cosas raras, aunque intentaré que las molestias sean mínimas.

Los últimos meses he estado bastante liado, con proyectos personales que no me han dejado tiempo libre para poder dedicarle al blog el tiempo que necesita, pero en un par de semanas volveré a escribir, esta vez será de verdad, siempre que las circunstancias lo permitan.

Me gustaría pedir disculpas también a las personas que han comentado o que se han puesto en contacto conmigo por email por no contestar. Cuando alguien pregunta algo que no se o que no tengo muy claro intentó buscar las respuesta, hacer pruebas, etc, para asegurarme de que aquello que respondo sea correcto o por lo menos una buena guía para encaminar el problema, y eso lleva bastante tiempo, tiempo que últimamente no he tenido.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto