bijlage downloaden die eerder in db is geüpload

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Murtada Helo

Murtada Helo

06/02/2013 15:51:14
Quote Anchor link
Hallo,

Een bijlage is geüpload in de database en deze heb ik ook gedownload zonder probleem, maar dat is in de test omgeving nu heb ik dit in mijn software geprobeerd alles werkt prima behalve downloaden gaat mis met openen van het bestand ik krijg onleesbare tekst bestanden als ik txt bestand download krijg gewoon de getypte tekst te zien zonder download dialoog venster optie en als pdf download of foto krijg ik onleesbare tekst te zien terwijl dit in de test omgeving wel werkt zonder probleem. Hierbij is mijn download pagina kan iemand zien waar de fout zit?
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
  
    if (isset($_GET['aanvraag_id']))
    {


    $id = $_GET['aanvraag_id'];
    $idb = $_GET['bestand_id'];
    mysql_connect("--","--","--!") or die (mysql_error());
    mysql_select_db("--") or die (mysql_error());
    $sql = "select *FROM upload where aanvraag_id = '$id' AND bestand_id='$idb'";
    $result = @mysql_query($sql);
    $content = @mysql_result($result, 0, "content");
    $fileName = @mysql_result($result, 0, "name");
    $fileSize = @mysql_result($result, 0, "size");
    $fileType = @mysql_result($result, 0, "type");
header("Content-type: $fileType");
    header("Content-length: $fileSize");
    header("Content-Disposition: attachment; name=$fileName");
    header("Content-Description: PHP Generated Data");
    header("Content-Type: application/octet-stream");
    header("Content-transfer-encoding: binary");
    
   echo "$content";
    }

    echo "<br><a href='javascript:' onclick='history.go(-1); return false'><b>Vorige pagina</a>";

    ?>


Toevoeging op 06/02/2013 16:19:12:

Ik krijg naast de onleesbare tekst de volgende foutmelding
Warning: Cannot modify header information - headers already sent by (output started at/download.php:1) in /download.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /download.php:1) in /download.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /download.php:1) in /download.php on line 18

