Das Problem:
Ich biete auf meiner Homepage zwei relativ grosse Dateien (19 & 45 MB) zum Download an. Damit meine kostenfrei Trafficgrenze von 50 GB nicht überschritten wird, habe ich ein Script geschrieben, das nur eine vordefinierte Anzahl von Downloads zulässt.
So weit, so gut.
Jetzt hat sich jemand einen "Spass" erlaubt und den Download automatisiert ca. 500 mal aufgerufen, wobei jeder einzelne Download nach kurzer Zeit abgebrochen wurde.
Das hat zwar mein Traffic-Kontingent nicht wesentlich tangiert, aber den Download-Zähler auf den maximal zulässigen Stand + 1 hochgetrieben, sodass ein weiterer Download nicht mehr möglich war.
Ich habe also eine Zeitbegrenzung von 10 Sekunden eingebaut, innerhalb der ein zweiter Download mit der gleichen IP-Adresse verhindert werden soll:
PHP-Code:
<?
$atime = time();
$ip=$_SERVER['REMOTE_ADDR'];
if (strstr($IP, ', ')) {
$ips = explode(', ', $remoteIP);
$IP = $ips[0];
}
$fullhost = gethostbyaddr($ip);
$fip = fopen("ipadr.txt","r+");
flock($fip,LOCK_EX);
$aip = fgets($fip,256);
$latime = fgets($fip,256);
$aip=trim($aip);
$latime=trim($latime);
$nexttime = $latime + 10;
rewind($fip);
fputs($fip,$ip."n");
fputs($fip,$atime."n");
fputs($fip,$fullhost."n");
flock($fip,LOCK_UN);
fclose($fip);
if ((strcmp($aip,$ip) == 0) and ($atime<$nexttime))
{
exit;
}
$fp = fopen("comp04pgn.cnt", "r+");
flock($fp, LOCK_EX);
$inhalt = fread($fp, 10000);
if ($inhalt<750)
{ $inhalt++;
rewind($fp);
fwrite($fp, $inhalt);
ftruncate($fp, ftell($fp));
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
$filename = "x.zip";
header("Content-Type: x-type/subtype");
header("Content-Length: 48140321");
header("Content-Disposition: attachment; filename=".$filename);
$fn="http://x:x@[url]www.schachserver.de/x/x.zip[/url]";
readfile($fn);}
else
{ flock($fp, LOCK_UN);
fclose($fp);
}
?>
Das Problem:
Wenn ich beim Testen den Download starte und sofort abbreche, erscheint anstatt des Download-Fensters ein leeres Browser-Fenster.
Aus meiner Logfile geht allerdings hervor, dass auch beim zweiten Aufruf der Download gestartet und automatisch wieder abgebrochen wird.
Gibts eine Lösung für
1. Das leere Browser-Fenster vermeiden
2. Den unerwünschten Download zu unterdrücken
Besten Dank.
khm