Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP - FileDownload Counter implementieren ohne DB (https://www.delphipraxis.net/48503-php-filedownload-counter-implementieren-ohne-db.html)

sniper_w 26. Jun 2005 14:44


PHP - FileDownload Counter implementieren ohne DB
 
Also, mal angenommen, ich habe auf meinem Web-Server eine Datei Names MyFile.EXT. Ich biete sie zum Download. Ich will jetzt eine PHP-Skripte, die in einer Datei (counter.txt) schreibt, wieviel man meine MFile.EXT Datei heruntergeladen hat. Wie ? Und ja, bitte ohne MySQL.
Danke.

Neuni 26. Jun 2005 14:48

Re: PHP - FileDownload Counter implementieren ohne DB
 
Kannst du PHP?

sniper_w 26. Jun 2005 15:01

Re: PHP - FileDownload Counter implementieren ohne DB
 
Ja.

Duffy 26. Jun 2005 15:10

Re: PHP - FileDownload Counter implementieren ohne DB
 
Hallo sniper_w,
so dürfte es dann sein ...
Code:
<?php
  $file= fopen("counter.txt", "r+") or die ("die Datei laesst sich nicht oeffnen!");
  fscanf($file, "%d", $count);
  $count++;
  rewind($file);
  fputs($file, $count);
  fclose($file);
?>
bye
Claus

sniper_w 26. Jun 2005 15:37

Re: PHP - FileDownload Counter implementieren ohne DB
 
Danke, ich habe mich ungeschickt ausgedrückt. Ich weiss wie man eine Datei per PHP öffnet, leist, screibt usw. Was ich nicht weiss ist, wenn man auf die Link (die zum Download führt) klickt, wei sendet man diese Datei an einen Client ( nach dem man den Counter um 1 erhöht hat)?

Sergej 26. Jun 2005 15:39

Re: PHP - FileDownload Counter implementieren ohne DB
 
mach einfach ne Weiterleitung auf die Datei

Code:
<?php
print "<meta http-equiv=\"refresh\" content=\"0; URL=http://mein.host/meine.datei\">";
?>

Greetz Sergej

Mystic 26. Jun 2005 15:41

Re: PHP - FileDownload Counter implementieren ohne DB
 
Bei meiner Homepage mache ich das so:

Einen Ordner 'files' der nur eine .htaccess enthält:

Code:
RewriteEngine on
RewriteBase   /files/
RewriteRule   ^(.+)$ /download.php\?file=$1
Einen Ordner 'realfiles' der dann die Dateien enthält.

Eine download.php im Stammverzeichnis:

Code:
<?php
  $filename = 'realfiles/' . $_GET['file'];
  if (IsSet($_GET["file"]) && file_exists($filename) && strpos($filename,'../') === false)
  {
    require 'dblogin.php';
    $dbh = mysql_login();
    mysql_select_db('danny');
    $stats_query = "SELECT count FROM downloads WHERE file='" . $_GET['file'] . "'";
    $stats_result = mysql_query($stats_query);
    if (mysql_num_rows($stats_result) > 0)
    {
      $stats_array = mysql_fetch_assoc($stats_result);
      if ($stats_array['count'] !== null)
      {
        $stats_query = "UPDATE downloads SET count = count + 1 WHERE file='" . $_GET['file'] . "'";
        mysql_query($stats_query);
      }
    }
    mysql_close($dbh);
    header('Content-type: application/force-download');
    header('Content-length:' . filesize($filename));
    readfile($filename);
  } else {
    header('Status: 404 Not Found');
    chdir('errors');
    require '404.php';
  }
?>
Das Ergebnis ist ein komplett transparenter Downloadcounter. Wenn der Client die Datei /files/abc.def anfragt, wird das intern auf /download.php?file=abc.def umgeleitet. Das Skript erhöht dann den Counter für die Datei um 1 (per MySQL) und schickt die Datei /realfiles/abc.def an den Client.

Zitat:

Zitat von Sergej
mach einfach ne Weiterleitung auf die Datei

Code:
<?php
print "<meta http-equiv=\"refresh\" content=\"0; URL=http://mein.host/meine.datei\">";
?>

Greetz Sergej

Wenn es schon eine Weiterleitung sein muss dann aber per
Code:
header("Location: http://mein.host/meine.datei");
und nicht per meta-refresh.

sniper_w 26. Jun 2005 17:13

Re: PHP - FileDownload Counter implementieren ohne DB
 
Danke, ihr habt geholfen, es geht wunderbar.

Sergej 26. Jun 2005 17:42

Re: PHP - FileDownload Counter implementieren ohne DB
 
Zitat:

Zitat von Mystic

Wenn es schon eine Weiterleitung sein muss dann aber per
Code:
header("Location: http://mein.host/meine.datei");
und nicht per meta-refresh.


Was spricht gegen den Meta-Refresh :?:

Greetz Sergej

Neuni 26. Jun 2005 18:19

Re: PHP - FileDownload Counter implementieren ohne DB
 
mit header gehts schneller ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr.
Seite 1 von 2  1 2      

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