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