PDA

View Full Version : Multiple images signature rotator


Liorchen
08-29-2006, 09:41 PM
My users always want to have a few images in their signature, something that we don't allow. So I was thinking, it would be cool if there will be a mod where they could specify a few images URLs, and it would write a script in their signature to rotate between those images - to generate a different signature everytime the page loads.

Ntfu2
08-29-2006, 10:20 PM
do you allow linking of dynamic images in signatures?

One could write a php script that rotates random images then simply link to that as their signature


[img-] http://www.site.com/rotate.php [-/img]


Then the rotate.php could use this script

<?php
/*
INSTRUCTIONS
1. Modify the $folder setting in the configuration section below.
2. Add image types if needed (most users can ignore that part).
3. Upload this file (rotate.php) to your webserver. I recommend
uploading it to the same folder as your images.
4. Link to the file as you would any normal image file, like this:

<img src="http://example.com/rotate.php">

5. You can also specify the image to display like this:

<img src="http://example.com/rotate.php?img=gorilla.jpg">

This would specify that an image named "gorilla.jpg" located
in the image-rotation folder should be displayed.

That's it, you're done.

*/




/* ------------------------- CONFIGURATION -----------------------


Set $folder to the full path to the location of your images.
For example: $folder = '/user/me/example.com/images/';
If the rotate.php file will be in the same folder as your
images then you should leave it set to $folder = '.';

*/


$folder = '.';


/*

Most users can safely ignore this part. If you're a programmer,
keep reading, if not, you're done. Go get some coffee.

If you'd like to enable additional image types other than
gif, jpg, and png, add a duplicate line to the section below
for the new image type.

Add the new file-type, single-quoted, inside brackets.

Add the mime-type to be sent to the browser, also single-quoted,
after the equal sign.

For example:

PDF Files:

$extList['pdf'] = 'application/pdf';

CSS Files:

$extList['css'] = 'text/css';

You can even serve up random HTML files:

$extList['html'] = 'text/html';
$extList['htm'] = 'text/html';

Just be sure your mime-type definition is correct!

*/

$extList = array();
$extList['gif'] = 'image/gif';
$extList['jpg'] = 'image/jpeg';
$extList['jpeg'] = 'image/jpeg';
$extList['png'] = 'image/png';


// You don't need to edit anything after this point.


// --------------------- END CONFIGURATION -----------------------

$img = null;

if (substr($folder,-1) != '/') {
$folder = $folder.'/';
}

if (isset($_GET['img'])) {
$imageInfo = pathinfo($_GET['img']);
if (
isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
file_exists( $folder.$imageInfo['basename'] )
) {
$img = $folder.$imageInfo['basename'];
}
} else {
$fileList = array();
$handle = opendir($folder);
while ( false !== ( $file = readdir($handle) ) ) {
$file_info = pathinfo($file);
if (
isset( $extList[ strtolower( $file_info['extension'] ) ] )
) {
$fileList[] = $file;
}
}
closedir($handle);

if (count($fileList) > 0) {
$imageNumber = time() % count($fileList);
$img = $folder.$fileList[$imageNumber];
}
}

if ($img!=null) {
$imageInfo = pathinfo($img);
$contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
header ($contentType);
readfile($img);
} else {
if ( function_exists('imagecreate') ) {
header ("Content-type: image/png");
$im = @imagecreate (100, 100)
or die ("Cannot initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 0,0,0);
imagestring ($im, 2, 5, 5, "IMAGE ERROR", $text_color);
imagepng ($im);
imagedestroy($im);
}
}

?>


i dont remember where i found this script, or i'd credit them :)

Liorchen
09-03-2006, 03:22 PM
The thing is that in this case I assume it rotates between the images located in $folder? I need it to rotate between different URLs of images.

Liorchen
09-05-2006, 10:30 PM
Here's the script i'm using instead:
<?php
$Sigs = $_GET['im'];
$R = rand(0, count($Sigs)-1);
header("location: ".$Sigs[$R]);
?>
and then for a sig I just use the following as a dynamic image:
sig.php?im[]=http://url.com/im1.jpg&im[]=http://exmple.co.il/im2.gif&im[]=http://url.com/im2.jpg&im[]=http://url.com/im3.png&im[]=http://url.com/im6.jpg

Few problems though:
1. It doesn't work on FF, unless a hard refresh is performed
2. I understand enabling dynamic images is a security breach - how can I limit dynamic images in the forum to local server only? so users won't be able to use it wrong.

indie
09-12-2006, 05:30 PM
What if you wanted to take signature images, and rotate them in the header? What I'm saying is, you could charge extra for signature images that could be banners, and you could place code in the header, or on a page, where the different users images would roatate. Like an ad server software, but using vB, so it was nicely integrated. Anyone know how to do this?

Liorchen
09-12-2006, 11:24 PM
Charge extra? I don't think the 11 year olds that surf in my forums would want that ;) just want a simple script like I wrote above, and the only problem is the secuirty breach that I want you guys to help me overcome :)