PHP:¿Cómo puedo mostrar una imagen aleatoria de una lista?

De Foros del Web

Usando la función rand() podemos hacer que PHP seleccione aleatoriamente un número entre un rango. Ese número lo podemos usar como índice para leer un array donde tengamos las URL's de las imágenes. Seguidamente generamos las cabeceras HTTP correspondientes y se lo enviamos al navegador.

imagen_aleatoria.php

Código PHP:

<?php 
//************************************** 
//*                                    * 
//*        Imagenes Aleatorias         * 
//*    By Cluster (clus@hotpop.com)    * 
//*   28/12/2002 - Versión 1.0         * 
//*                                    * 
//*  Uso:                              * 
//*  <img src="imagen_aleatoria.php">  * 
//*                                    * 
//************************************** 
 
// Array con las imagenes (URL fisico en el servidor). 
// El indice es autonumerico .. tan solo añadir o quitar entradas segun se necesite. 
$imagenes[]="imagen1.jpg"; 
$imagenes[]="imagen2.gif"; 
$imagenes[]="imagen3.jpg"; 
 
// Seleccion aleatoria imagen. 
$aleatoria=rand(0,count($imagenes)-1); 
 
// Buscar la extension de la imagen 
$tipo_ext=explode(".",$imagenes[$aleatoria]); 
$tipo=$tipo_ext[1]; 
 
// Formar la cabecera HTTP para imagen segun su extensión 
 
// Enviamos cabecera al navegador para avisar q va una imagen de $tipo 
header("Content-type: image/$tipo"); 
// Le ponemos el nombre de la imagen .. Al dar a descargar aparecera con este nombre. Puede dejarse uno fijo. 
header("Content-Disposition: inline; filename=".$imagenes[$aleatoria]); 
 
// Leer la imagen de su URL y entregarla al buffer de salida 
readfile ($imagenes[$aleatoria]); 
 
?> 

Su uso es bien sencillo:

1) El array $imagenes[] contiene los URL's de las imágenes (si fuera necesario usar imagenes/imagen.php o como corresponda la ruta .. indicarla). El array usa índices autonuméricos .. así que no hay que preocuparse del mismo .. tan sólo borren o añadan las entradas de imágenes que necesiten.

2) Su uso: <img scr="nombre_que_le_den_al_script.php"> (y ruta si fuera necesario obviamente) .. Cada vez que carge la página se seleccionará una imagen de la lista que contiene el array $imagenes.

En teoría funciona con todo tipo de imágenes (.jpg, .png, .gif ..) No así con .swf (de Flash) pues se usan otras cabeceras HTTP ..

Un saludo,

PD: Desde PHP 4.2.0 no es necesario iniciar el generador de números aleatorios. Más info en www.php.net/rand


--Cluster 03 Nov 2003

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales