Hello experts,
I hope you can help me, I don't have enough experience in PHP to figure it out. All I know until now is that "register_globals" is turned off.
I'm trying to use a free script "phpslideshow". It's only one file and I would like to use it in my own html per "include".
I'm thinking that it might have something to do with the include. When I run the script in a separate windows it works ok.
Here is the complete script with one modification I did - I added the line $directory = $_POST['directory']:
PHP Code:
<?php
##########################
##########
##########
##########
##########
##########
## ##
##########################
##########
##########
##########
##########
##########
## ##
// PHPSlideShow v0.6.2 written by Greg Lawler
// from
http://www.zinkwazi.com/pages.php?page_name=scripts // v0.6.2 august 2002 - minor upgrade, added javascript notes
// v0.6.1 july 2002 - fixed special character bug.
// v0.6 july 2002 - added lots of formatting options and a security patch
// v0.5.1 march 2002 - minor bug fixes, reg exp fix...
// v0.5 march 2002 - osx path fix, page headings for multi dir, cleaner...
// v0.4 july 10 2001
// v0.3.5 july 5 2001
// v0.3.4 april 19 2001
// v0.3.3 january 9 2001
// v0.3.1 september 29 2000 - added support for image buttons
// v0.3 september 12 2000 - added support for comments
// v0.2 august 28 2000
//
// Feel free to use/modify this little script
//
// IMPORTANT NOTE....
// if you want to send me a token of appreciation,
// anything from
http://www.starbucks.com will be gladly accepted ;)
// my address is:
// attention: greg lawler
// 801 alston road, santa barbara, ca 93108 usa
// otherwise it's free.
//
// this script comes with no implied warranty.
//
// enjoy :)
// greg
##########################
### Quick Start Installation #########################
// put this file in a directory that contains your images
// the slideshow should now work...
##########################
### Customized Installation #########################
// Q: how do i add image comments/descriptions to the slideshow?
// A: make a file (e.g. pics.txt) that contains the image names and descriptions
// place each image name and description on a new line separated by a semi colon.
// an easy way to do this is type
// ls *.jpg > pics.txt in linux or
// dir /b *.jpg > pics.txt in dos - you will need edit this with notepad/vi to clean
// out any extra stuff that dir puts in there and to add the semi colon and
// description.
// the slideshow should now work including comments...
//
// Q: how do i give each directory of images it's own page heading?
// A: place a file called heading.txt in each directory. place the page heading
// on the first line of this file.
//
// Q: how do i use one slideshow for multiple different directories of images?
// A: all you need to do to enable this is to call the script and pass it the
// directory path.
//
// for example:
// pictures_directory -> phpslideshow.php
// -> dog_pics
// -> cat_pics
// so you have a directory called pictures_directory that contains your
// phpslideshow.php and two directories containing pictures of your pets...
// in order to access the shows:
//
http://yourserver.com/pictures_directory/phpslideshow.php?directory=dog_pics //
http://yourserver.com/pictures_directory/phpslideshow.php?directory=cat_pics //
// if there were images in the pictures_directory, you'd see them like this:
//
http://yourserver.com/pictures_directory/phpslideshow.php?directory=cat_pics //
// these three examples will run phpslideshow but each one will load a different
// set of images and descriptions located in the directories shown
//
// NOTE: for security, you can only access directories within the same dir as
// the phpslideshow.php script...
//
// Q: how do i use phpslideshow.php in my existing web page or html template?
// A: change the $standalone variable from true to false.
// what this does is removes the html page headers and footers and only prints
// out the phpslideshow table...
// to use this in an existing php page, use the following line:
// include("phpslideshow.php"
);
// don't forget that this is php code so it needs to be inside the <? php tags.
// also, the // at the beginning of the line needs to be removed.
//
// Q: how do i make my php slide show appear in it's own popup window?
// A: copy the following lines into the body of a web page
// (minus the leading two comment slashes on each line...)
// <!--begin PHPSlideshow popup code -->
//<script>
// function pop(){
// // change this to point to your PHPSlideshow URL
// var your_slideshow_url="phpsli
deshow.php
?directory
=."
// // change the width and height of your window here to fit your images.
// winpops=window.open(your_s
lideshow_u
rl,'','wid
th=640,hei
ght=400,')
// }
//</script>
//<a href="javascript:pop()">My
cool PHPSlideshow</a>
// <!--end PHPSlideshow popup code-->
//
// EXAMPLE pics.txt file
//
// greg.jpg;Me
// dog.png;My dog John
// cat;
// tux.jpg;My friend Tux
//
// NO BLANK LINES either!
// as you can see, not all pics need a description
// point your browser at the script and voilla!
##### CREDITS #####
// the following nice folks have contributed code snippets, bug fixes, ideas :)
// patrick, nicolas, otto, wei-min lee, tom, jonathan, jason rust, hai phung
// greg rundlett, laszlo (jabba), mike collard, justin, jadex, bunnyguy
##########################
##########
##########
##########
##########
##########
## ##
##########################
##########
##########
##########
##########
##########
## ##
// some formatting options...
$top_row_color = "#cccccc";
$image_row_color = "#ffffff";
$bottom_row_color = "#cccccc";
$page_background_color = "#ffffff";
$main_table_border_color = "#000000";
$img_border_color = "#000000";
$main_table_width = "60%";
$home_link = "HOME";
$next_alt = "Next";
$back_alt = "Back";
$your_home_url = "
http://www.ritaandtherocknrollers.com/dev/index.html";
// get some variables
$directory = $_POST['directory'];
// set this to true to display the image filename
$show_image_name = "false";
// set to true to display navigation icons instead of text...
$show_navigation_buttons = "false";
$back_button = "back.gif";
$next_button = "next.gif";
// automated slideshow options
// set this to true to enable the auto slideshow feature
$auto_slideshow = "false";
// $sec is number of seconds between slides...
$sec = "2";
// set standalone to false if you are using this script in an existing php doc
// e.g. insert the following line in the page where
// you want phpslideshow to appear
// include("phpslideshow.php"
);
// dont forget to remove the comment slashes...
$standalone = "false";
// file containing optional image descriptions
$pic_info_file="pics.txt";
// name of file containing optional page headings
$heading_info_file = "heading.txt";
##########################
##########
##########
##########
##########
##########
## ##
// grab the variables we want set for newer php version compatability
// the @ supress the error messages if your php.ini error level is too high
@$currentPic = $GLOBALS['HTTP_GET_VARS'][
'currentPi
c'];
@$directory = $GLOBALS['HTTP_GET_VARS'][
'directory
'];
// directory debugging
if($directory == ''){
echo "directory is empty";
}
else {
echo $directory;
}
// check for platform dependent path info... (for windows and mac OSX)
$path = empty($HTTP_SERVER_VARS['P
ATH_INFO']
)?
$HTTP_SERVER_VARS['PHP_SEL
F']:$HTTP_
SERVER_VAR
S['PATH_IN
FO'];
// a little security - check that the user did not change the path...
// the path may not contain .. or : (as in c:) or start with / (root dir)
if (preg_match(':(\.\.|^/|\:)
:', $directory)) {
print "<b>ERROR:</b> Your request contains an invalid path.<br>";
print "For security purposes, you can only access directories ";
print "within this one.<br>";
print "Your dir path may not contain .. or : or start with a /<br>";
print "<br><a href=\"$path\">Try again</a>";
exit;
}
// set directory
if (empty($directory)) $directory = ".";
// if there is no $heading_info_file (see format above) set page heading here
if ( !file_exists("$directory/$
heading_in
fo_file"))
{
$header = "PHP Slideshow";
$browser_title = "$header";
}
else {
$heading_info = file("$directory/$heading_
info_file"
);
$header = htmlentities($heading_info
[0]);
}
// image / text buttons
if ($show_navigation_buttons == "true") {
$back_src = "<img src=\"$back_button\" alt=\"$back_alt\" border=\"0\">";
$next_src = "<img src=\"$next_button\" alt=\"$next_alt\" border=\"0\">";
}
else {
$back_src = "<b>$back_alt</b>";
$next_src = "<b>$next_alt</b>";
}
if ( !file_exists("$directory/$
pic_info_f
ile")) {
$dh = opendir( "$directory" );
while( $file = readdir( $dh ) ) {
// look for these file types....
if (eregi("(jpg|jpeg|gif|png)
$",$file))
{
$pic_info[] = $file;
sort( $pic_info );
}
}
}
else $pic_info=file("$directory
/$pic_info
_file");
// begin messing with the array
$number_pics = count ($pic_info);
if (empty($currentPic)) $currentPic = 0;
if (($currentPic > $number_pics)||($currentPi
c == $number_pics))
$currentPic = '0';
$item = explode (";", $pic_info[$currentPic]);
$last = $number_pics - 1;
$next = $currentPic + 1;
if ($currentPic > 0 ) $back = $currentPic - 1;
else $currentPic = "0";
// print the description if it exists
$blank = empty($item[1])?' ':h
tmlentitie
s($item[1]
);
// a hack so that you can include <br> tags in the comments...
$blank = ereg_replace ("<br>", "<br>", $blank);
$show_name = ($show_image_name=="false"
)?' '
:htmlentit
ies($item[
0]);
if ($currentPic > 0 ) $nav=$back;
else $nav=$last;
// meta refresh stuff for auto slideshow...
if ($auto_slideshow == "true") {
$meta_refresh = "<meta http-equiv=\"refresh\" content=\"";
$meta_refresh .= "$sec;url=$path?directory=
$directory
¤tPi
c=$next\">
";
}
else $meta_refresh = "\n";
##########################
##########
##########
##########
##########
##########
## ##
// top of html page stuff
// print the page header if in standalone mode
if ($standalone == "true") {
print <<< HERE
<!-- PHPSlideshow v0.6.2 by Greg Lawler -->
<!--
http://www.zinkwazi.com/pages.php?page_name=scripts -->
<html>
<head>
$meta_refresh
<title>$header</title>
<style type="text/css">
body { font-family: verdana; font-size: 14px; }
a { font-family: verdana;
font-size: 14px;
text-decoration: none }
</style>
</head>
<body bgcolor="$page_background_
color">
HERE;
}
// draw the main table in html
print <<< HERE
<center>
<table width="$main_table_width" align="center" valign="center"
border="0" cellspacing="0" cellpadding="1" bgcolor="$main_table_borde
r_color">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="$top_row_color">
<td align="left" nowrap width="50%"> <b
>$header</
b></td>
<td width="50%" align="right" valign="center">
<a href="$path?directory=$dir
ectory&cur
rentPic=$n
av">$back_
src</a>
[ $next of $number_pics ]
<a href="$path?directory=$dir
ectory&cur
rentPic=$n
ext">$next
_src</a>&n
bsp;
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td bgcolor="$image_row_color"
align="center" valign="center">
<a href="$path?directory=$dir
ectory&cur
rentPic=$n
ext">
<img src="$directory/$item[0]" alt="image" border="1"
style="border-color: $img_border_color">
</a>
</td>
<td bgcolor="$image_row_color"
align="center" valign="center"
width="80%">$blank<br>$sho
w_name</td
>
</tr>
<tr bgcolor="$bottom_row_color
">
<td> </td>
<td align="right"> <b><a href="$your_home_url">$hom
e_link</a>
</b></td>
</tr>
</table>
</td>
</tr>
</table>
</center>
HERE;
// print the page footer if in standalone mode
if ($standalone == "true") {
print <<< HERE
</body>
</html>
HERE;
}
?>
The part in the script I don't understand are these lines:
PHP Code:
// grab the variables we want set for newer php version compatability
// the @ supress the error messages if your php.ini error level is too high
@$currentPic = $GLOBALS['HTTP_GET_VARS'][
'currentPi
c'];
@$directory = $GLOBALS['HTTP_GET_VARS'][
'directory
'];
I don't seem to have the $directory variable until that point.
But anyhow, it works if I open it in a seperate window, you can check it out online:
http://www.ritaandtherocknrollers.com/dev/images/phpslideshow.php?directory=cottageThis doesn't:
http://www.ritaandtherocknrollers.com/dev/html/pics.php?directory=cottagepics.php uses the following include code:
HTML Code:
<li><a href="../html/pics.php?dir
ectory=the
_bone_jam"
>Rita & the Rock'n'Rollers @ "The Bone"</a><br>
<div id="links-text">Dallas' most famous Blues Jam</div></li><br>
<li><a href="../html/pics.php?dir
ectory=hol
e_in_the_w
all_jam">R
ita & the Rock'n'Rollers @ "The Hole in the Wall"</a><br>
<div id="links-text">Dallas' most infamous Blues Jam"</div></li><br>
<li><a href="../html/pics.php?dir
ectory=ray
_sharpe">R
ita & the Rock'n'Rollers @ Ray Sharpe's rehearsal</a><br>
<div id="links-text">We had the wonderful chance to sit in at one of our biggest
influences' rehearsals, what an honour!<br>
If you ever get a chance to see this guy - don't miss it!</div></li><br>
<li><a href="../html/pics.php?dir
ectory=cot
tage">Rita
& the Rock'n'Rollers @ "The Cottage Lounge"</a><br>
<div id="links-text">Hash Brown's new sunday jam - a cosy location with an attraction worth seeing:
the bartender</div></li><br>
</ul>
</div>
<div id="left-content">
PHP Code:
<?php
$directory = $_GET['directory'];
if($directory == ''){
include("info.html");
}
else{
include("../images/phpslid
eshow.php?
directory=
".$directo
ry."");
}
?>
Can anybody help me here?
Thanks in advance!
hubbabubba