 |
|
|
08-29-2004, 08:27 PM
|
Random PHP Question?
|
Posts: 3
|
Hello all I was woudering if this code can be change so that it looks in different dirs and not just one using the $folder = '.'; If so how can I code it so that it will work? thanks
PHP Code:
<?php
/*
AUTOMATIC IMAGE ROTATOR
Version 2.2 - December 4, 2003
Copyright (c) 2002-2003 Dan P. Benjamin, Automatic, Ltd.
All Rights Reserved.
[url]http://www.hiveware.com/imagerotator.php[/url]
[url]http://www.automaticlabs.com/[/url]
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['tif'] = 'image/tif';
$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);
}
}
?>
Last edited by Zudomon; 08-29-2004 at 08:29 PM..
Reason: Just need to
|
|
|
|
08-30-2004, 08:53 AM
|
|
Posts: 426
Location: I hope so
|
replace
$folder = '.';
with;
PHP Code:
$folders = array(".","folder2/","folder3/","folder/imgs/");
$folder = $folders[rand(0,(count($folders)-1)];
;
In this way it will select a random folder at the start.
__________________
Theres 10 types of people; those who understand binary, and those who don't.
webmaster and webdeveloper resources, Please login or register to view this content. Registration is FREE
|
|
|
|
08-30-2004, 12:02 PM
|
|
Posts: 3
|
Where the folders are I think I put the path of the file but there one more thing that I'm not getting, sometimes paths in PHP do like this:
./folder
./folder/
../folder/
so for and so on. The question is what do the is the dot for or do I omit them?
My path to my folder are Galleries/galleries how whould that be wrote as?
Quote:
|
Originally Posted by webwoRRks
replace
$folder = '.';
with;
PHP Code:
$folders = array(".","folder2/","folder3/","folder/imgs/");
$folder = $folders[rand(0,(count($folders)-1)];
;
In this way it will select a random folder at the start.
|

|
|
|
|
08-30-2004, 12:18 PM
|
Sort Of...
|
Posts: 3
|
Okay this is what up:
PHP Code:
$folders = array(".","Galleries/galleries/Braford/thumbnail/","Galleries/galleries/Brawny-Bear/thumbnail","Galleries/galleries/Muscle-Wolf/thumbnail/","Galleries/galleries/Muscle-Wolf/Orca-Wolf/thumbnail/","Galleries/galleries/Muscle-Wolf/Orca-Wolf/thumbnail/","Galleries/galleries/Zudomon/thumbnail/");
$folder = $folders[rand(0,(count($folders)-1)];
I put this up on the site and did the my URL http://www.furry-muscle.org/rotator.php and got notting just a blank page :S Even try it with out the first dir and switch it with a new one. 
Last edited by Zudomon; 08-30-2004 at 12:20 PM..
|
|
|
|
08-31-2004, 06:15 AM
|
|
Posts: 426
Location: I hope so
|
the '.' is a relative location; a single '.' represents the "current folder" (for example, the folder your script is located in. 2 dots '..' means the relatvie subfolder. Suppose your script is located at http://www.yoursite.com/stuff/scripts/script.php, 2 dots from there would give you the folder http://www.yoursite.com/stuff/, the folder 1 below the one your script is located in. As for it not working, this is due to a typo on my part. Replace the code you gave above with;
PHP Code:
$folders = array(".","Galleries/galleries/Braford/thumbnail/","Galleries/galleries/Brawny-Bear/thumbnail","Galleries/galleries/Muscle-Wolf/thumbnail/","Galleries/galleries/Muscle-Wolf/Orca-Wolf/thumbnail/","Galleries/galleries/Muscle-Wolf/Orca-Wolf/thumbnail/","Galleries/galleries/Zudomon/thumbnail/");
$folder = $folders[rand(0,(count($folders)-1))];
(I missed a bracket).
__________________
Theres 10 types of people; those who understand binary, and those who don't.
webmaster and webdeveloper resources, Please login or register to view this content. Registration is FREE
|
|
|
|
|
« Reply to Random PHP Question?
|
|
|
| Thread Tools |
Search this Thread |
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|