vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Modification Requests/Questions (Unpaid) (https://vborg.vbsupport.ru/forumdisplay.php?f=112)
-   -   Multiple images signature rotator (https://vborg.vbsupport.ru/showthread.php?t=125267)

Liorchen 08-29-2006 08:41 PM

Multiple images signature rotator
 
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 09: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

Code:

[img-] http://www.site.com/rotate.php [-/img]
Then the rotate.php could use this script
Code:

<?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 02: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 09:30 PM

Here's the script i'm using instead:
PHP Code:

<?php
$Sigs 
$_GET['im'];
$R rand(0count($Sigs)-1);
header("location: ".$Sigs[$R]);
?>

and then for a sig I just use the following as a dynamic image:
PHP Code:

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 04: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 10: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 :)


All times are GMT. The time now is 02:17 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01485 seconds
  • Memory Usage 1,740KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (6)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete