Page 1 of 2 12 Last
  1. #1
    GammaGamer's Avatar
    Registered
    30/10/08
    Location
    Outer
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/50

    'Bestand uit mysql halen' probleem

    Hallo beste mede webprogrammeurs

    Ik zit me probleem dat nu toch al een tijdje aansleept en TOCH niet opgelost geraakt...

    Ik heb een kleine website met een uploadscript waar documenten kunnen geüpload worden. Deze worden in een MySQL database geplaatst.

    Via een andere webpagina kan je dan die documenten die geüpload zijn terug downloaden (stel er u niet teveel van voor, het is HEEL simplistisch).

    Nu, als je iets download zoals een .doc file of een .pdf file, springt direct het correcte programma open of wordt het juiste programma aangesproken.

    Wat heb ik gemerkt: Office 2010 bestanden (.docx of .xlsx) bestanden worden NIET op de correcte manier geopend. Deze worden uitgelezen als een .xml bestand (wat ze in feit wel zijn maar soit).

    Het 'type' bestand wordt automatisch bij het uploaden gedefinieerd.

    Bvb:
    Een '.doc' document krijgt als type 'application/msword' mee.
    Een '.docx' document krijgt als type 'application/vnd.openxmlformats' mee.

    Volgens andere fora moet ik prutsen met mijn .htaccess om dit in orde te brengen maar ik zou begot niet weten wat daar allemaal in te noteren.

    Heefd iemand een idee hoe ik ervoor kan zorgen dat deze documenten uitgelezen worden als een Word bestand of ik het nodige kan toevoegen aan mijn .htaccess bestand?

    Dank bij voorbaat
    “What could I possibly be suggesting?
    I mean, a young woman gets saved by a dashing commander who lets her join his crew and then goes off to save the galaxy?
    How could she possibly develop any kind of interest in him? ”

    Tali'Zorah vas Normandy
    no votes  

  2. #2
    Bumbolt's Avatar
    Registered
    20/06/10
    Location
    Balegem (Oost-Vlaanderen)
    Posts
    910
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/4
    Heb je het al laten testen voor andere mensen? Ik zou zeggen geef een link...

    Lijkt erop dat die instellingen meer bij de gebruiker liggen dan bij de site. Als je zegt dat ze als Xml worden uitgelezen. Eens de echte extensie checken van die gedownloade bestanden. En zo terug gaan kijken in jouw code. Waarschijnlijk converteer je het dan ergens naar een xml.

    Je zegt dat de bestanden in je SQL zitten maar daar bedoel je dan toch het path naar de bestanden mee? Bestanden rechstreeks in een sql database gaan droppen lijkt me nogal raar.
    AMD X6 1090T | Sapphire HD 5850 | 8 gb DRR3 1333Mhz OCZ | 1 TB Seagate HDD | HAF922 | G35 | G110 | Sidewinder X8 | K350 Wave
    no votes  

  3. #3
    GammaGamer's Avatar
    Registered
    30/10/08
    Location
    Outer
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/50
    Quote Originally Posted by Bumbolt View Post
    This quote is hidden because you are ignoring this member. Show
    Heb je het al laten testen voor andere mensen? Ik zou zeggen geef een link...

    Lijkt erop dat die instellingen meer bij de gebruiker liggen dan bij de site. Als je zegt dat ze als Xml worden uitgelezen. Eens de echte extensie checken van die gedownloade bestanden. En zo terug gaan kijken in jouw code. Waarschijnlijk converteer je het dan ergens naar een xml.

    Je zegt dat de bestanden in je SQL zitten maar daar bedoel je dan toch het path naar de bestanden mee? Bestanden rechstreeks in een sql database gaan droppen lijkt me nogal raar.
    Al zeker een 50 tal mensen hebben dit getest
    (geen link omdat het in zekere zin onbeveiligd is)

    En ja, dat was ik vergeten te vermelden, hij maakt er een .xml bestand van (je kan het bestand openen van zodra je 'openen' via Word selecteert)

    Het probleem bevind zich in de MIME-types maar hoe of wat ik moet toevoegen om het in orde te krijgen weet ik echt niet...
    “What could I possibly be suggesting?
    I mean, a young woman gets saved by a dashing commander who lets her join his crew and then goes off to save the galaxy?
    How could she possibly develop any kind of interest in him? ”

    Tali'Zorah vas Normandy
    no votes  

  4. #4
    Disa's Avatar
    Registered
    28/04/04
    Location
    Gent
    Posts
    1,317
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    6/6
    Stuur je de mimetype wel mee in de headers?
    IIRC, is dat in php zoiets:
    Code:
    // De content type header
    header('Content-Type: ' . $mimetype);
    
    // Als je wil dat het gedownload moet worden
    header('Content-disposition: attachment; filename=' . $my_filename);
    Dit kan waarschijnlijk ook wel in de .htaccess gedaan worden.
    no votes  

  5. #5
    GammaGamer's Avatar
    Registered
    30/10/08
    Location
    Outer
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/50
    Quote Originally Posted by Disa View Post
    This quote is hidden because you are ignoring this member. Show
    Stuur je de mimetype wel mee in de headers?
    IIRC, is dat in php zoiets:
    Code:
    // De content type header
    header('Content-Type: ' . $mimetype);
    
    // Als je wil dat het gedownload moet worden
    header('Content-disposition: attachment; filename=' . $my_filename);
    Dit kan waarschijnlijk ook wel in de .htaccess gedaan worden.
    Er wordt mij aangeraden dit in .htacces te doen

    Can ik met dat stukje code zelf de mimetype aan bestanden toekennen?
    “What could I possibly be suggesting?
    I mean, a young woman gets saved by a dashing commander who lets her join his crew and then goes off to save the galaxy?
    How could she possibly develop any kind of interest in him? ”

    Tali'Zorah vas Normandy
    no votes  

  6. #6

    Registered
    25/08/05
    Posts
    68
    iTrader
    0
    Mentioned
    0 Post(s)
    Aangezien je het terugstuurt via PHP, zal je zelf moeten instaan voor het doorgeven van de juiste headers met mime-types. Via .htaccess gaat dit enkel voor bestanden die door de webserver doorgestuurd worden (een .docx of zo in een map op de webserver).

    Idealiter ga je het mime-type detecteren wanneer de upload gebeurt, en sla je dit mee op in een veldje in je database; daarna ga je bij het terug doorsturen van het bestand het correcte mimetype doorsturen.

    Trouwens, files in een db is eigenlijk minder slim... sla de files op op disk, en hou een referentie bij in de DB.
    Nietske
    no votes  

  7. #7
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    Quote Originally Posted by wonko View Post
    This quote is hidden because you are ignoring this member. Show
    Aangezien je het terugstuurt via PHP, zal je zelf moeten instaan voor het doorgeven van de juiste headers met mime-types. Via .htaccess gaat dit enkel voor bestanden die door de webserver doorgestuurd worden (een .docx of zo in een map op de webserver).

    Idealiter ga je het mime-type detecteren wanneer de upload gebeurt, en sla je dit mee op in een veldje in je database; daarna ga je bij het terug doorsturen van het bestand het correcte mimetype doorsturen.

    Trouwens, files in een db is eigenlijk minder slim... sla de files op op disk, en hou een referentie bij in de DB.
    yes sir!
    Mimetypes detecteren is trouwens niet zo simpel met PHP als ge lager dan 5.3 draait.
    Met PHP > 5.2 kunt ge fileinfo gebruiken, oftewel de PECL extensie zelf mee installeren / compilen op PHP < 5.3
    http://www.php.net/manual/en/function.finfo-file.php

    Functieke voor PHP < 5.3:

    Code:
    $file_shell = escapeshellarg( $filename );
    $mime_type = shell_exec("file -bi " . $file_shell);
    no votes  

  8. #8
    GammaGamer's Avatar
    Registered
    30/10/08
    Location
    Outer
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/50
    Quote Originally Posted by wonko View Post
    This quote is hidden because you are ignoring this member. Show
    Aangezien je het terugstuurt via PHP, zal je zelf moeten instaan voor het doorgeven van de juiste headers met mime-types. Via .htaccess gaat dit enkel voor bestanden die door de webserver doorgestuurd worden (een .docx of zo in een map op de webserver).

    Idealiter ga je het mime-type detecteren wanneer de upload gebeurt, en sla je dit mee op in een veldje in je database; daarna ga je bij het terug doorsturen van het bestand het correcte mimetype doorsturen.

    Trouwens, files in een db is eigenlijk minder slim... sla de files op op disk, en hou een referentie bij in de DB.
    De Mimetypes worden automatisch gedetecteerd van zodra het bestand upgeload wordt, die mimetypes worden dan apart in die database geplaatst

    Aan dat laatste had ik ook al gedacht maar aangezien de bestanden niet groot zijn (hoewel ik laatste problemen had met een te groot bestand...) en mijn kennis van PHP niet zo uitgebreid is, heb ik het maar in een database gepropt (het bestaat al een jaar dusja)

    Quote Originally Posted by adrianhates View Post
    This quote is hidden because you are ignoring this member. Show
    yes sir!
    Mimetypes detecteren is trouwens niet zo simpel met PHP als ge lager dan 5.3 draait.
    Met PHP > 5.2 kunt ge fileinfo gebruiken, oftewel de PECL extensie zelf mee installeren / compilen op PHP < 5.3
    PHP: finfo_file - Manual

    Functieke voor PHP < 5.3:

    Code:
    $file_shell = escapeshellarg( $filename );
    $mime_type = shell_exec("file -bi " . $file_shell);
    tot nogtoe eigelijk geen problemen gehad om mimetypes te selecteren, effe de code plakken:

    Code:
    $fileType = $_FILES['userfile']['type'];
    Bovenstaande is een deel van het 'uploadscript' waarbij het type bepaald wordt

    Code:
    header("Content-type: $type");
    Dit is het 'downloadscript' waarbij het type terug wordt toegewezen aan het gedownloade

    Alles gaat perfect tot ik .docx bestanden en companie er op plaats
    “What could I possibly be suggesting?
    I mean, a young woman gets saved by a dashing commander who lets her join his crew and then goes off to save the galaxy?
    How could she possibly develop any kind of interest in him? ”

    Tali'Zorah vas Normandy
    no votes  

  9. #9
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    Code:
    $fileType = $_FILES['userfile']['type'];
    $_FILES['userfile']['type'] is niet te vertrouwen ...
    http://stackoverflow.com/questions/6...in-uploads-php

    en dan is finfo zelfs nog niet 100% te vertrouwen.. PHP code kunde ook in images steken en dan zal da nog steeds image/jpeg teruggeven. Een al ouder documentje maar nog steeds toepasbaar meen ik:
    http://www.scanit.be/uploads/php-file-upload.pdf

    maar zolang ge geen code toont zal niemand u kunnen helpen denk ik Het is zeker en vast zonder .htaccess te doen want ik heb het gisteren zelfs nog gemaakt ..

    edit : hebt ge ook verschillende browsers gechecked? Zit ge op IIS? of Apache?
    Last edited by adrianhates; 29-12-2011 at 14:32.
    no votes  

  10. #10
    GammaGamer's Avatar
    Registered
    30/10/08
    Location
    Outer
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/50
    Quote Originally Posted by adrianhates View Post
    This quote is hidden because you are ignoring this member. Show
    Code:
    $fileType = $_FILES['userfile']['type'];
    $_FILES['userfile']['type'] is niet te vertrouwen ...
    security - Reliability of Mimetypes in Uploads (PHP) - Stack Overflow

    en dan is finfo zelfs nog niet 100% te vertrouwen.. PHP code kunde ook in images steken en dan zal da nog steeds image/jpeg teruggeven. Een al ouder documentje maar nog steeds toepasbaar meen ik:
    http://www.scanit.be/uploads/php-file-upload.pdf

    maar zolang ge geen code toont zal niemand u kunnen helpen denk ik Het is zeker en vast zonder .htaccess te doen want ik heb het gisteren zelfs nog gemaakt ..

    edit : hebt ge ook verschillende browsers gechecked? Zit ge op IIS? of Apache?
    Kudos voor het document, daar kan ik proberen info uit te halen
    (again, mijn kennis van php is zeer beperkt...)


    Downloadscript
    Code:
    <?php
    if(isset($_GET['id']))
    {
    include 'hostgegevens';
    $id    = $_GET['id'];
    $query = "SELECT name, type, size, content " .
             "FROM upload WHERE id = '$id'";
    		 
    $result = mysql_query($query) or die('Error, query failed');
    
    list($name, $type, $size, $content) =  mysql_fetch_array($result);
    
    header("Content-length: $size");
    header("Content-type: $type");
    header("Content-Disposition: attachment; filename=$name");
    echo $content;
    exit;
    }
    ?>
    Uploadscript
    Code:
    <?php
    include "hostgegevens";
    
    if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
    {
    $naam = $_POST['naam'];
    $bestandsnaam = $_POST['bestandsnaam'];
    $Vak = $_POST['Vak'];
    $fileName = $_FILES['userfile']['name'];
    $tmpName  = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];
    $fp      = fopen($tmpName, 'r');
    $content = fread($fp, filesize($tmpName));
    $content = addslashes($content);
    fclose($fp);
    
    if(!get_magic_quotes_gpc())
    {
        $fileName = addslashes($fileName);
    }
    
    $query = "INSERT INTO upload (name, size, type, content, naam_ll, bestandsnaam, Vak ) ".
    "VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$naam', '$bestandsnaam', '$Vak')";
    mysql_query($query) or die('Error, query failed');
    echo "<br>Bestand '$fileName' opgeladen<br>";
    }
    ?>
    “What could I possibly be suggesting?
    I mean, a young woman gets saved by a dashing commander who lets her join his crew and then goes off to save the galaxy?
    How could she possibly develop any kind of interest in him? ”

    Tali'Zorah vas Normandy
    no votes  

  11. #11
    Zir0h's Avatar
    Registered
    19/12/03
    Location
    Lebbeke
    Posts
    1,909
    iTrader
    48 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/5
    Beetje offtopic, maar uw script is wel héél sql injectable.
    no votes  

  12. #12
    GammaGamer's Avatar
    Registered
    30/10/08
    Location
    Outer
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/50
    Quote Originally Posted by Zir0h View Post
    This quote is hidden because you are ignoring this member. Show
    Beetje offtopic, maar uw script is wel héél sql injectable.
    Welk deel van 'ik ben niet zo goed in php' wordt er niet gesnapt?

    Kheb een bestaand script gevonden, zo goed mogelijk aangespast en het werkte
    Ik ben gwn content DA het werkt

    (trouwes, de mensen die het gebruiken, weten niks van programmeren en code )
    “What could I possibly be suggesting?
    I mean, a young woman gets saved by a dashing commander who lets her join his crew and then goes off to save the galaxy?
    How could she possibly develop any kind of interest in him? ”

    Tali'Zorah vas Normandy
    no votes  

  13. #13
    Huxley's Avatar
    Registered
    21/01/10
    Location
    Gent
    Posts
    3,535
    iTrader
    0
    Mentioned
    0 Post(s)
    Quote Originally Posted by GammaGamer View Post
    This quote is hidden because you are ignoring this member. Show
    (trouwes, de mensen die het gebruiken, weten niks van programmeren en code )

    Lame
    no votes  

  14. #14
    GammaGamer's Avatar
    Registered
    30/10/08
    Location
    Outer
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/50
    Quote Originally Posted by Huxley View Post
    This quote is hidden because you are ignoring this member. Show
    Lame
    Dus hebben ze geen flauw idee wat SQL injecties zijn he
    Als ge niks productief toe te voegen hebt, blijf dan weg...
    “What could I possibly be suggesting?
    I mean, a young woman gets saved by a dashing commander who lets her join his crew and then goes off to save the galaxy?
    How could she possibly develop any kind of interest in him? ”

    Tali'Zorah vas Normandy
    no votes  

  15. #15
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    ge kunt met 1 SQL injection heel uw tabel verwijderen.. Die opmerkingen hebben dus zeker wel iets bij te dragen! Die van Lame ook , want uw opmerking was echt wel lame. Der kan altijd iemand bij zitten dat er wel kennis van heeft .. En dan bende gefucked als da ne klootzak is!

    En het werkt niet! Omdat op te lossen zulde toch een live voorbeeld moeten geven..
    Of beter ook niet want dan riskeerde dat uw tabel verdwijnt ..
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in