SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 12.12.2004, 13:15:52
khm khm ist offline
Anfänger
 
Registriert seit: Nov 2004
Beiträge: 15
Download begrenzen

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

Geändert von khm (12.12.2004 um 13:23:39 Uhr)
Mit Zitat antworten
  #2  
Alt 12.12.2004, 14:38:40
khm khm ist offline
Anfänger
 
Registriert seit: Nov 2004
Beiträge: 15
Dwonload begrenzen

Für das Problem der leeren Browser-Seite nach einem zweiten Aufruf vor Ablauf der 10 Sekunden habe ich folgende Lösung gefunden:
Anstelle von

exit;

die(header("Content Type: Status: 204"));

204 steht für "no response".

Gruss,
khm
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:43:53 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt