Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Download-Counter (https://www.delphipraxis.net/64619-%5Bphp%5D-download-counter.html)

MisterNiceGuy 6. Mär 2006 13:11

Re: [PHP] Download-Counter
 
Holla, PW hab ich grad vorsichtshalber geändert :)

Aber der Script startet immernoch keinen Download.

vlees91 6. Mär 2006 13:36

Re: [PHP] Download-Counter
 
Zitat:

Zitat von Matze
@Markus: Du solltest noch ein

Code:
mysql_free_result($result);
einbauen. ;)

wozu ist das notwendig?
man setzt normale variablen ja auch net zurück

PS: sry für ot

[edit=alcaeus]Uebermaessige Verwendung des color-Tags entfernt. In Zukunft solche Schwachsinnigkeiten bitte unterlassen! :warn: Mfg, alcaeus[/edit]

MisterNiceGuy 6. Mär 2006 13:46

Re: [PHP] Download-Counter
 
@Markus: Lies readfile nicht eine Datei ein? Wenn ich deine Methode einbaue, fängt mein Browser an zu haken. Scheint ziemlich prozessorlastig zu sein ;)

S2B 6. Mär 2006 13:50

Re: [PHP] Download-Counter
 
@vlees91: Kommt darauf an, wie groß eine Variable ist... :wink:

pacman1986 6. Mär 2006 14:23

Re: [PHP] Download-Counter
 
@vlees91
warum schreibst du bunt ???

ebenfals sry für ot :P

Daniel 6. Mär 2006 14:35

Re: [PHP] Download-Counter
 
So, nun wieder zurück zum Thema bitte.

Mystic 6. Mär 2006 14:43

Re: [PHP] Download-Counter
 
Es lässt sich sogar fast komplett transparent gestalten:

Ein Verzeichnis (z.B. /files), welches nur eine .htaccess enthält:
Code:
RewriteEngine on
RewriteBase   /files/
RewriteRule   ^(.+)$ /download.php\?file=$1
Alle Anfragen à la /files/Datei123.exe werden dann intern nach /download.php?file=Datei123.exe umgeleitet. Das Skript kann dann den Counter für die Datei erhöhen und die echte Datei123.exe an den Client weiterleiten ( readfile() ).

Meine download.php:

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';
  }
?>

vlees91 6. Mär 2006 16:54

Re: [PHP] Download-Counter
 
So ists auch gut finde ich
ich habs bisher immer wie oben genannt gemacht:
liste mit allen downloads in eine db (incl. downloadzahl)
dann über download.php?a=123 die zahl in der db aktualisiert
und die download.php schickt die datei automatisch zum user



OT: wie setzt man denn eine variable in PHP zurück?

[edit=alcaeus]Uebermaessige Verwendung des color-Tags entfernt. In Zukunft solche Schwachsinnigkeiten bitte unterlassen! :warn: Mfg, alcaeus[/edit]

Nicolai1234 6. Mär 2006 17:14

Re: [PHP] Download-Counter
 
Zitat:

Zitat von Mystic
Es lässt sich sogar fast komplett transparent gestalten:

Ein Verzeichnis (z.B. /files), welches nur eine .htaccess enthält:
Code:
RewriteEngine on
RewriteBase   /files/
RewriteRule   ^(.+)$ /download.php\?file=$1
Alle Anfragen à la /files/Datei123.exe werden dann intern nach /download.php?file=Datei123.exe umgeleitet. Das Skript kann dann den Counter für die Datei erhöhen und die echte Datei123.exe an den Client weiterleiten ( readfile() ).

Meine download.php:

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';
  }
?>

Sorry, ich fange gerade erst wieder an mich mit php &mysql zu beschäftigen... Was muss den in diesem fall in der "dblogin.php" alles drinstehen? Ich bekomm das gerade nicht ganz auf die Reihe...

Tubos 6. Mär 2006 17:19

Re: [PHP] Download-Counter
 
Vorrausgesetzt, die Datei macht nicht mehr als den Datenbank-Login: Dann müsste es sich um zwei Funktionsaufrufe handeln.
mysql_connect mit Benutzername und Passwort zum Verbinden und mysql_select_db zum Auswählen der Datenbank.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.
Seite 2 von 3     12 3      

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