php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.06.2004, 19:40  
Gast
 
Beiträge: n/a
Standard 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

Zitat:
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!
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.06.2004, 19:55  
Gast
 
Beiträge: n/a
Standard

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
 
Alt 02.06.2004, 20:02  
Gast
 
Beiträge: n/a
Standard

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...
 
Alt 02.06.2004, 22:00  
Gast
 
Beiträge: n/a
Standard

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);
        				}
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Script calculator tati85 PHP Tipps 2008 4 07.02.2008 08:01
Daten Upload Script Hilfe!! PHP Tipps 2007 9 29.12.2005 10:39
Hilfe für Script (ähnlich wie Clanwar) PHP Tipps 2005 10 18.05.2005 20:28
Hilfe bzw. Script gesucht Beitragsarchiv 1 15.05.2005 14:05
Hilfe bei Bilderupload Script ypsie PHP Tipps 2005 15 09.05.2005 18:58
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Hilfe bei PHP Script PHP Tipps 2005 1 03.05.2005 09:43
Hilfe bzw. Script gesucht PHP Tipps 2005 2 17.04.2005 16:38
Script zum ändern einer RDF Datei ! Brauche HILFE! PHP Tipps 2004-2 3 06.12.2004 09:21
Bitte um Hilfe, script löscht nichts :( PHP Tipps 2004-2 2 30.11.2004 23:08
Hilfe bei einem simplen Script Beitragsarchiv 5 27.11.2004 16:44
Habe Fehler im Script bitte um Hilfe test022 PHP Tipps 2004-2 9 13.11.2004 17:44
Hilfe bei meinem Script PHP Tipps 2004 2 12.08.2004 22:50
Welches Script ist das?! HILFE Beitragsarchiv 11 07.08.2004 11:52
[Erledigt] Script gesucht / Hilfe beim Programmieren PHP Tipps 2004 2 15.06.2004 07:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php \$exp_line\, $datei = fopen(\data/counter.txt\,\r\);

Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.