PHP - imagen al azar (sirve para firmas)

Topic created · 15 Mensajes · 1542 Visitas
  • Objetivo: Conseguir mostrar una imagen de forma aleatoria de entre un conjunto de ellas.
    Lenguaje: PHP

    • Sólo 25 líneas de código
    • Soporta distintos formatos de imagen (jpg, png, gif... tantos como quieras)

    Ejemplo de funcionamiento (abre el enlace varias veces):
    pinchame varias veces

    Por cierto, es el sistema que uso en firmas dinámicas como la mía 😉

    Bien, necesitamos un host (cualquier gratuito mierdosillo va que se mata), única condición: que soporte PHP (si no soporta php hoy día no puede ni llamarse hosting... pero bueno, cosas más raras se han visto).
    Una vez creada cuenta en un hosting (000webhost, awardspace...), accedemos ya sea vía ftp o vía administrador de archivos por web y creamos una carpeta llamada "firmas".
    Dentro, metemos tantas firmas como queramos con la única condición de que se llamarán:
    sig1
    sig2
    sig3
    etc etc

    La extensión da igual.
    Una vez tengamos la carpeta con las firmas, subimos al directorio inmediatamente superior y creamos un archivo php. Lo llamaremos por ejemplo: salvatore.php y tendrá el siguiente código:

    Las primeras líneas son simples asignaciones. Asignamos el máximo de firmas a 7 (si tienes 5, pues pon 5 cacho bruto!), asignamos el nombre base de las firmas, en nuestro caso son sig1, sig2, así que sig%s es la base (%s será el número q se va incrementando), asignamos el nombre de la carpeta q contiene las firmas y por último la lista de las distintas extensiones posibles para las firmas (se pueden añadir más).

    Bien, una vez asignado, empezamos:
    Vamos a necesitar sacar un número aleatorio entre 1 y el máximo de firmas y añadir ese número al nombre base:
    $rndnum = rand(1, $max);
    $file = sprintf($filename, $rndnum);

    fácil, bien, ahora ya tenemos un sigX aleatorio, petro ¿qué extensión tendrá? Porque resulta que tengo las firmas mezcladas, la sig1 es jpg, pero otra es png, otra es gif...
    Pues nada, a probar jeje, probamos a ver si es jpg, si no hay suerte, pues probamos la siguiente extensión... y así hasta encontrar la buena (o hasta q hayamos probado todas sin éxito, cosa q no debería ocurrir jeje).
    Aquí entra en juego el while.
    la variable $i sirve para recorrer el array de extensiones. Por eso empieza en cero.

    Veamos lo que tiene el while dentro:
    dentro del while creamos un nombre de imagen, por ejemplo:
    "firmas/sig4.jpg"
    En el if miramos si existe. Que existe, pues ale, terminamos.
    Si no existe, aumentamos la $i, para que pruebe con la siguiente extensión.
    Y eso hace el while.

    Cuando salimos del while, redireccionamos a la imagen aleatoria que hemos conseguido (o error si no había firma, por algún error de configuración o porque falte algún archivo de imagen):
    header('Location:'.$imagen);

    Es bastante sencillo, y os lo he desmenuzado casi al máximo. Dudas y todo eso preguntad!

  • o_O

    Te lo iba a preguntar por mp jajajajjajaajaj

    Graciaaas salva ^:)^ en cuanto pueda lo hagoooo 😄

    Muchisims gracias en serio, muy util.

  • UUUUUUGGGGGGGJJJJJJJ 😛
    Se agradece Dr.House ^^ hace tiempo trataba de poner una cosa así pero pfff, me daba palo como es lógico.
    Crear ahora un host, bajarse el filezilla y tal...

    Me pregunto si es lo mismo como era antes, (antes hará 3 años o así xD)
    Yo me registraba en un host gratutito cutre, donde subía mi página web con sistema Nuked-Klan vía filezilla. Cuando te registras te dan unos números y tal que es la base de datos, es decir, me conecto con un programa FTP a la base o al host, meto las imágienes con el nick "sig1/2/3 etc", creamos el archivo .php lo hacemos a nuestro gustirrinin y listo? O_o

    Pues me pondré a ello en unos minutillos, se agradece :x

  • pero no se puede establecer un orden? es decir, primero esta, despues esta y luego la otra xD? EL UNICO PLOBLEMA ES QUE TENDRIA QUE USAR PHP

  • oye, hacemos una página de firmas dinámicas? Que uno se pueda registrar, subir sus firmas, y que la página se encargue de darle su enlace a la firma dinámica?
    Es sencillo, el registro lo tengo hecho... subir archivos tengo por ahí algo tipo imageshack que habría que modificar un poco pero sirve...
    es sencillo jeje. ¿quién se anima?

  • @Salvatore said:

    oye, hacemos una página de firmas dinámicas? Que uno se pueda registrar, subir sus firmas, y que la página se encargue de darle su enlace a la firma dinámica?
    Es sencillo, el registro lo tengo hecho... subir archivos tengo por ahí algo tipo imageshack que habría que modificar un poco pero sirve...
    es sencillo jeje. ¿quién se anima?

    Meee encanta la ideea, eestaria increible el foro 😄

  • YOOOOMEANIMOOOOOOOOOOOOH SALVA! jajajajaja

    me hice la picha un lio con eso de la database :3

  • vale, pues voy a crear una cuenta en un host gratuito para ir haciendo cosas, y que los que quieran puedan acceder sin problemas.
    Si funciona bien podemos ponerlo en el host del foro.

  • salva, podrias luego tambien ponerlo al lao de web principal foro blogg.....

  • bueno, ya tengo creada una cuenta en un hosting gratuito para ir construyendo la web.
    la idea que tengo es una web donde una persona tenga que seguir estos pasos:
    1. Registrarse (con confirmación de email)
    2. Identificarse con su usuario y contraseña
    3. Subir 1 o más imágenes
    4. Obtener su link de "firma dinámica"

    Opcionalmente:

    • Añadir más firmas
    • Eliminar firmas

    Básicamente eso es lo que habría que implementar.

    En cuanto a la disposición de estas opciones en la web:
    * Portada, con un cuadro de login y un cuadro de registro.
    * Mis firmas (accesible únicamente para usuarios identificados), donde poder ver todas las firmas subidas así como el enlace a la firma dinámica. En esta misma página, un checkbox al lado de cada firma para marcar las que se quieren eliminar. Así como el botón de "añadir firma" que nos llevaría a la siguiente página
    * Añadir firma (accesible solo para usuarios identificados), donde el usuario puede subir una imagen con un peso y dimensiones máximas, que automáticamente quedará añadida a su firma dinámica.

    Posteriormente se podría pensar en permitir al usuario tener varias firmas dinámicas, es decir, distintas colecciones. Por si quiere usar firmas dinámicas distintas en varios foros, aunque también podría registrar una nueva cuent y punto...

    ¿problemas, sugerencias, pegas, matices?