AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Download-Counter

Ein Thema von MisterNiceGuy · begonnen am 6. Mär 2006 · letzter Beitrag vom 8. Mär 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

[PHP] Download-Counter

  Alt 6. Mär 2006, 11:50
Hi ich möchte gerne auf meiner Homepage einen Downloadcounter mit MySQL die Zugriffe auf bestimmte Dateien zählen lassen.
Allerdings würde ich das gerne so programmieren, dass ich nicht eine neue Seite laden muss um einen Download zu starten z.B. so
Code:
download.php?id=1
Ich will stattdessen den Counter in den Link einzufügen z.B. so
Code:
[url="./Programme/Einkaufsliste_setup.exe"]Einkaufsliste_setup.exe[/url]
Vielleicht lässt sich das mit Java Script machen? Ich hab leider keine Ahnung
Wenn ich den PHP-Quellcode direkt in den Link schreibe, wird der Wert des Counters auch beim Betreten der Seite erhöht.
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 11:56
Moin,

du musst das ueber eine extra-Seite machen, wenn du es nicht von client-seitigen Scripts abhaengig machen willst.
Du kannst ja den Link auf die Extra-Seite verweisen lassen, dort updaten, Download-Header senden, und dann die Datei per readfile() an den Client senden. Funktioniert bei mir auch einwandfrei

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 12:04
Das wirst du so wohl nicht hinbekommen, da du mit JavaScript keine Daten speichern kannst.
Und da PHP eine Serverseitige Scriptsprache ist, ist dabei nix mit Benutzerinteraktion.

Daher brauchst du eine Zwischenseite.
Allerdings muss der Benutzer davon nichts merken.

Du musst einfach folgendes machen:

Code:
<?
if (isset($_GET['file'])) {  // $_GET['file'] ist der Dateiname
  // Den passenden Wert in der Datenbank erhöhen
  header('Location: downloads/'.$_GET['file']); // Auf die Datei weiterleiten
}
?>
Is zwar 'n roter Kasten da, aber ich poste das dennoch mal so
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#4

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 13:13
Danke für eure Antworten Ich hab es in der Zwischenzeit mal mit einem Java-popup probiert, aber das wird von meinem Browser schon geblockt.

Werd jetzt die nächste Methode ausprobieren.
@Hador: Den Quellcode packe ich in eine neue PHP-Datei oder? Ich nehme mal nicht an, dass die dann neu geöffnete Seite dann nicht geschlossen wird, wie kann ich das noch realisieren?
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 13:37
Anderweitig kannst du natürlich folgendes machen:

Code:

<script>
function CountDownload(id, datei)
{
 location.href = '/count.php?id=' + id;
 window.setTimeout('location.href=\'' + datei + '\'', 1000);
}
</script>

[url="#"]Datei[/url]
Wichtig dabei ist, dass die PHP Seite KEINE Ausgabe erzeugt, also quasi 0 Byte zurückliefert.
Wenn dies der Fall ist wird die Seite nicht verlassen und der zweite Script-Part (window....) wird ebenfalls
ausgeführt. So werden beide Dateien nacheinander aufgerufen.
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Markus
(Gast)

n/a Beiträge
 
#6

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 13:47
Also ich mache das ganze so:

Datei "download.php":
Code:
<?php
if ($_GET[id] != "")
{
        $query = "UPDATE downloads SET anzahl = anzahl + 1 WHERE id = '".intval($_GET[id])."'";
        $result = mysql_query($query);

        $query = "SELECT dateiname FROM downloads WHERE id = '".intval($_GET[id])."'";
        $datei = mysql_fetch_array(mysql_query($query));
        $datei = $datei[dateiname];
       
        if ($datei != "")
        {
            $filename = $_SERVER[DOCUMENT_ROOT]."/downloads/".$datei;

            header("Content-Type: application/octet-stream");
            header("Content-Disposition: attachment; filename=\"$datei\"");
            readfile($filename);
        }
    }
}
?>
Wenn du dann noch eine .htaccess ins Download-Verzeichnis reinpackst, die folgendes enthält:
Code:
Order Allow, Deny
Allow from localhost
Deny from all
kannst du noch verhindern, dass die Downloads direkt aufgerufen werden. Das ist zwar eine neue Seite, aber diese Seite stellt im Prinzip den Download dar, daher ist das kein Problem.

Keine Garantie, dass es genauso funkioniert, hab nur meine kurz umgeschrieben
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 13:50
@Markus: Du solltest noch ein

Code:
mysql_free_result($result);
einbauen.
  Mit Zitat antworten Zitat
Markus
(Gast)

n/a Beiträge
 
#8

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 13:51
Jo, sollte, mach ich aber nie Aber hast natürlich recht...
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#9

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 14:01
Also ich hab das jetzt so geregelt:
Code:
<? 
if (isset($_GET['download'])) {   
  switch ($_GET['file']) {                         
    case 1:header('Location: Programme/EMail_Checker_setup.exe');    
...
    case 28:header('Location: Programme/MrOnline_zip.zip');
  } 
  $db_link = @mysql_connect("localhost", "web89", "*****");            
  mysql_select_db("usr_web89_1");
  $dlid=$_GET['download'];
  mysql_query("UPDATE dlcounter Set counter = counter+1 WHERE id=$dlid");          

?>
<script type= "text/javascript" >
self.close();
</script>
Die Variable in der Datenbank wird erhöht, aber weder der Download startet, noch wird das Fenster am Ende geschlossen. Wer weiß warum da passiert bekommt 'nen Kuchen

[edit=alcaeus]Datenbankpasswort entfernt! Mfg, alcaeus[/edit]
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Markus
(Gast)

n/a Beiträge
 
#10

Re: [PHP] Download-Counter

  Alt 6. Mär 2006, 14:03
Probier mal
Code:
case "1"
statt
Code:
case 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 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