Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei einem Script benötigt!

Einklappen

Neue Werbung 2019

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

  • Hilfe bei einem Script benötigt!

    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:

    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\">Du hast gerade eben das file schon gezogen und bist vorerst für $dauer min gesperrt</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

    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
    Entweder ich bin blind (bzw. die [STRG]+[F] funktion tut nicht) oder in deinem Script wurde keine Variable $dauer deklariert.

    Ansonsten schau dir mal das an http://www.computerhilfen.de/webmast...erleitung.php3

    mfg n(00)b

    Kommentar


    • #3
      ich glaube, dass sich das ganze hier abspielt:

      Code:
      	{
      			$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\">Du hast gerade eben das file schon gezogen und bist vorerst für $dauer min gesperrt</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);
      		}
      	}


      danke für den link, aber ich hab leider null ahnung wo und wie ich dann die url ohne, dass der klick gezählt wird und ohne, dass die meldung kommt, einbinden muss...

      Kommentar


      • #4
        zur vollständigkeit (hab die lösung gefunden, der link hat dabei gehlfoen)

        ich setz an stelle von

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


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

        Kommentar

        Lädt...
        X