![]() |
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. |
Re: PHP - FileDownload Counter implementieren ohne DB
Kannst du PHP?
|
Re: PHP - FileDownload Counter implementieren ohne DB
Ja.
|
Re: PHP - FileDownload Counter implementieren ohne DB
Hallo sniper_w,
so dürfte es dann sein ...
Code:
bye
<?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); ?> Claus |
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)?
|
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 |
Re: PHP - FileDownload Counter implementieren ohne DB
Bei meiner Homepage mache ich das so:
Einen Ordner 'files' der nur eine .htaccess enthält:
Code:
Einen Ordner 'realfiles' der dann die Dateien enthält.
RewriteEngine on
RewriteBase /files/ RewriteRule ^(.+)$ /download.php\?file=$1 Eine download.php im Stammverzeichnis:
Code:
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.
<?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'; } ?> Zitat:
Code:
und nicht per meta-refresh.
header("Location: http://mein.host/meine.datei");
|
Re: PHP - FileDownload Counter implementieren ohne DB
Danke, ihr habt geholfen, es geht wunderbar.
|
Re: PHP - FileDownload Counter implementieren ohne DB
Zitat:
Was spricht gegen den Meta-Refresh :?: Greetz Sergej |
Re: PHP - FileDownload Counter implementieren ohne DB
mit header gehts schneller ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz