Brauche Hilfe bei Clickcounter-Script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Brauche Hilfe bei Clickcounter-Script

    Ich hab ein Clickcounter-Script welches auf Textfiles basiert. Es läuft einwandfrei, doch eine Änderung hätte ich gern.

    Erstmal ein Auszug aus dem Script:

    PHP-Code:
    $ipdatei "data/ip.txt";
    if (!
    file_exists($ipdatei))
        {
        
    $fd=fopen($ipdatei,"w+");
        
    fclose($fd);
    }

    $file file("data/links.txt");
    foreach(
    $file as $line
        {
            list(
    $id,$url) = explode("|",$line);
            
    $down[$id] = $url;
        }

    if(empty(
    $_GET['id'])) 
        {
            echo 
    "Insert ID!";
        } 
    else 
        {
            if(empty(
    $down[$_GET['id']])) 
            {
                echo 
    "This ID is not used";
                } 
        else 
            {
            
    $ip $_SERVER['REMOTE_ADDR']; //IP abfragen
            
    if (($ip == "127.0.0.1") && ($_SERVER['HTTP_X_FORWARDED_FOR'] != ""))
                    {
                    
    $ip $_SERVER['HTTP_X_FORWARDED_FOR'];
                    }
            
    $url $down[$_GET['id']];//downloadurl wird zugewiesen
            
    $exists FALSE;//Marker wird gesetzt
            
    $timestamp time();//unixtime für IP-Sperre wird ermittelt
            
    $file file($ipdatei);
            
    $ipdatei fopen($ipdatei,"w+");
            foreach (
    $file as $line
                {
                
    $exp_line explode("|"$line);
                    if ((
    $exp_line[0] == $ip) && ($exp_line[1] == $_GET['id'])) //wenn die Zeile der Schleife die IP beinhaltet
                        
    {
                        
    $exists TRUE//hier wird der marker auf true gesetzt, da die IP schon vorkommt
                        
    if(($exp_line[2]+ 60*$dauer) < $timestamp// IP ist nicht mehr gesperrt
                            
    {
                            
    fputs($ipdatei"$exp_line[0]|$exp_line[1]|$timestamp\n"); //neue Daten für diese IP werden geschrieben...
                            
    counten($url);//Funktion counten wird aufgerufen und die Downloadurl mitgeliefert
                            
    }
                        else 
    //IP ist noch gesperrt
                            
    {
                            
    fputs($ipdatei"$line");
                            echo 
    "<center><font color = \"red\"><b>Du hast gerade eben das file schon gezogen und bist vorerst für $dauer min gesperrt</b></font></center>";
                            }
                        }
                    else 
    //wenn die Zeile der Schleife die IP nicht beinhaltet...
                        
    {
                        if((
    $exp_line[2]+ 60*$dauer) > $timestamp//und noch eine Sperre für diese Zeile existiert...
                            
    {
                            
    fputs($ipdatei"$line"); //wird sie nochmal gleich reingeschrieben, ansonsten wird sie gelöscht!
                            
    }
                        }
                    }
            if (
    $exists == FALSE//hier wird der oben gesetzte Marker abgefragt, wenn er nicht auf TRUE ist, ist die IP neu und wird eingefügt
                       
    {
                    
    $id $_GET['id'];
                    
    fputs($ipdatei"$ip|$id|$timestamp\n"); //neue Zeile für neue IP wird geschrieben
                       
    counten($url);//Funktion counten wird aufgerufen und die Downloadurl mitgeliefert
                       
    }
            
    fclose($ipdatei);
            }
        }

    function 
    counten($url)
    {
    global 
    $email$dl_to_mail,$domain;
    Header("Location: ".$url);
    header("Expires: Mon, 10 Jan 1970 01:01:01 GMT");
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Pragma: no-cache");
    $id=$_GET['id'];//eintrag in counter.txt wird vorbereitet
    $date date("d.m.y");
    $time date("H:i");
    $countfile="data/counter.txt";  
    $treffer=FALSE;  
    $file file($countfile);
    $fd=fopen($countfile,"w+");    
    foreach (
    $file as $line) {
        
    $exp_line explode("|"$line);
            if (
    $exp_line[0] == $id) {
                
    $count=$exp_line[1];
                
    $count++;
                
    $new_line "$id|$count|$date|$time\n";
                      
    fputs($fd$new_line);//update alter Eintrag
            
    }
            else {
                
    fputs($fd$line);//update neuer Eintrag
            
    }
    }
    fclose($fd);
    //folgendes nur, wenn du erst nach einigen DLs eine mail haben willst!
    if ($dl_to_mail 1)
        {
        
    $maildat "data/countmail.txt";
        
    $maildattemp fopen($maildat"a+");
            
    fwrite($maildattemp"$id|$date|$time\n");
            
    fclose($maildattemp);
            
    $inhalt file($maildat,"r"); 
            
    $anzahl count($inhalt);
            
    fclose($inhalt);
        if (
    $anzahl >= $dl_to_mail)
            {
            
    $maildat "data/countmail.txt";//hier wird die Datei countmail.txt eingelesen, um die zur email hinzuzufügen
            
    $maildat=file($maildat); 
            foreach (
    $maildat as $zeile
               { 
              
    $listlines .= $zeile
               }
            
    $header.="From: \"Download-Counter\" $domain\n";
            
    $header.="MIME-Version: 1.0\n";
            
    $header.="Content-Type: text/plain;\n";
            
    $header.="X-Mailer: PHP/".phpversion();
            
    mail("$email""Downloadcounter""$date - $time Uhr\n\n Hinweis vom dlcounter-ROBOT: Es wurden seit der letzten Benachrichtigung weitere $dl_to_mail Downloads gezogen\n\nDiese gliedern sich zeitlich wie folgt:\n$listlines","$header");
            
    $maildat "data/countmail.txt";
            
    $maildattemp=fopen($maildat,"w+");//hier wird die maildat wieder gelöscht!
            
    fputs($maildattemp,"");
            
    fclose($maildattemp);
            }
        }
    //folgendes, wenn du bei jedem DL eine Nachricht haben willst!
    else
    {
    $header.="From: \"Download-Counter\" $domain\n";
    $header.="MIME-Version: 1.0\n";
    $header.="Content-Type: text/plain;\n";
    $header.="X-Mailer: PHP/".phpversion();
    mail("$email""Downloadcounter""Neuer Download\n\nZeit: $date - $time Uhr\nder Download mit der ID $id wurde runtergeladen","$header");
    }
    }
    ?> 
    Eigentlich ist es für Downloads al gedacht gewesen, aber ich habs auf Links soweit abgestimmt. Nun möchte ich, dass wenn ich die Funktion

    PHP-Code:
    $dauer 5;//Dauer der Reloadsperre in Minuten 
    aufrufe, dann statt der Message

    Du hast gerade eben das file schon gezogen und bist vorerst für 5 min gesperrt
    eine Weiterleitung auf den angegebenen Link aufgerufen wird, ohne dass diese für die angegebene Zeit der Ip-Sperre gezählt wird.

    Danke schonmal für jede Art der Hilfe!

  • #2
    zur vollständigkeit (hab die lösung gefunden, der linkhttp://www.computerhilfen.de/webmast...erleitung.php3 hat dabei gehlfoen)

    ich setz an stelle von

    Code:
    else //IP ist noch gesperrt 
                        { 
                        fputs($ipdatei, "$line"); 
                        echo "<center><font color = \"red\"><b>Du hast gerade eben das file schon gezogen und bist vorerst für $dauer min gesperrt</b></font></center>"; 
                        } 
                     }
    einfach


    Code:
    else //IP ist noch gesperrt
            				{
            				fputs($ipdatei, "$line");
            				header("Location: ".$url);
            				}

    Kommentar


    • #3
      $dauer ... ist keine Funktion, sondern eine variable, und die kann man nicht aufrufen, nur anzeigen oder ändern oder speichern oder löschen

      Kann man auch so schreiben:

      else //IP ist noch gesperrt
      {
      fputs($ipdatei, "$line");
      header("Location: $url");
      }
      OffTopic:
      Jaja, ich weis es bringt dir nichts mehr, mir ist aber grad langweilig
      Zuletzt geändert von davidovich; 02.06.2004, 23:10.

      Forumregeln!

      Gute PHP-(tutorial-)Seiten

      Kommentar

      Lädt...
      X