Come mostrare immagine random con php

Come mostrare immagine random con php

Forse avrete notato, lì in basso, nel footer, che ho aggiunto un’immagine sponsor del nuovo hosting provider.

Trattandosi di un link con referral, come altri lì nel footer, eventuali acquisti fatti passando da quel link faranno guadagnare anche me…

Detto ciò, le immagini che mi piacevano erano due, ma inserirle entrambe non era praticabile, né esteticamente apprezzabile.

Così ho pensato di randomizzarle tramite php, magari usando il solito e comodo glob…

Tramite glob, infatti, avrei potuto facilmente cercare le immagini messe in una specifica directory e quindi visualizzarle in modo random.

Codice di esempio:

 <?php  $images = glob('*.jpg');// only if jpg, or: $images = glob('*.{jpg,jpeg,png,gif}', GLOB_BRACE); $image = $images[array_rand($images)];  header("Content-Type: image/jpeg");//only if include jpg file include($image);// or: echo $image;  ?>

ma poi ho pensato che trattandosi di poche immagini (due sole, per l’esattezza), non aveva molto senso farle cercare via glob ad ogni richiesta della pagina, e quindi ho fatto così: Ho creato – via ftp – una directory chiamata “vhosting” con all’interno le due immagini rinominate in: image1.jpg, ed image2.jpg; quindi, nella stessa directory, ho creato un file php dal nome vhost_rand.php

Infine, all’interno di questo file php ho inserito questo codice:

 <?php  // include > image1.jpg OR image2.jpg header("Content-Type: image/jpeg");//only if include include("image".mt_rand(1,2).".jpg");// mt_rand($min, $max)  ?>

Risultato: https://www.laltroweb.it/_script/vhosting/vhost_rand.php

Come potete notare non è glob o scandir e simili. Non cerca nella directory per trovare tutte le immagini e poi randomizzare l’esecuzione prendendone una a caso. Qui abbiamo già i nomi e questi, semplicemente, vengono randomizzati tramite php. Quindi, in parole povere, ci risparmiamo la fatica di andarle a cercare i nomi dei file e inserirli in un array tramite glob.

PS: Ho usato include nel php anziché stampare direttamente il codice html dell’immagine,

e poi: include(‘file.php’); nel nostro template…

 <atitle="Title"href="http://example.com/">   <img src="http://example.com/banner<?=mt_rand(1,2)?>.jpg" width="125" height="125" alt="Random Banner"> </a>

così da poter usare il file php come fosse l’immagine stessa e quindi inserire direttamente questo link nel tag img. Usando include, però, è importante ricordarsi di inserire inserire  header (“Content-Type: image/***extension***”);  altrimenti anziché vedere l’immagine vedrete il suo codice sorgente (una serie di caratteri illeggibili).

Diversamente, generando direttamente il codice html, poi bisognerebbe fare l’include all’interno del template prestando attenzione al percorso del file (e non sempre nel template è possibile includere file php).


Insomma, è solo un piccolo esempio, che può tornare molto utile, però, in simili circostanze 😉

Aggiornato e alleggerito il codice 🙂




Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.