[x]
Posted via EE Mobile

Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again.

Question
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

7.8

"no such file or directory" warning message

Asked by hubbabubba2000 in PHP Scripting Language

Tags: file, php, directory

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="phpslideshow.php?directory=."
//    // change the width and height of your window here to fit your images.
//    winpops=window.open(your_slideshow_url,'','width=640,height=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']['currentPic'];
@$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['PATH_INFO'])?
$HTTP_SERVER_VARS['PHP_SELF']:$HTTP_SERVER_VARS['PATH_INFO'];

// 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_info_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_file")) {
        $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)||($currentPic == $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])?'&nbsp;':htmlentities($item[1]);
// a hack so that you can include <br> tags in the comments...
$blank = ereg_replace ("&lt;br&gt;", "<br>", $blank);
$show_name = ($show_image_name=="false")?'&nbsp;':htmlentities($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&currentPic=$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_border_color">
<tr>
  <td>
   <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr bgcolor="$top_row_color">
     <td align="left" nowrap width="50%">&nbsp;&nbsp;<b>$header</b></td>
     <td width="50%" align="right" valign="center">
         <a href="$path?directory=$directory&currentPic=$nav">$back_src</a>
    [ $next of $number_pics ]
         <a href="$path?directory=$directory&currentPic=$next">$next_src</a>&nbsp;&nbsp;
     </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=$directory&currentPic=$next">
      <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>$show_name</td>
    </tr>
    <tr bgcolor="$bottom_row_color">
    <td>&nbsp;</td>
    <td align="right">&nbsp;<b><a href="$your_home_url">$home_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']['currentPic'];
@$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=cottage

This doesn't:
http://www.ritaandtherocknrollers.com/dev/html/pics.php?directory=cottage

pics.php uses the following include code:


HTML Code:

<li><a href="../html/pics.php?directory=the_bone_jam">Rita &amp; 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?directory=hole_in_the_wall_jam">Rita &amp; 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?directory=ray_sharpe">Rita &amp; 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?directory=cottage">Rita &amp; 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/phpslideshow.php?directory=".$directory."");
                }
            ?>


Can anybody help me here?

Thanks in advance!
hubbabubba
     
[+][-]12/19/04 03:36 PM, ID: 12863432Accepted Solution

Your question has an Asker Certified™ answer! hubbabubba2000 verified that this solution worked for them--which means it will likely work for you, too. Click to view the solution free for 30-days now.

About this solution

Zone: PHP Scripting Language
Tags: file, php, directory
Sign Up Now!
Solution Provided By: jkna_gunn
Participating Experts: 1
Solution Grade: A
 
[+][-]12/19/04 03:47 AM, ID: 12861281Expert Comment

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12/19/04 04:01 AM, ID: 12861294Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]12/19/04 04:19 AM, ID: 12861317Expert Comment

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12/19/04 04:27 AM, ID: 12861328Expert Comment

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12/19/04 02:25 PM, ID: 12863186Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]12/19/04 04:18 PM, ID: 12863565Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
 
Loading Advertisement...
20100308-EE-VQP-141
Your technology problems solved.
Close See Plans and Pricing. Try it FREE for 30 days.