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.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
