Thanks to all so far. However I am still having problems I have directory outside the root with PDF's in it. The links to the PDF files are called successfully by this function in a page I call getlinks.php
function do_non_root_links() { define('FILEDIR', '/home/.sites/144/site281/downloads/'); //display available files $d = dir(FILEDIR); while($f = $d->read()) { //skip 'hidden' files if($f{0} != '.') { echo "<tr><td>"; echo "<a href=\"get.php?file=$f\" class=\"greenlinks\" target=\"_blank\">$f</a>"; echo "</td></tr>"; } } $d->close(); } The URL displayed is then to be processed by get.php. My problem *I think* is losing get.php?file= from the URL which I managed to do by doing $pfile = str_replace('get.php?file=','','$file'); This however then becomes confusing because $pfile I assumed would then be simply the filename without the URL. I figured that if I exploded the name and pulled the extension from the file passed that into a switch to send the appropriate header my problem would be solved. However it isn't. This is the code and de-bugging I've done. <? define('FILEDIR', '/home/.sites/144/site281/downloads/'); $path = FILEDIR . $file; //check that this file exists and that it doesn't include //any special characters if(!is_file($path) OR !eregi('^[A-Z_0-9][A-Z_0-9.]*$', $file)) { header("Location: error.php"); exit(); } /* ** //check that the user has permission to download file ** if(user does not have permission) ** { ** //redirect to error page ** header("Location: error.php"); ** exit(); ** } */ $pfile = str_replace('get.php?file=','','$file'); $p = explode('.', $file); $extension = $p[sizeof($p)-1]; // debug - remove the headers and test output vars. echo "Test and $extension"; echo "<br>Test and $file"; echo "<br>Test and $p"; echo "<br>Test and $pfile"; /*switch ($extension) { // define headers depending on $extension variable. case "doc" : header("Content-type: application/msword\n"); break; case "pdf" : header("Content-type: application/pdf\n"); break; default : // force download dialog if no extension defined. header("Content-type: application/octet-stream\n"); header("Content-disposition: attachment; filename=\"$file\"\n"); break; } header("Content-transfer-encoding: binary\n"); header("Content-length: " . filesize($path) . "\n"); //send file contents $fp=fopen($path, "r"); fpassthru($fp); */ ?> Echoing the vars produces this. The exploded file ($extension) is what I need to pass to the switch but if I send the headers as is again I get a blank and corrupted explorer window. Test and pdf Test and EventNotification_01.pdf Test and Array Test and $file Any ideas how to proceed? Cheers, Steve. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php