Feb 16

Imágenes aleatorias en PHP

Sigo jugando con PHP. Lo siguiente que se me ocurrió fue poner un chiste aleatorio en mi página. Así que cogí unos cuantos chistes de internet (esta es la parte divertida) y los guardé en un directorio en el servidor de mi página. Luego a investigar con php cómo se lee el contenido de un directorio para poner la imagen.

Me encontré con la función scandir(), que te devuelve un array con los nombres de los ficheros dentro del directorio. También devuelve los subdirectorios "." y "..".

A partir de ahí fué fácil, simplemente llamar a rand (2, $numeroFicheros). Lo de 2 para que se salte el 0 y el 1 que corresponden a los dos subdirectorios "." y "..". List todo. Lo pruebo en mi ordenador con mi propio servidor web de prueba y va estupendamente. Lo subo a mi servidor oficial, lo prueba y no va.

Una cosa que me llama poderosísimamente la atención es lo fácil que es todo en la teoría y como se complica la realidad. Me pongo a investigar y resulta que scandir() está disponible a partir de PHP 5. En casa tengo PHP 5, en el servidor del hosting tengo PHP 4. A buscar más.

Al final encontré la función glob(), a la que le pasas un patrón, estilo "imagenes/*" y te devuelve todos los ficheros que cumplen el patrón. No es lo mismo que scandir(), pero vale perfectamente. Esta función si es válida …. a partir de PHP 4.3.0 … Me voy al servidor, con más miedo que verguenza, a ver qué versión exacta tiene, no vaya a ser …  ¡¡Buff!!, tiene la 4.4.4.

glob() no devuelve los subdirectorios "." y "..", así que a cambiar el rand() por rand(0,$numeroFicheros)

Al final el código PHP quedó así

<?php
        $fichero = glob (‘chistes/*’);
        $chiste = rand(0,count($fichero)-1);
        print(‘<img src="’.$fichero[$chiste].’" alt="chiste" /> ‘);
?>

Entradas relacionadas:

  • No hay entradas relacionadas.

Leave a Reply