www.webdeveloper.com
Results 1 to 4 of 4

Thread: Multiple site backgrounds...

  1. #1
    Join Date
    May 2013
    Posts
    2

    Multiple site backgrounds...

    Greetings,

    Have a bit of a challenge here, at least it has been for me... lol.

    I have a site that I would like the ability to have a different background for each month. The core of the theme that I am using is CSS, so I have directed the CSS to look for the PHP file when looking for the background. The current PHP file selects a random image from the current folder in which it resides (Found on the internet). It's not mine but is freely available for download on the internet and is as follows:

    Code:
    <?php
    
    /*
    
    	AUTOMATIC IMAGE ROTATOR
    	Version 2.2 - December 4, 2003
    	Copyright (c) 2002-2003 Dan P. Benjamin, Automatic, Ltd.
    	All Rights Reserved.
    
    	http://www.hiveware.com/imagerotator.php
    	
    	http://www.automaticlabs.com/
    	
    	
    	DISCLAIMER
    	Automatic, Ltd. makes no representations or warranties about
    	the suitability of the software, either express or
    	implied, including but not limited to the implied
    	warranties of merchantability, fitness for a particular
    	purpose, or non-infringement. Dan P. Benjamin and Automatic, Ltd.
    	shall not be liable for any damages suffered by licensee
    	as a result of using, modifying or distributing this
    	software or its derivatives.
    	
    	
    	ABOUT
    	This PHP script will randomly select an image file from a
    	folder of images on your webserver.  You can then link to it
    	as you would any standard image file and you'll see a random
    	image each time you reload.
    	
    	When you want to add or remove images from the rotation-pool,
    	just add or remove them from the image rotation folder.
    
    
    	VERSION CHANGES
    	Version 1.0
    		- Release version
    	
    	Version 1.5
    		- Tweaked a few boring bugs
    	
    	Version 2.0
    		- Complete rewrite from the ground-up
    		- Made it clearer where to make modifications
    		- Made it easier to specify/change the rotation-folder
    		- Made it easier to specify/change supported image types
    		- Wrote better instructions and info (you're them reading now)
    		- Significant speed improvements
    		- More error checking
    		- Cleaner code (albeit more PHP-specific)
    		- Better/faster random number generation and file-type parsing
    		- Added a feature where the image to display can be specified
    		- Added a cool feature where, if an error occurs (such as no
    		  images being found in the specified folder) *and* you're
    		  lucky enough to have the GD libraries compiled into PHP on
    		  your webserver, we generate a replacement "error image" on
    		  the fly.
    		
        Version 2.1
            - Updated a potential security flaw when value-matching
              filenames
    
        Version 2.2
            - Updated a few more potential security issues
            - Optimized the code a bit.
            - Expanded the doc for adding new mime/image types.
    
            Thanks to faithful ALA reader Justin Greer for
            lots of good tips and solid code contribution!
    
    
    	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 have been attempting multiple ways to accomplish the desired result but fail at each attempt. Sooooo... I am asking for a little help if there is anyone smarter then I, which isn't hard, to possibly lend me a hand.... Here is the latest attempt :

    Code:
    <?php
    
    //today and Image to use per today
    
    $month = date('m');
    print('$month');
    
    if($month == 01) {
    $image = "01.jpg";
    }
    elseif($month == '02') {
    $image = "02.jpg";
    }
    elseif($month == 03) {
    $image = "03.jpg";
    }
    elseif($month == 04) {
    $image = "04.jpg";
    }
    elseif($month == '05') {
    $image = "05.jpg";
    }
    elseif($month == 06) {
    $image = "06.jpg";
    }
    elseif($month == 07) {
    $image = "07.jpg";
    }
    elseif($month == 08) {
    $image = "08.jpg";
    }
    elseif($month == 09) {
    $image = "09.jpg";
    }
    elseif($month == 10) {
    $image = "10.jpg";
    }
    elseif($month == 11) {
    $image = "11.jpg";
    }
    else($month == 12) {
    $image = "12.jpg";
    }
    
    ?>
    I would greatly appreciate any/all assistance with this issue....Thank you!!!

  2. #2
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    19,352
    The way I'd probably do it:

    Main PHP page:
    PHP Code:
    ...
    <link rel="stylesheet" type="text/css" href="/css/style.php?mon=<?php echo date('n'); ?>" />
    ...
    We don't need to actually use the month set in the query string for the href file, it just makes sure the URL is different each month so that the browser won't use last month's cached CSS file.

    /css/style.php:
    PHP Code:
    <?php
    header
    ("Content-Type: text/css");
    $backgrounds = array( =>   // start numbering at 1
      
    '01.jpeg',
      
    '02.jpeg',
      
    '03.jpeg',
      
    '04.jpeg',
      
    '05.jpeg',
      
    '06.jpeg',
      
    '07.jpeg',
      
    '08.jpeg',
      
    '09.jpeg',
      
    '10.jpeg',
      
    '11.jpeg',
      
    '12.jpeg',
    );
    ?>

    #some_id {
      background: url(/images/<?php echo $backgrounds[date('n')]; ?>) #fff no-repeat;
    }
    "Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
    ~ Terry Pratchett in Nation

    eBookworm.us

  3. #3
    Join Date
    May 2013
    Posts
    2

    Monthly BG on website

    Will the posted solution make it use the images in order??? or will it just make sure it doesnt use the last one...and pick the next at random??

  4. #4
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    19,352
    It will use the one for the current month.
    "Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
    ~ Terry Pratchett in Nation

    eBookworm.us

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles