Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Downloadscript funktioniert nicht mit jeder Datei (https://www.delphipraxis.net/140079-%5Bphp%5D-downloadscript-funktioniert-nicht-mit-jeder-datei.html)

Andreas L. 11. Sep 2009 11:04


[PHP] Downloadscript funktioniert nicht mit jeder Datei
 
Hi,
ich möchte die Downloads meiner Programme zählen lassen, die URLs sollen aber weiterhin auf die Original-Datei zeigen z. B. http://www.cap-systems.com/files/coo...5.10_setup.exe

Also hab ich mir mit einer htaccess-Datei eine mod_rewrite Regel definiert die eine PHP-Datei aufruft, den Counter zählen lässt und dann die Datei zum download anbietet. Das sieht so aus:

.htaccess
Code:
RewriteRule ^files/cookiecrumbler/(.*)$ /includes/download.php?filename=cookiecrumbler/$1 [L]
download.php
Code:
<?php

  $allowedfileexts = array('exe', 'zip', '7z', 'dll', 'dat', 'xml');

  if(file_exists('/www/htdocs/XXX/files/' . $_GET['filename']))
  {
    $fileinfo = pathinfo('/www/htdocs/XXX/files/' . $_GET['filename']);
    if(in_array(strtolower($fileinfo['extension']), $allowedfileexts))
    {
      header('Content-type: application/' . $fileinfo['extension']);
      header('Content-Disposition: attachment; filename="' . $fileinfo['filename'] . '.' . $fileinfo['extension'] . '"');
      readfile('/www/htdocs/XXX/files/' . $_GET['filename']);

      //BEGIN: chCounter
      $chCounter_visible = 0;
      $chCounter_status = 'active';
      include('/www/htdocs/XXX/includes/chcounter/counter.php');
      //END: chCounter
    }
  }
  else
  {
    die('File not found!');
  }

?>
Leider wird der Zähler durch den oben angegebenen Link nicht erhöht. Rufe ich das Script direkt auf mit z. B. download.php?filename=cookiecrumbler/CookieCrumbler_1.5.10_setup.exe erhalte ich eine leere Seite die unendlich lange lädt. Rufe ich das Script aber mit einer XML-Datei als Parameter auf funktionierts: download.php?filename=pad/cookiecrumbler.xml

Was ist an der mod-rewrite-Regel und der PHP-Datei falsch?

jfheins 11. Sep 2009 11:14

Re: [PHP] Downloadscript funktioniert nicht mit jeder Datei
 
Deine MIME-Typen sind Quark. application/exe ist kein MIME-Typ. application/7z genausowenig.

Um einen Download zu erzwingen, solltest du application/octet-stream als MIME-Typ verwenden - obs daran liegt weiß ich nicht.

DeddyH 11. Sep 2009 11:18

Re: [PHP] Downloadscript funktioniert nicht mit jeder Datei
 
AFAIK kann es sehr wohl daran liegen. Etwas mehr zu MIME-Typen gibt es u.a. hier.

Andreas L. 11. Sep 2009 11:22

Re: [PHP] Downloadscript funktioniert nicht mit jeder Datei
 
Zitat:

Zitat von jfheins

Um einen Download zu erzwingen, solltest du application/octet-stream als MIME-Typ verwenden - obs daran liegt weiß ich nicht.

Geht trotzdem nicht: http://www.cap-systems.com/includes/...5.10_setup.exe Endlos-Schleife. Bin echt ratlos...

DeddyH 11. Sep 2009 11:25

Re: [PHP] Downloadscript funktioniert nicht mit jeder Datei
 
Der Link funktioniert hier bei mir einwandfrei.

Andreas L. 11. Sep 2009 11:53

Re: [PHP] Downloadscript funktioniert nicht mit jeder Datei
 
Zitat:

Zitat von DeddyH
Der Link funktioniert hier bei mir einwandfrei.

Mit "Ziel speichern unter" geht bei mir auch. Wenn ich aber ein neues Browserfenster/Tab öffne und den Link dort einfüge kommt wie gesagt eine Endlos-Schleife. Gestern hats schon wunderbar funktioniert, das einzige was ich geändert hab ist die Überprüfung der Dateiendung (um den Download von php-Sourcen zu unterbinden). Kann da aber auch keinen Fehler sehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz