News:

Wondering if this will always be free?  See why free is better.

Main Menu

rotate.php inside css ?

Started by iain sherriff, June 19, 2012, 09:43:18 AM

Previous topic - Next topic

iain sherriff

Hi.
I am going to change my theme to Crip's Anecdota. I have it working OK and have placed my banner where I want it in place of the standard logo. I changed index.css to get the banner.

With other themes I have used rotate.php to change my banners but have done it in index.template (I think!!)

I have placed a file with the images and rotate.php in "images" and changed the css to

#logo a {
position: absolute;
top: 20px;
left: 20px;
display: block;
width: 512px!important;
height: 122px!important;
cursor: pointer;
background: url(../images/banners/rotate.php) no-repeat!important;


If I put

background: url(../images/banners/image.png)

the image called for shows.
I am pretty sure I have rotate.php set right (ie, changed nothing as it is in the same folder as the images).
What I am asking is can I use rotate.php like this in css or do I need to alter index.template instead?
(would just be cleaner to use the css file)

Thanks
I asked on Crip's forum and he looked for me but is not familiar with rotate.php
SMF 2.0.12

Arantor


iain sherriff

<?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( $extListstrtolower$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( $extListstrtolower$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 (100100)
    or die ("Cannot initialize new GD image stream");
$background_color imagecolorallocate ($im255255255);
$text_color imagecolorallocate ($im0,0,0);
imagestring ($im255,  "IMAGE ERROR"$text_color);
imagepng ($im);
imagedestroy($im);
}
}

?>

SMF 2.0.12

Arantor

You can use rotate.php in CSS just fine, provided that you can see images when you browse directly to rotate.php.

iain sherriff

thanks........I cant so that's what I need to check. I can go direct to an image so the path is correct, it must be something in the rotate.php file ?

hmmm
SMF 2.0.12

Shambles

Quote from: iain sherriff on June 19, 2012, 12:04:01 PM
thanks........I cant so that's what I need to check. I can go direct to an image so the path is correct, it must be something in the rotate.php file ?

hmmm
If rotate.php is in the same directory/folder as the images, it will pick them up (randomly) and return one. Test it in your browser as Arantor says...

I use this function to give myself a random avatar on my forum

Arantor

No, going to the images themselves is not what I meant.

Can you open rotate.php directly in the browser and actually get an image back?

iain sherriff

Cant open rotate.php directly, no. Can see an image directly.
Tried downloading a new copy of rotate.
Tried just using a folder outside the forum software.

I am wondering if something has been altered at the server as I have run this before with no problem. Will contact host before i waste more time and check with them..............
SMF 2.0.12

Arantor

If you can't open rotate.php directly, that's why it isn't working in CSS.

Check the error log to see if there's any reason why it doesn't work.

MrPhil

Quote from: Arantor on June 19, 2012, 12:20:09 PM
No, going to the images themselves is not what I meant.

Well, that would be the first step, to invoke an image or two directly and make sure they weren't corrupted by incorrect handling (e.g., ASCII transfer) and that they're valid for the browser (e.g., not CMYK model JPEG). If that's OK, and rotate.php is in the same directory as the images, do you have the proper level of GD library installed? If not, I would expect to see an error message somewhere, such as in images/banners/error_log.

Note that the location it's trying to run rotate.php in is relative to where the CSS file is (up one, down to images/...) not where the PHP file with id=logo element is.

iain sherriff

fresh pair of eyes this morning  :)

all the folders in the path need to be 755, Anecdota and its folders were 777. Just found it by trial and error in the end, starting with the rotate folder top level then working down one level at a time till it stopped working................

thanks all for replies, my members love the new theme  ;D
SMF 2.0.12

Advertisement: