tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
231
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    tomekk228 tomekk228 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    76
    Hey,

    ich möchte gerne mein Download Script um eine Statistik erweitern. Dazu möchte ich gerne erfassen ob, bzw wie oft ein Link geklickt wurde.

    Ich hab schon einiges ergoogelt, und auch in Sufu erfahren. Z.b per Java oder Php mit hilfe eines "Zwischen Scripts". So das z.b der link dann so ist >
    Code :
    1
    
    http://url/download.php?p=/pfad/zur/dateixy.gzip

    Doch das möchte ich nicht

    Ich hab auch was von "onmouseclick event" o.ä gelesen. Doch das ist ja leider java

    Hier ist mein DL script >
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    <?php
    include ("cfg/functions.php");
    loginuser();
    echo('<b><font size="+1"><tc>Download-Zone</tc></font></b><br>');
    connect(); 
    $menu = mysql_query("SELECT ID, name, path, file FROM downloads ORDER BY ID");
    $rows = mysql_num_rows($menu);
    if(mysql_num_rows($menu)>0)
    {
        for($i=0; $i<mysql_num_rows($menu); $i++)
        {
            $result = mysql_fetch_object($menu); 
        echo("<table width='100%'><tr><td width='20%' valign='top'><tc><li>$result->name:</li></tc></td><td width='80%' align='left'><a href='$result->path/$result->file'>Download</a></td></tr></table>");
     }
    }
    ?>
    Kann mir da einer helfen ?
     

  2. #2
    Avatar von tobee
    tobee tobee ist offline Grolba.com media
    Registriert seit
    Jul 2005
    Ort
    Karlsruhe
    Beiträge
    1.700
    Blog-Einträge
    131
    Ich würde die Tabelle downloads einfach um ein Feld namens countdown erweitern.
    Und sobald du die Datei download.php mit dem Parameter p öffnest, machst du ein
    UPDATE auf die Tabelle und erhöst den countdown um eins.
     

  3. #3
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Code :
    1
    
    http://url/download.php?p=/pfad/zur/dateixy.gzip

    Doch das möchte ich nicht
    So wäre das ganze aber relativ einfach zu handeln. Musst ja nicht den gesamten Pfad zur Datei dazuhängen, sondern zum Beispiel einfach eine ID oder nur den Namen, und dann bei dem Downloadscript (welches die Datei dann zur Verfügung stellt) mit SWITCH - CASE die Datei auswählen. An der Stelle kannst dann das ganze entweder über Dateien oder per MySQL hochzählen lassen.
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  4. #4
    tomekk228 tomekk228 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    76
    Zitat Zitat von tobee Beitrag anzeigen
    Ich würde die Tabelle downloads einfach um ein Feld namens countdown erweitern.
    Und sobald du die Datei download.php mit dem Parameter p öffnest, machst du ein
    UPDATE auf die Tabelle und erhöst den countdown um eins.
    Ja, aber wenn ich es richtig verstehe wird alles um 1 erweitert. Und das sobald wenn die Links angezeigt wird.

    Zitat Zitat von Bratkartoffel
    So wäre das ganze aber relativ einfach zu handeln. Musst ja nicht den gesamten Pfad zur Datei dazuhängen, sondern zum Beispiel einfach eine ID oder nur den Namen, und dann bei dem Downloadscript (welches die Datei dann zur Verfügung stellt) mit SWITCH - CASE die Datei auswählen. An der Stelle kannst dann das ganze entweder über Dateien oder per MySQL hochzählen lassen.
    Hm. So hab ich es noch nicht gedacht

    Doch statt ID's oder anderes, würde ich dann lieber den Namen haben Z.b so >
    [1]
    Code :
    1
    
    http://url/download.php?p=antivir

    Datenkbank "downloads" sieht so aus >
    Code :
    1
    
    ID     name    path    file

    Zusammen gesetzt wird es so (am beispiel "mycms") >
    Code :
    1
    2
    3
    4
    5
    
    http://192.168.2.4(1)/mycms(2)/downloads(3)/mycms.7z(4)
    (1): n/a
    (2): n/a
    (3): path
    (4): file



    Wie könnte ich also "name" weitergeben?

    Also das dann es wie bei [1] aussieht?.
    Geändert von tomekk228 (08.04.08 um 14:45 Uhr)
     

  5. #5
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hmm,

    als wenn du das zum Beispiel so machst:

    Code :
    1
    2
    3
    4
    5
    
    download.php?file=abc
     
    oder
     
    download.php?fileid=1

    und in der mysql tabelle steht:
    Code :
    1
    2
    
    ID  Name  Pfad         Downloads
    1   abc   dl/abc.exe   13

    Die download.php würde dann so aussehen:
    PHP-Code:
    <?php
      $file
    =$_GET['file'];
      
    $fileid=$_GET['fileid'];

      
    // Verbindung aufbauern
      
      
    $query="SELECT Pfad, ID FROM files WHERE ID='" $fileid "' OR Name='" $file "';";
      
    $result=mysql_query($query);

      
    $datei=mysql_fetch_object($result);
      
      
    $query="UPDATE files SET Downloads=Downloads+1 WHERE ID='" $datei->ID"';";
      
    $result=mysql_query($query);
      
      
    header("location: ./" $datei->Pfad);
    ?>
    Der Aufruf von "download.php?file=abc" (genauso wie der Aufruf von "download.php?fileid=1") würde also zur Datei "http://server/dl/abc.exe" weiterleiten.

    So in der Art würde ich es lösen. (Ungetestet)
    Geändert von Bratkartoffel (08.04.08 um 14:51 Uhr) Grund: Ein paar Optimierungen
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  6. #6
    tomekk228 tomekk228 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    76
    Zitat Zitat von Bratkartoffel Beitrag anzeigen
    Hmm,

    als wenn du das zum Beispiel so machst:

    Code :
    1
    2
    3
    4
    5
    
    download.php?file=abc
     
    oder
     
    download.php?fileid=1

    und in der mysql tabelle steht:
    Code :
    1
    2
    
    ID  Name  Pfad         Downloads
    1   abc   dl/abc.exe   13

    Die download.php würde dann so aussehen:
    PHP-Code:
    <?php
      $file
    =$_GET['file'];
      
    $fileid=$_GET['fileid'];

      
    // Verbindung aufbauern
      
      
    $query="SELECT Pfad, ID FROM files WHERE ID='" $fileid "' OR Name='" $file "';";
      
    $result=mysql_query($query);

      
    $datei=mysql_fetch_object($result);
      
      
    $query="UPDATE files SET Downloads=Downloads+1 WHERE ID='" $datei->ID"';";
      
    $result=mysql_query($query);
      
      
    header("location: ./" $datei->Pfad);
    ?>
    Der Aufruf von "download.php?file=abc" (genauso wie der Aufruf von "download.php?fileid=1") würde also zur Datei "http://server/dl/abc.exe" weiterleiten.

    So in der Art würde ich es lösen. (Ungetestet)
    Das würde dann 2 Dateien benötigen

    1, das script und das 2te wo die Links stehen. Ich mache es wie bei meinem Status script >
    PHP-Code:
    <?php
    include ("cfg/functions.php");
    loginuser();
    echo(
    '<b><font size="+1"><tc>Online Status</tc></font></b><br>');
    connect(); 
    $menu mysql_query("SELECT ID, url, name, port FROM status ORDER BY ID");
    $rows mysql_num_rows($menu);
    if(
    mysql_num_rows($menu)>0)
    {
        for(
    $i=0$i<mysql_num_rows($menu); $i++)
        {
            
    $result mysql_fetch_object($menu); 
              
    $fp = @fsockopen("$result->url"$result->port$errno$errstr20);
                        if (!
    $fp) {

        echo(
    "<table width='100%'><tr><td width='20%' valign='top'><tc><li>$result->name:</li></tc></td><td width='80%' align='left'><img src='$dead'></td></tr></table>");

                    }

                 else {

        echo(
    "<table width='100%'><tr><td width='20%' valign='top'><tc><li>$result->name:</li></tc></td><td width='80%' align='left'><img src='$live'></td></tr></table>");

              }
                   }
        }
    ?>
    Nur wenn ich richtig verstehe, ist es dann das selbe wie am anfang auch oder? Also das bei allen ein + gemacht wird sobald die angezeigt werden. Weswegen ich dann 2 Files brauche?

    Edit: Leider funktioniert die Methode für mich nicht (das mit dem extra file). Da müsste ich mein ganzes CMS system umschreiben (wegen includes, link aufbau usw).

    Daher denke ich mach es per Buttons bzw Formular
    Geändert von tomekk228 (08.04.08 um 16:08 Uhr)
     

  7. #7
    tomekk228 tomekk228 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    76
    So, ich habe es geschafft.

    Danke an alle die mir geholfen haben und die Inspiration gegeben haben

    Wer sehen will wie es geworden ist, kann hier gucken >

    http://tomekk228.dyndns.org

    login: public
    pw: public

    Und hier der Source >
    PHP-Code:
    <?php
    include ("cfg/functions.php");
    loginuser();
    echo(
    '<b><font size="+1"><tc>Download-Zone</tc></font></b><br>');
    connect(); 
    $menu mysql_query("SELECT ID, name, path, file, counter FROM downloads ORDER BY ID");
    $rows mysql_num_rows($menu);
    if(
    mysql_num_rows($menu)>0)
    {
        for(
    $i=0$i<mysql_num_rows($menu); $i++)
        {
            
    $result mysql_fetch_object($menu); 
    echo(
    "<form id=$result->ID name=$result->ID' method='post' action='index.php?p=download'>");
    echo(
    "<table>");     
    echo(
    "<tr>");     
    echo(
    "<td><div align='left'><tc>$result->name | $result->counter x Gedownloadet</tc></div></td>");
    echo(
    "</tr>");     
    echo(
    "<tr>");     
    echo(
    "<td><input name=$result->ID type='submit' class='liteoption' id=$result->ID value='Download' size='15' maxlength='15' /></td>");
    echo(
    '<td></td>'); 
    echo(
    "</tr>");   
    echo(
    "</table>");
    echo(
    "</form>");
    if(isset(
    $_POST[$result->ID])) {     
    $icounter mysql_query("UPDATE downloads SET counter=counter+1 WHERE ID='" .$result->ID"';");
    echo(
    "<meta http-equiv='refresh' content='1; url=$result->path/$result->file'>");
    }
                   }
        }
    ?>
    Gruß, Tomekk.
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 20.01.10, 11:31
  2. Antworten: 3
    Letzter Beitrag: 09.09.07, 21:38
  3. Abfrage "Download" oder "Öffnen"
    Von bmxvoodoo im Forum PHP
    Antworten: 3
    Letzter Beitrag: 16.12.05, 11:17
  4. link auf "enter" oder "esc" taste setzen?
    Von Atti im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 24.08.05, 01:41
  5. "Sub Main" wurde nicht in "LabCalculator.Form1" gefunden?
    Von Christoph1972 im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 20.05.05, 17:31