# PHP Random images + LINKS on each one



## lykos92 (Mar 9, 2008)

Hi, I have a problem. I have an HTML file with this line:
<a href="#"><img class="ads" src="ads/randomimage5.php" /></a>

The "randomimages5.php" is this:

```
<?php
/*
By Matt Mullenweg > http://photomatt.net
Inspired by Dan Benjamin > http://hiveware.com/imagerotator.php
Latest version always at:
http://photomatt.net/scripts/randomimage
*/// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = 'ads/';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif bmp';

$files = array(); $i = -1; // Initialize some variables
if ('' == $folder) $folder = './';

$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) **
foreach($exts as $ext) ** // for each extension check the extension
if (preg_match('/\.'.$ext.'$/i', $file, $test)) ** // faster than ereg, case insensitive
$files[] = $file; // it's good
++$i;
}
}
}
closedir($handle); // We're not using it anymore
mt_srand((double)microtime()*1000000); // seed for PHP < 4.2
$rand = mt_rand(0, $i); // $i was incremented as we went along

header('Location: '.$folder.$files[$rand]); // Voila!
?>
```
As you see, the PHP script searches for all the image files in folder "ads" and shows just one, chosen randomly. It works just fine. But I also want each image to have its own link. For example, if the image "google.jpg" gets chosen, i want it to have a link to "www.google.com" for example. Links for all the images. Is this possible?


----------



## lykos92 (Mar 9, 2008)

All right, I found this code:


```
<?php
// Random Image With Link PHP Script
// Butterfly Media Romania Blog
// http://blog.butterflymedia.ro/
//
// Usage:
// 
// Save this file as ads.php and use the include function to call it inside your web site

function display_random_img($array) **
	$key = rand(0 , count($array) -1);
	$link_url = $array[$key]['url'];
	$alt_tag = $array[$key]['alt'];
	$random_img_url = $array[$key]['img_url'];
	list($img_width, $img_height) = getimagesize($random_img_url);
	return "<a href=\"$link_url\"><img src=\"$random_img_url\" width=\"$img_width\" height=\"$img_height\" alt=\"$alt_tag\" /></a>";
}

// Edit the following values accordingly
$ads_array = array(
	array(
		'url' => 'http://www.google.com/',
		'alt' => 'Google',
		'img_url' => 'images/1.png'
	),
	array(
		'url' => 'http://www.yahoo.com/',
		'alt' => 'Yahoo!',
		'img_url' => 'images/2.png'
	),
	array(
		'url' => 'http://www.msn.com/',
		'alt' => 'MSN',
		'img_url' => 'images/3.png'
	)
);

echo display_random_img($ads_array);
?>
```
which shows a random picture from the list (images/1.png,2png,3png) and puts and an a-href at it. Works perfect. But I have another question:
Is there a way to put it many times into an HTML file? I know it is, but it appears the same picture in every page. This is because the browser connects with the PHP on the server only once and it shows the result whenever it is needed. But I would like a script that connects to the PHP every time it is mentioned in the HTML file, not only the first one. I believe that this can be easy, through javascript. Thanks.


----------



## Redcore (Aug 14, 2007)

Maybe try adding a random number at the end of each instance - like "randomimage.php?random=30098j0439d873"...


----------

