Tema: FAQ's de PHP
Ver Mensaje Individual
  #36 (permalink)  
Antiguo 28/12/2002, 12:05
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 11 meses
Puntos: 129
Tema: Uso de rand() (numeros aleatorios) - ejemplo práctico.

Pregunta: Como puedo mostrar una imagen aleatoria de una lista.?

Respuesta:

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

imagen_aleatoria.php
Código PHP:
<?php
//**************************************
//*                                    *
//*        Imagenes Aleatorias         *
//*    By Cluster ([email protected])    *
//*   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 imagenes (si fuera necesario usar imagenes/imagen.php o como corresponda la ruta .. indicarla). El array usa indices autonumericos .. así que no hay q preocuparse del mismo .. tan solo borren o añadan las entradas de imagenes 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 imagenes (.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

Última edición por Cluster; 03/11/2003 a las 08:36