anoniem Geplaatst: 16 januari 2009 Delen Geplaatst: 16 januari 2009 Hallo, ik heb een php upload script: [code:1:bb66f36593] <?php include ("mysql_connect.php"); if (!isset($_POST['submit'])) { ?> <table> <form enctype="multipart/form-data" action="upload.php" method="POST"> <tr><td>Bestand:</td><td><input name="uploaded" type="file" /></td></tr> <tr><td>Naam:</td><td><input type="text" name="naam"></td></tr> <tr><td>Beschrijving:</td><td><textarea rows="10" cols="30" name"beschrijving"></textarea> </td></tr> <tr><td>Tags ( gescheiden door spaties ):</td><td><input type="text" name="tags"></td></tr> <tr><td>Vak:</td><td> <select name="vak"> <option name="wiskunde" value="wiskunde">Wiskunde</option> <option name="geschiedenis" value="geschiedenis">Geschiedenis</option> <option name="aardrijkskunde" value="aardrijkskunde">Aardrijkskunde</option> <option name="nederlands" value="nederlands">Nederlands</option> </select></td></tr> <tr><td>Type:</td><td> <select name="type"> <option name="proefwerk" value="proefwerk">Proefwerk</option> <option name="verslag" value="verslag">Verslag</option> <option name="antwoorden" value="antwoorden">Antwoorden</option> <option name="werkstuk" value="werkstuk">Werkstuk</option> </select></td></tr> <tr><td><input type="submit" name="submit" value="Upload" /></td></tr> </form> </table> <? } else { include("mysql_connect.php"); $datum = date("Y/m/d"); $allowed_filetypes = array('.doc','.docx','.pdf','.html'); // These will be the types of file that will pass the validation. $target = "upload/"; $target = $target . basename( $_FILES['uploaded']['name']) ; $filename = $_FILES['uploaded']['name']; $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename. if(!in_array($ext,$allowed_filetypes)) { die('Uw bestand heeft een verkeerde bestand type. U kunt alles Doc, Docx en Pdf uploaden!'); } if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) { if (mysql_query("INSERT INTO `bestanden` ( `bestandsnaam` , `username` , `naam` , `beschrijving` , `tags` , `vak` , `type` , `datum` ) VALUES ( '".$filename."', '".$_COOKIE['ID_allesvoorschool']."', '".$_POST['naam']."', '".$_POST['beschrijving']."', '".$_POST['tags']."', '".$_POST['vak']."', '".$_POST['type']."', '".$datum."'); ")) { echo "Het bestand ". basename( $_FILES['uploadedfile']['name']). " is geupload"; } else { echo "Sorry, er heeft zich een probleem voorgedaan."; } } else { echo "Sorry, er heeft zich een probleem voorgedaan."; } } ?> [/code:1:bb66f36593] Maar als ik bijvoorbeeld een docx bestand upload, en het dan via het volgende script download: [code:1:bb66f36593] <?php include ("mysql_connect.php"); $username123 = $_COOKIE['ID_allesvoorschool']; $check = mysql_query("SELECT * FROM members WHERE username = '$username123'")or die(mysql_error()); while($info = mysql_fetch_array( $check )) { if (!$info['punten'] > '0') { echo 'U hebt niet genoeg punten. U moet eerst wat uploaden!'; exit(); } } $dir = 'upload/'; //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/force-download"); header("Content-Type: application/download"); 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 } ?> [/code:1:bb66f36593] Dan werkt het niet en download hij een application/octet-stream. Als ik echter het via ftp upload, dan kan ik het wel downloaden. Hoe kan dit nou? Alvast bedankt! Bart Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen