Beveiligd download.php script dmv phpBB
Met dit script kan je bestanden alleen downloaden als je bent ingelogged in phpBB, ben je dit niet dan krijg je een pagina te voorschijn met de vraag of je dit eerst wil doen.. Script inelkaar geknutseld (met hulp van het phpbb forum), en omdat er vast wel meer mensen zijn die dit kunnen gebruiken, post ik hem even. --- Gebruik: Maak een 'downloads' map (in je forum root) en plaats daar je bestanden; beveilig die bestanden met CHMOD, met 600 (admin read&write only). Niemand kan erdan bij, behalve via het download script. Ook kan je een .htaccess file in die map zetten met de code: Nu worden standaard alle bestanden die je in die map plaatst beveiligd, en hoef je niet meer ze te chmodden - nadeel hiervan is dat het publiek eventuele bestanden die wél iedereen mag zien, ook niet meer kunnen downloaden. Houd hier dus rekening mee, welke van de 2 methode's het best bij jou zijn toe te passen (maak eventueel een map 'beveiligde_downloads' en gebruik die icm het .htaccess file) Het script roep je aan door simpel te gaan naar: www.url.nl/forum/download.php?bestand=bestandnaam.ext Als je ingelogged bent word het bestand dan tevoor schijn getoverd - zo niet, krijg je een bericht dat je ingelogged moet zijn om het op te vragen :) Gebasseerd op: http://www.phphulp.nl/php/scripts/1/742/ Thanks to: PHP Newbie Succes ermee :)
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
// standard session management
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
// end session management
if( !$userdata['session_logged_in'] )
{
message_die(GENERAL_MESSAGE, 'You must log in to access this page');
}
// begin download script
$dir = 'downloads/'; //geef een map aan met eindslash (. voor deze map)
if(isset($_GET['bestand'])) //als ?bestand= bestaat
{
if(eregi('../', $_GET['bestand']) == FALSE) //als er geen ../ in de bestandsnaam voorkomt, dus geen upmap wordt aangevraagd
{
if(file_exists($dir.$_GET['bestand'])) //en ?bestand=.. is ook nog eens een bestaand bestand is
{
header('Content-type: Application/octet-stream'); //zet de header dat het bestand gedownload moet worden
//en dat het dus niet in de browser afgespeeld kan worden
header('Content-Disposition: attachment; filename='.$_GET['bestand']); //geef aan welk bestand gedownload moet worden
readfile($dir.$_GET['bestand']); //en open vervolgens dat bestand
}
else //als het bestand niet bestaat
{
echo 'bestand bestaat niet'; //echo dat
}
}
else //als er wel ../ in de bestandsnaam voorkomt
{
echo 'Deze map is niet toegankelijk'; //echo dat dat niet mag
}
}
else //als ?bestand= niet is opgegeven
{
echo 'Geen bestand opgegeven'; //echo dat
}
// end download script
?>
Reacties
0