Warning: Cannot modify header information - headers already sent by (output started at /download.php:1) in /download.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /download.php:1) in /download.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at/download.php:1) in /download.php on line 21
%PDF-1.4 %äüöß 2 0 obj <> stream xœÅ[Mó¸ ¾Ï¯Èy¤–dY000™I½-0À^ô¶m t/ýûå‡>(Év¬wÅy31E‘”øè!ånêòß·ÿ\¦Ëßl°7}ñ³ºùËûí—Ë¿ùü÷Ç?ßîßovGÎÍ üýûå/OuQúòý÷I­ßÿz{|¿ýÚ PÚ]Ün–åõ%€ø”¿Ú÷I¯J¿Of½Â缪é}²ëUÁ÷iYgüéªà/·º÷ÉÓ ëž~¬ >ï4€??Wó>}ÑWG"4õ$A3ðÔÏÕÖãâüô‡šÖ+¨•ZÎ†“Z”­ÔðtÒ*šTéÕäÑ ùgƒ&ãtW—Õ. +XpýÛ÷_7ÃiÕh_O4=ü.éì9œ:‚!£Ù¡?Š/σd0ÅC . g…w9^Nš°°XÇzifRȪÔf€r ÎåÀ2“NˆZ‘”Õ˜v1OcrîÌOÌ]¨KÛErLÌžIü<[ñÁû@×x1ÿN HÑ¡=r8‹ÍyžÅB‡ÀŠ¢nXñ“½Ÿ}ÝWÚ{SÄô÷Â¯C"IÙ$>0Ågéú®w‰“PõréB×J¤ZKKè«å¬]Ø–”ÉÃg?R‹²ýmRÒ&øâ˜xz¤0ì2ãËâó¼ 0í8×SêŠ4ˆðg™³ AͼµC ]mÈò" kEHazÎÃ_ TÄž=6<`zä"—£?‹ïàLTðE¤A.¡` ^Q„ëwBëF0Ta“ÇQim•Ã°^¡b¨-¬ÁÞî% AæÔm¹ýÓ'h8Ý j,EPÆŽ¢¹Šû³çº‰S£ß1é¼"ĦŒ(M‡ú^v¤rÕ¹Õ²æg!iÁð&”oöQ…ýÉ¥ºè\zÅÀá«KiÝË‘÷ÈFêGùLšŽÐÓÓž̳
 
PHP hulp

PHP hulp

23/12/2024 18:48:56
 
Obelix Idefix

Obelix Idefix

06/02/2013 16:28:11
Quote Anchor link
Kennelijk heb je voor de header-regels al output. Zelfs een spatie is daarvoor al genoeg.

Ten aanzien van je code:
Zet error-reporting aan.
Je kopieert 2 variabelen. Je controleert nergens of ze beide bestaan en of ze voldoen aan de eisen die er aan gesteld worden.
'or die' is geen (goede) foutafhandeling.
Variabelen buiten quotes.
Je query is lek -> gevoelig voor sql-injectie. Met alle risico's.
Je mist foutafhandeling bij je query.
Het gebruik van @ wordt afgeraden; daarmee onderdruk je foutmeldingen. Zorg voor goede foutafhandeling.
In PHP wordt ' aanbevolen (voor echo) en in HTML " (regel 25).
 
Murtada Helo

Murtada Helo

06/02/2013 16:44:56
Quote Anchor link
Ik heb het nu aangepast met wat op phphulp script
nu zonder de foutmelding maar de tekst blijft onleesbaar en ik krijg geen windows dialoog venster om de bijlge

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
   ob_start();
    error_reporting(0);
    if (isset($_GET['aanvraag_id']))
    {


    $id = $_GET['aanvraag_id'];
    $idb = $_GET['bestand_id'];
    mysql_connect("--","--","--!") or die (mysql_error());
    mysql_select_db("--") or die (mysql_error());
    $query = mysql_query("select *FROM upload where aanvraag_id = '$id' AND bestand_id='$idb'");
    $row=mysql_fetch_assoc($query);

    header("Content-Type: ".$row['type']);
    header("Content-length:".$row['size']);
    header("Content-Disposition: attachment; filename=".$row['name']);
    header("Content-Description: PHP Generated Data");
    header("Content-Type: application/octet-stream");
        header("Content-transfer-encoding: binary");
    echo($row['content']);
    }

    mysql_free_result($query);
    mysql_close();
 
Erwin H

Erwin H

06/02/2013 16:49:02
Quote Anchor link
Waarom heb je een ob_start() aan het begin staan?
 
- SanThe -

- SanThe -

06/02/2013 16:50:29
Quote Anchor link
Je zal ook in de headers moeten aangeven wat voor bestand het is.
Dus een doc, pdf of gif of wat dan ook.
 
Murtada Helo

Murtada Helo

06/02/2013 17:04:07
Quote Anchor link
Heb ob_start() weggehaald

Is dat niet
header("Content-Type: ".$row['type']); want deze dezelfde type wat ik in mijn db opgeslagen heb?


Toevoeging op 07/02/2013 12:45:17:

Kan ik ook het eerder geüploade bestand in db van db halen en in een directory opslaan en dan dit pas downloaden? Als dat zo is Hoe ?
 
Murtada Helo

Murtada Helo

08/02/2013 09:35:07
Quote Anchor link
Kan dit te maken hebben dat mijn software in een webserver draait anders dan localhost want met localhost heb ik dit probleem niet. Als dat zo is wat is de oplossing hiervoor?
 
Albert de Wit

Albert de Wit

08/02/2013 11:49:55
Quote Anchor link
Je mag niets geen output voor de headers hebben. Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo 'Hoi';
header(); // Deze header voert hij niet uit want hij geeft als output 'Hoi'
exit();
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Hoi
<?php
header(); // Deze header voert hij niet uit want hij geeft als output 'Hoi'
exit();
?>


Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo 'Hoi';
include 'header.php';
?>


header.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
header(); // Deze header voert hij niet uit want hij geeft als output 'Hoi' in het bestand waarin hij is ge-include
exit();
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$var
= 'Hoi';
header(); // Deze header voert hij wel uit want hij geeft niks als output aan omdat die pas na de header komt
exit();
echo $var;
?>


Ik had een server draaien bij 000webhost.com en daar had ik geen last van het probleem. Op mijn localhost wel. Je kunt dit ergens aanpassen in de PHPconfig files dacht ik maar beter is om dat niet te doen en gewoon ervoor zorgen dat er geen output komt voor de 'header();'.
Gewijzigd op 08/02/2013 11:53:25 door Albert de Wit
 
Murtada Helo

Murtada Helo

08/02/2013 13:23:50
Quote Anchor link
Albert, Bedankt voor de reactie!
Maar waar zie je nu mijn echoën op bovenstaande download pagina?
 
Albert de Wit

Albert de Wit

08/02/2013 13:48:51
Quote Anchor link
Die zie ik niet, maar kijk eens naar voorbeeld 3.
 
Murtada Helo

Murtada Helo

08/02/2013 15:09:44
Quote Anchor link
Quote:
Deze is mijn upload pagina en ik heb geen include of iets dergelijk en toch krijg ik Cannot modify header information - headers already sent by (output started at

Kun je deze nakijken en misschien zie je echoen voor de headers die ik niet zie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
if ($_POST['upload'] && $_FILES['userfile']['size'] > 0)
{

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
    
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$file_err = $_FILES['userfile']['error'];

$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);

fclose($fp);
 
if(!get_magic_quotes_gpc())
{

    $fileName = addslashes($fileName);
}

$intDb=mysql_connect("","","") or die (mysql_error());
mysql_select_db("--", $intDb) or die (mysql_error());
if ($_FILES["userfile"]["type"])
    {

        if (file_exists($fileName))
        {

            die( '<td>Sorry <b>'. $fileName . '</b> already exists</td>');
        }

$query="INSERT INTO upload (aanvraag_id, name, size, type, content ) VALUES ('$id','$fileName', '$fileSize', '$fileType', '$content')";
if (!mysql_query($query)) {
        echo "Het bijwerken van de database is mislukt!";
    }

    echo "<td>De bijlage is toegevoegd</td>\n";

}
}

}
else
{
print"<form method=post enctype=multipart/form-data>";
print"<table width='350' border='0' cellpadding='1' cellspacing='1' class='box' bgcolor=$color[5]>";
print'<tr>';
print '<td width="246">';
print'<input type="hidden" name="MAX_FILE_SIZE" value="2000000">';
print'<input name="userfile" type="file" id="userfile">';
print '</td>';
print '<td width="80"><input name="upload" type="submit" class="box" id="upload" value="upload"></td></tr>';
}


mysql_connect("","","!") or die (mysql_error());
mysql_select_db("") or die (mysql_error());
    
$sql = "SELECT * FROM upload WHERE aanvraag_id='$id'";
//    die(sql);
    $result = mysql_query($sql);
    $rows = mysql_num_rows($result);
    print"<table width='350' border='0' cellpadding='1' cellspacing='1' class='box' >";

    echo " <tr>\n";
  
    echo " <th align='left'>Bestandsnaam </th>\n";
    echo " <th align='left'>Type </th>\n";
    echo " <th align='left'>Size </th>\n";
    echo " <th align='left'>Opties</th>\n";
    echo " </tr>\n";
    while ($rows = mysql_fetch_object($result))
    {

    echo " <tr>\n";
    
    echo "<td align='left'>$rows->name</td>\n";
    echo "<td align='left'>$rows->type</td>\n";
    echo "<td align='left'>$rows->size</td>\n";
    
    echo "<td align='left'><a href='download.php?aanvraag_id=$id&bestand_id=$rows->bestand_id'' target='_blank'>Download</a>/";
    echo "<a href='verwijderen.php?aanvraag_id=$id&bestand_id=$rows->bestand_id'>verwijderen</a></td>\n";
    echo "</tr>\n";
    }

    print "</table>\n";
    mysql_free_result($result);
    mysql_close($intDb);
    
    echo "<tr>\n";
    echo "<td align='left'><a href='javascript:' onclick='history.go(-1); return false'><b>Vorige pagina</a></td>\n";
    echo "</tr>\n";
    print "</td>\n";
    print "</tr>\n";
    print "</table>\n";
    print "</FORM>\n";
?>
Gewijzigd op 08/02/2013 15:54:08 door Murtada Helo
 
Albert de Wit

Albert de Wit

08/02/2013 15:46:16
Quote Anchor link
Kun je je code binnen code tags zetten?

Kijk nou eens goed naar je error.

Warning: Cannot modify header information - headers already sent by (output started at/download.php:1) in /download.php on line 16

Even basis ontleding

Warning:
Waarschuwing (duh)

Cannot modify header information
Kan header informatie niet modificeren

headers already sent by (output started at/download.php:1)
Headers zijn al verzonden op download.php op lijn 1

in /download.php on line 16
error komt op download.php lijn 16

Jouw code vanaf regel 14:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

    header("Content-Type: ".$row['type']);
    header("Content-length:".$row['size']);
    header("Content-Disposition: attachment; filename=".$row['name']);
    header("Content-Description: PHP Generated Data");
    header("Content-Type: application/octet-stream");
        header("Content-transfer-encoding: binary");
    echo($row['content']);
?>


Wat denk je nu dat er volgens de error verkeerd gaat?

Hint: headers already sent by (output started at/download.php:1)
 
Murtada Helo

Murtada Helo

08/02/2013 16:28:32
Quote Anchor link
Ik krijg deze error niet meer, maar het bestand wordt in een onleesbare tekst geopend en dat bij localhost niet het geval is (op normale manier wordt gedownload)
Het probleem gaat niet om de foutmelding of de waarschuwing. Het probleem is dat in de download.php wordt de inhoudt van het bestand in een onleesbare tekst geopen en ik ben nu dagen bezig om dit op te lossen maar dit krijg ik niet met elkaar.
 
Albert de Wit

Albert de Wit

08/02/2013 16:32:59
Quote Anchor link
Probeer je toevallig een afbeelding te laten zien op de pagina?

Want dan denk ik dat je raw data van je afbeelding in ASCII karakters ziet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

header('content-type: image/png');

?>


Die code zorgt ervoor dat dat omgezet wordt naar een afbeelding.
 
- SanThe -

- SanThe -

08/02/2013 16:40:32
Quote Anchor link
- SanThe - op 06/02/2013 16:50:29:
Je zal ook in de headers moeten aangeven wat voor bestand het is.
Dus een doc, pdf of gif of wat dan ook.
 
Murtada Helo

Murtada Helo

08/02/2013 16:46:25
Quote Anchor link
Is dat niet
header("Content-Type: ".$row['type']); want deze dezelfde type dat bij bestand_id hoort dat van mysql wordt opgehaald?
 
- SanThe -

- SanThe -

08/02/2013 17:27:02
Quote Anchor link
Wat staat er in $row['type']?
 
Murtada Helo

Murtada Helo

08/02/2013 18:53:38
Quote Anchor link
Het type dat bij bestand_id hoort. Mijn vraag misschien is niet duidelijk voor jullie ik zeg deze sccript werkt perfect met
localhost zonder enkel probleem dus deze huidige header werkt zonder probleem met localhost als test omgeving.
Maar als deze script in mijn applicatie die met een andere webserver draait dan wordt bij het kliken op download de inhoud van het bestand pdf,png, maak niet out van welke type is als vreemde tekst op download pagina gedisplayed hoe kan ik dat het bestand bij kliken op download het betreffenderdt bestand wordt gewoon gedownload zoals ik dat in testomgeving ook dit doet graag uw hulp
 
Albert de Wit

Albert de Wit

08/02/2013 21:30:38
Quote Anchor link
Lees dan ook wat ik eerder heb gezegd over de headers...
 
- SanThe -

- SanThe -

08/02/2013 23:01:40
Quote Anchor link
- SanThe - op 08/02/2013 17:27:02:
Wat staat er in $row['type']?

Murtada Helo op 08/02/2013 18:53:38:
Het type dat bij bestand_id hoort.


Maar echo dat eens.
Dat zal waarschijnlijk niet goed zijn.
 
Murtada Helo

Murtada Helo

08/02/2013 23:07:18
Quote Anchor link
Heb het geechoed en krijg de bijbehoorende type dus deze is goed
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.