Ændre script til array af mapper
Jeg har dette force download-script, som virker fint. Af sikkerhedsmæssige årsager er det lavet, så man kun kan bruge det i den mappe, der angives i scriptet. Jeg kunne dog godt tænke mig at det kunne ændres, så man kunne angive et array af mapper, som det kan virke i. kan man det? Lige nu har jeg en kopi af dette script i hver af de (tre) mapper, jeg har brug for det i, og det er lidt problematisk hvis man f.eks. vil lave en MySQL-søgefunktion, hvor resultaterne skal være hyperlinks: echo "<a href='mappeNavn/downloads.php?file=$row[name]' class=\"plain\">$row[titel]</a><br>"; Søgningen foregår jo i alle tre mapper, men jeg er nødt til at angive en absolut stil i a href-tagget til nedenstående script... Håber, det er forståeligt.downloads.php:
<?php
### Force download script. Save as downloads.php
### Link like this: http://www.site.com/downloads.php?file=doc.pdf
### Create MySQL table query
/*
CREATE TABLE `downloads` (
`ID` tinyint(4) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '0',
`titel` text NOT NULL,
`kategori` varchar(255) NOT NULL default '0',
`downloads` int(4) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
PRIMARY KEY (`ID`)
) TYPE=MyISAM AUTO_INCREMENT=20 ;
*/
### config variables.
include_once($_SERVER['DOCUMENT_ROOT']."/sql.php");
$config=array();
$config['email'] = 'mail@domain.dk';
$config['file_path']=$_SERVER['DOCUMENT_ROOT'].'/mappeNavn'; //No Trailing Slash!
$config['allowed_files']=array('doc','txt','pdf','zip','wmv','mpeg','jpg');
$config['PHP_SELF']='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
function download($path,$file)
{
global $config;
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Cache-Control: no-cache, must-revalidate");
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$file);
header('Content-Length: '.filesize($path.'/'.$file));
readfile($path.'/'.$file) OR error('Error Reading File');
}
### Get downloadable file by id one at the time
function makeDownloadLink($id){
global $conn;
$result = mysql_query("SELECT name, downloads FROM downloads WHERE ID='$id'",$conn);
$result = mysql_fetch_row($result);
return $result;
}
function error($text)
{
global $config;
$out = '<p align="center" style="font:12pt Arial"><br><br><br>Fatal Error: <b>'.$text.'</b></p>'."\n";
mail($config['email'],'File Download Error Report',$out,'From: errors@'.str_replace('www.','',$_SERVER['HTTP_HOST'])."\r\n".'Content-Type: text/html'."\r\n");
exit($out);
}
$file=(isset($_GET['file']) && $_GET['file']!='') ? $_GET['file'] : null;
if($file)
{
if(strpos($file,'..')!==false || strpos($file,'/')!==false) error('Access Denied ('.$file.')');
if(!in_array(substr(strrchr($file,'.'),1),$config['allowed_files'])) error('You do not have access to this type of file! ('.$file.')');
if(!is_file($config['file_path'].'/'.$file)) error('File "'.$file.'" is not avaliable!');
$result=mysql_query("SELECT * FROM `downloads` WHERE name='$file'",$conn) OR error('MySQL Query Failed: '.mysql_error());
$query=(mysql_num_rows($result) === 0) ? "INSERT INTO downloads (ID, name, downloads, date) Values ('', '$file', '1', '".date("Y-m-d H:i")."')" : "UPDATE downloads SET downloads = downloads+1 WHERE name='$file'";
mysql_query($query,$conn);
download($config['file_path'],$file);
mysql_close($conn);
}
?>
Mvh.
