[PHP] Download Counter

Dieses Thema im Forum "Webentwicklung" wurde erstellt von .x-tra, 27. Oktober 2008 .

Schlagworte:
  1. 27. Oktober 2008
    Download Counter

    Ich hab das web jetzt nach diversen DL countern abgesucht.
    Habe auch einiges gefunden, aber ich weiß nicht wirklich wie man diese dann einsetzt, bzw. benutzt.

    Also sind meistens einfach nur kleine php scripte.

    Meine seite bin ich noch am aufbauen, wollte aber gleich von anfang an alles einbauen, und nicht hinterher rumfrimmeln.


    Der quellcode der downloadseite wird dann eben standard 10-20 links haben, eventuell mit buttons, und dahinter sollen die gezählten downloads angezeigt werden.

    Ich habe absolut keinen schimmer, wie man sowas realisiert.

    sowas hab ich gefunden:

    Code:
    <meta http-equiv="Refresh" content="3; URL=http://www.toasterfraktion.de/download/files/ip.renew.bat.by.Toasterfraktion.rar"> <!--hier dein Link zu der Datei bei content kannst du die sec einstellen-->
    <?php
     $datei = fopen("counts.html","r+"); // Datei in der die counts gespeichert sind
     $counterstand = fgets($datei);
     if($counterstand == "")
     {
     $counterstand = 0;
     }
     $counterstand++;
     rewind($datei);
     fwrite($datei, $counterstand);
     fclose($datei); 
     
     // dann kannst du per include einfach die datei counts.html includen : Beispieldatei.exe (12 Downloads) die 12 is dann der incldue der Datei :-P
     ?>
    und sowas:

    Code:
    <?php
    $datei_name = "counters/audio.txt";
    
    //datei öffnen
    if (!file_exists($datei_name)) {
     $dz = fopen($datei_name, "w");
     fwrite($dz,"1");
     fclose($dz);
    }
    $dz = fopen($datei_name,"r");
    
    //counterstand auslesen
    $counter = fread($dz, 10);
    fclose($dz);
    
    //Counterstand eins hochzählen
    $counter++;
    
    //Den neuen Counterstand abspeichern
    $dz = fopen($datei_name, "w");
    fwrite($dz, $counter);
    fclose($dz);
    
    //Weiterleitung auf die Datei
    header('Location: http://www.deinedomain.de/datei.zip');
    exit;
    ?> 
    wobei da steht, das soll vor den header.
    das versteh ich nicht.
    Auch gabs beispiele dieser art....

    Code:
    <?php
    $server = "**********";
    $db = "**********";
    $user = "**********";
    $passwort = "**********";
    mysql_connect($server,$user,$passwort) or die("Verbindung zum Server konnte nicht hergestellt werden !");
    
    
    $url = $_GET['url'];
    
    if(empty($url)){
    die('Bitte URL angeben');
    }
    
    $sql = "UPDATE `klicks` SET `klicks` =klicks+1 WHERE `url` = '".addslashes($url)."' LIMIT 1";
    $sql = mysql_query($sql);
    
    header ("Location: $url");
    
    ?> 
    ich habe keinen schimmer, wie ich sowas einsetze, und nutzen kann.

    könnte mir jemand nen beispiel geben.

    also keine ahnung, sagen wir drei downloadlinks die damit arbeiten?
    Ich weiß ja nicht welche variante besser ist, die mit datenbank, oder die mit der textdatei, was sicherer ist etc.
    Nen datenbankcrash hatte ich auch schonmal, daher....mmmm

    helpless......
     
  2. 27. Oktober 2008
    AW: Download Counter

    Nur mal fürs klare Verständnis,
    hat deine Seite sowieso eine Datenbankanbindung?
    Wenn ja , werden die downloads da gemanaged?

    Oder pflegst du das manuell?
     
  3. 27. Oktober 2008
    AW: Download Counter

    Lol manuell.
    Sind 10-20 gleiche downloads, links werden immer gleich bleiben, ich tausche nur die dateien bei updates aus.

    Datenbank an und für sich wäre aber auch kein problem, auch wenns vielleicht bissi überdimensioniert wäre dafür, grins.
     
  4. 27. Oktober 2008
    AW: Download Counter

    Da ich morgen Schule habe , hab ich atm keien Zeit was eigenes größeres hier zu verfassen.
    Mit DB wäre es wesentlich einfacher und natürlich weitaus leichter zu managen und zu erweitern, aber wenn du davon garkeine Ahnung hast wahrscheinlich genauso unnütz.

    Schau dir vllt das mal an :

    PHP-MYSQL Tutorial - DownloadCounter ohne MySQL | Alice Grafixx

    War btw mein erste google Treffer für : "php download counter ohne mysql"

    ;-)

    lg, morgen hätt ich mehr Zeit =)
     
  5. 27. Oktober 2008
    AW: Download Counter

    das kommt morgen auch noch zurecht, aber eine kurze frage.
    mit diesem code

    Code:
    <?php
    $server = "**********";
    $db = "**********";
    $user = "**********";
    $passwort = "**********";
    mysql_connect($server,$user,$passwort) or die("Verbindung zum Server konnte nicht hergestellt werden !");
    
    
    $url = $_GET['url'];
    
    if(empty($url)){
    die('Bitte URL angeben');
    }
    
    $sql = "UPDATE `klicks` SET `klicks` =klicks+1 WHERE `url` = '".addslashes($url)."' LIMIT 1";
    $sql = mysql_query($sql);
    
    header ("Location: $url");
    
    ?> 
    und dann datei.php?url="downloadlink" würde das funktionieren?

    wenn ja, zählt der counter dann automatisch für verschiedene dateien, also downloadlinks?
    wie kann ich diese zahlen hinter den downloadlinks anzeigen lassen?
    Uuund kann ich trotzdem noch buttons verwenden?


    [edit] dein google link ist für mich als totaler php noob doch recht informativ.
     
  6. 28. Oktober 2008
    AW: Download Counter

    Ja das mit datei.php?url=... funktioniert. Ja erzählt automatisch für verschiedene Downloadlinks.

    Kannste z.b. Anzeigen lassen:

    Ja Buttons kannste auch verwenden.

    Hoffe habe alle deine Fragen beantwortet.
     
  7. 28. Oktober 2008
    AW: Download Counter

    naja, fast, wie würde das praktisch aussehen?
    In dem ordner wo die downloadseite ist, also die dazugehörige index, das script rein, richtig?
    Und statt nur nen normalen DL Link im quelltext einzutragen eben dieses datei.php?url=.... eben dieses nutzen, eventuell dann noch mit buttons!Richtig?

    Und deinen code zum anzeigen könnte ich dann theoretisch unter jedem DL Link mit counter im quelltext einfügen?Richtig?

    So und eine frage zum schluss, dein teil im code, mit verbindung zur datenbank aufbauen, wie muss das aussehen?irgendwas extra schreiben?
    oder vielleicht gleich mit dem counter.php verbinden?

    Fragen über Fragen, aber man lernt ja nie aus.

    Danke dir übrigends für die nächtliche Hilfe.
    BW´s sind schonmal raus.
     
  8. 28. Oktober 2008
    AW: Download Counter

    Also meine Antowrt bezog sich einfach nur darauf, das du einen Counter ohne MySQL haben möchtest.
    Darum hab ich ja nachgefragt.


    Wenn du den Code von oben nutzen möchtest musst du eine MYSQL Datenbank haben, und eine dementsprechende Tabelle erstellen.

    Jedoch wäre ea dann sinnvoll das ganze Linkmanagement von Downloads über MySQL laufen zu lassen.

    Die Ein und Ausgabe ist dann leicht.


    Ohne MYSQL jedoch wird jede Lösung in dem Schnitt sein wie sie oben im Link zu sehen ist.




    Vllt gibt es allerdings auch Drittanbieterlösungen... das weis ich allerdings nicht.
     
  9. 28. Oktober 2008
    AW: Download Counter

    Wollte es dir eigentlich nichts vorkauen, weil du so nichts lernst aber:

    Counter.php
    PHP:
    <? php
    $server 
    "**********" // server meistens lokalhost
    $db  "**********" // Datenbank name
    $user  "**********" // Datenbank user 
    $passwort  "**********" // Datenbankpasswort
    mysql_connect ( $server , $user , $passwort ) or die( "Verbindung zum Server konnte nicht hergestellt werden !" );
    mysql_select_db ( $db );

    function 
    Downloadlink ( $url $name ){
        
    $anzahlklicks  mysql_query ( "SELECT klicks from klicks WHERE url ='" . addslashes ( $url ). "'" );  // hole anzahlklicks für den downloadlink
        
    $anzahlklicks  mysql_fetch_array ( $anzahlklicks );
        
        return 
    "<a href=\"Counter.php?url=" . $url . "\" target=\"_BLANK\">" . $name . " (" . $anzahlklicks [ 'klicks' ]. " Downloads)</a>" ;
    }

    function 
    updateklicks ( $url ){
        
    $sql  "UPDATE  `klicks`  SET  `klicks`  =klicks+1  WHERE `url`  = '" . addslashes ( $url ). "' LIMIT 1" ;
        
    $sql  mysql_query ( $sql );
    }

    if(!empty(
    $_GET [ 'url' ])){
        
    $url  $_GET [ 'url' ]; 
        
    updateklicks ( $url );
        
    header  ( "Location:  $url " );
    }
    ?>
    Index.php
    PHP:
    <? php
    include( "Counter.php" )

    echo 
    "Mein Rapidsharedownload:<br>" ;
    echo 
    Downloadlink ( "http://rapidshare.com/wurstwasser.rar" "Wurstwasser Download" );
    echo 
    "<br><br>" ;

    echo 
    "Mein anderer Rapidsharedownload:<br>" ;
    echo 
    Downloadlink ( "http://rapidsharecom/blaaa.rar" "Blaa hahaha" );
    echo 
    "<br><br>" ;

    ?>
    Übernehme keine Garantie, da ich das jetzt hier im Forum gecodet habe und nicht getestet habe sollte aber klappen.

    Vorraussetzung ist dein MYSQL-Tabelle exestiert.

    LG Der Maddin
     
  10. 28. Oktober 2008
    AW: Download Counter

    ich rate auch zur Verwendung einer Datenbank, dann kannst du ganz easy wie Der Maddin das geschrieben hat einfach immer +1 machen. Was das Script allerdings nicht berücksichtig ist, das es keine "Sperre" gibt, dadurch der Counter leicht manuelle zu fälschen ist. Ich würde mir Überlegen mit Session die IP zu speichern und dann per if aussondern. Was mich jetzt auch noch interessiern würde ist, ob Bots auch Auswirkungen auf das Script von Der Maddin haben.
     
  11. 28. Oktober 2008
    AW: Download Counter

    syntaktisch habe ich durch deinen code doch schon soeiniges gelernt.
    Eine frage noch, bevor ich das in den nächsten tagen testen werde.

    Wie kann ich die counts direkt nach den DL linksanzeigen lassen?

    und ich möchte halt buttons statt nur der links anzeigen lassen, aber ich denke, das ist das kleinere problem.

    Ip sorting, wegen manipulationen, ist eher unwichtig, es geht eher um einen durchschnitt, wie oft die datei jeweils geladen wurde.
     
  12. 30. Oktober 2008
    AW: Download Counter

    und hats geklappt?? würde mich interessieren..
     
  13. 31. Oktober 2008
    AW: Download Counter

    Bin dieses WE noch mit dem Design beschäftigt.
    Werde aber hier posten obs geklappt hat.
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.