[PHP] PHP bestand forceren om te downloaden

Pagina: 1
Acties:
  • 54 views sinds 30-01-2008

  • jeroenzelle
  • Registratie: Januari 2004
  • Laatst online: 10:43
Ik gebruik een downloadscript om alle pdf bestanden in te indexeren. Dit is een compleet script, maar ik heb hem grotendeels aangepast om aan mijn wensen te voldoen

Alleen als ik een pdf bestand wil downloaden, dan opent hij hem in Adobe Acrobat.

Ik heb al de search gebruikt & stukjes php script uitgeprobeerd, maar niks werkt goed.

Hieronder de code van "download.php", waarin volgens mij de code moet staan.:

Link website: http://www.jeroen-zelle.dds.nl/php/olate

Wie kan mij helpen?

PHP:
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php

// Initialisation
require('./includes/init.php');

// Show categories
$fcm->show_cats();

// Start sessions
session_start();

// 1. Check isset($_REQUEST'file']) then get details
if (isset($_REQUEST['file']))
{   
    validate_types($_REQUEST, array('file' => 'INT', 'go' => 'INT', 'mirror' => 'INT'));
    
    // Get file details
    $details = $fldm->get_details($_REQUEST['file']);
    
    if (empty($details['password']) || isset($_SESSION[$_REQUEST['file'].'_auth']))
    {   
        // 2. If page called !isset($_REQUEST['go']) and there is an agreement, display
        if (!isset($_REQUEST['go']) && $details['id'] != 0 && !empty($details['agreement_id']))
        {
            // Get the agreement
            $agreement = $fldm->get_agreement($details['agreement_id']);        
            $agreement_template = $uim->fetch_template('files/agreement');      
            $agreement_template->assign_vars(array('agreement' => $agreement,
                                                    'file_id' => $details['id']));                              
            $agreement_template->show();
        }
        // 3. If !isset($_REQUEST['go']) || $_REQUEST['go'] == 1 check !empty($details) and get mirror data
        elseif (!isset($_REQUEST['go']) || $_REQUEST['go'] == 1)
        {   
            if (!empty($details))
            {   
                // Get mirrors
                $mirrors_result = $dbim->query('SELECT id, file_id, name, location, url
                                                FROM '.DB_PREFIX.'mirrors
                                                WHERE (file_id = '.$_REQUEST['file'].')');
                
                // 4. If $dbim->num_rows($mirrors_result) == 1 redirect to get it
                if ($dbim->num_rows($mirrors_result) == 1)
                {               
                    $mirror = $dbim->fetch_array($mirrors_result);
                    header('Location: download.php?go=2&file='.$_REQUEST['file'].'&mirror='.$mirror['id']); 
                }
                // 5. If $dbim->num_rows($mirrors_result) > 1 get and display list
                elseif ($dbim->num_rows($mirrors_result) > 1)
                {
                    // Fetch and display
                    $mirrors_template = $uim->fetch_template('files/mirrors');
                    
                    while ($mirror = $dbim->fetch_array($mirrors_result))
                    {
                        $mirrors_template->assign_var('file_id', $_REQUEST['file']);
                        $mirrors_template->assign_var('mirror', $mirror);
                        $mirrors_template->use_block('mirror');
                    }
                    
                    $mirrors_template->show();
                }
                else
                {
                    $error_message = $lm->language('frontend', 'error_no_file');
                    $error = $uim->fetch_template('global/error');
                    $error->assign_var('error_message', $error_message);
                    $error->show();
                }
            }
            else
            {
                $error_message = $lm->language('frontend', 'error_no_id');
                $error = $uim->fetch_template('global/error');
                $error->assign_var('error_message', $error_message);
                $error->show();
            }
        }
        // 6. If $_REQUEST['go'] == 2 and isset($_REQUEST['mirror']), validate id, increment download count then redirect to URL
        elseif ($_REQUEST['go'] == 2 && isset($_REQUEST['mirror']))
        {           
            if ($site_config['enable_leech_protection'] == 1 && $_SESSION['valid_user'] == false)
            {
                header('Location: details.php?file='.$_REQUEST['file']);
                exit;
            }
            
            // Incrememnt and update
            $details['downloads']++;
            $update = $dbim->query('UPDATE '.DB_PREFIX.'files 
                                    SET downloads = '.$details['downloads'].'
                                    WHERE (id = '.$_REQUEST['file'].')');
                                        
            if ($site_config['enable_stats'])
            {
                $dbim->query('INSERT INTO '.DB_PREFIX.'stats 
                                SET file_id = '.$_REQUEST['file'].', 
                                    timestamp = "'.time().'", 
                                    ip = "'.$_SERVER['REMOTE_ADDR'].'", 
                                    referrer = "'.$_SERVER['HTTP_REFERRER'].'", 
                                    user_agent = "'.$_SERVER['HTTP_USER_AGENT'].'"');
            }
                                                                    
            // Get URL
            $mirrors_result = $dbim->query('SELECT id, url
                                            FROM '.DB_PREFIX.'mirrors
                                            WHERE (id = '.$_REQUEST['mirror'].')');
                                                
            $mirror = $dbim->fetch_array($mirrors_result);
                
            if ($dbim->num_rows($mirrors_result) == 0)
            {
                $error_message = $lm->language('frontend', 'error_no_file');
                $error = $uim->fetch_template('global/error');
                $error->assign_var('error_message', $error_message);
                $error->show();
            }
            else
            {
                // Go
                header('Location: '.$mirror['url']);
            }
        }
    }
    else
    {
        // Get template
        $protection = $uim->fetch_template('files/protected');
        $protection->assign_var('file_id', $_REQUEST['file']);
            
        // Show template
        $protection->show();    
    }
}
else
{
    $error_message = $lm->language('frontend', 'error_no_id');
    $error = $uim->fetch_template('global/error');
    $error->assign_var('error_message', $error_message);
    $error->show();
}

// End table
$end = $uim->fetch_template('global/end');
$end->show();

// Show everything
$uim->generate(TITLE_PREFIX.$lm->language('frontend', 'download').' '.$details['name']);
?>

[ Voor 15% gewijzigd door jeroenzelle op 18-01-2005 19:58 . Reden: Verkeerde titel :$.... moet pdf bestand zijn.... ]


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13-05 20:39
Als je even had gezocht dan had je het volgende gevonden:
PHP:
1
2
3
    header("Content-type: application/pdf");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header('Content-Disposition: attachment; filename="downloaded.pdf"');


Ik denk dat je die onderste header() nog ergens in je code moet zien te wurmen.

  • jeroenzelle
  • Registratie: Januari 2004
  • Laatst online: 10:43
hmmm.. ok...alleen hij geeft nu een fout als ik dat erin zet.

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 16-05 22:38

WPN

wat voor fout bijvoorbeeld?

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Jeroenz18 schreef op dinsdag 18 januari 2005 @ 20:03:
hmmm.. ok...alleen hij geeft nu een fout als ik dat erin zet.
en nu moeten wij raden welke fout dat is?
ok, ik gok dat het is dat er al headers zijn verstuurd, wat dus betekend dat je dit voor al je andere output moet zetten :P
En heb ik de koelkast gewonnen?

  • jeroenzelle
  • Registratie: Januari 2004
  • Laatst online: 10:43
hmmm... ok ... :P

ik ben er inderdaad al achter gekomen dat er headers verstuurd zijn... 8)7

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:22

Creepy

Tactical Espionage Splatterer

Jeroenz18 schreef op dinsdag 18 januari 2005 @ 20:11:
hmmm... ok ... :P

ik ben er inderdaad al achter gekomen dat er headers verstuurd zijn... 8)7
Scheelt. Dit had je best zelf op kunnen lossen niet? Daarnaast is het niet de bedoeling dat we hier support gaan leveren op 3rd party code. Daarnaast plaats je een enorme lap code met een veel te kleine topic start.

Om zo'n probleem zelf op te lossen raad ik je aan om P&W FAQ - Leer **** debuggen!! eens door te nemen, en voordat je opnieuw een topic opent zou ik eens kijken naar P&W FAQ - De "quickstart" zodat je ziet hoe we een topicstart graag zouden willen hebben :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.