Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Reload Sperre per IP und Datum (PHP)

Hi Leuts :)

Ich habe da eine Frage bezüglich eine Reload-Sperre.

Und zwar wollte ich Borland Delphi 2005 PE in meinem Downloadbereich anbieten (hab selbst mehrere Wochen danach gesucht, bis mir Nope den Tipp mit der PC-Magazin gegeben hat  :-*)

Rein rechtlich ist das geklärt, hab auch mal angefragt, solange die Registrierung noch über Borland.com läuft, darf ich das machen.


Nun ist die Datei allerdings fast 450 MB groß (unkomprimiert sogar 600) und da mein Serverhoster zwar offiziell keine Trafficbegrenzung hat, allerdings in den AGBs steht, dass man 2 GB am Tag nicht überschreiten sollte, habe ich eine Reload-Sperre eingerichtet (ist noch nicht online, lade das Progg noch ca. 5 Stunden hoch ;))

Nun wollte ich mal wissen, ob man das auch besser lösen könnte, ich habe die Reloadsperre so "getrimmt", dass 3 Downloads am Tag nicht überschritten werden dürfen und dass anhand der IP überprüft wird, dass jemand das File nicht mehrmals downloaded. Allerdings, wenn man nun aus Versehen VOR dem Downloaden die Seite aktualisiert, dann kommt gleich die Reload-Sperre-Meldung.

Lässt sich das irgendwie auch anders lösen ? Hab zwar einen diggen roten "Warnhinweis" reingesetzt, dass man nicht aktualsieren sollte, aber wer weiß (vielleicht aktualisieren die Leute auch aus Versehen schon vor dem Erscheinen der Seite, weil die Verbindung mal schlechter ist und dann hamse den Salad  :-\)


<?php

$ip 
getenv("REMOTE_ADDR");

$openip fopen("zaehler/ip.txt""r+");

$readip fread($openipfilesize("zaehler/ip.txt"));

if(
$ip == $readip)
{
$downloadlink = &#39;<span style="color: #FF0000;"><b>Du hast eben erst das File runtergeladen.</b></span><br>
<small>Sollte es sich hierbei um einen Fehler handeln (z.Bdurch versehentliches Aktualisieren der Seite),<br>
kontaktiere den Webmaster oder versuche es morgen erneut (ab 00:00 Uhr)</small>&#39;;
}

else
{


$idvalue=FALSE;
$datei ="../data/counter.txt";
if (file_exists($datei)) 
{
$file=file($datei);
              
$datei fopen($datei"r");
foreach ($file as $line
{
$exp_line explode("|"$line);
if ($exp_line[0] == "Borland Delphi 2005 PE"
{
        
$idvalue=TRUE;
        
$counter=$exp_line[1];
$date=$exp_line[2];
$time=$exp_line[3];
fclose($datei);
}
}
}


$datum date("d.m.y");

if(
$date == $datum)
{
$zaehlerborland fopen("zaehler/borland.txt""r+");
$readborland fread($zaehlerborlandfilesize("zaehler/borland.txt"));

if($readborland 3)
{
$downloadlink = &#39;Bitte klicken Sie <a href="DOWNLOADDATEI">hier</a> zum Downloaden von Borland Delphi 2005 PE.<br>
<span style="color: #FF0000;"><b>Nicht aktualisierenda sonst die Reload-Sperre das Downloaden verhindert !</span></b>&#39;;

$zahlneu = ($readborland 1);

fclose($zaehlerborland);
$zaehlerneu fopen("zaehler/borland.txt""w");
fwrite($zaehlerneu$zahlneu);
fclose($zaehlerneu);

fclose($openip);
$ipnew fopen("zaehler/ip.txt""w");
fwrite($ipnew$ip);

}
else
{
$downloadlink = &#39;Die Datei wurde heute schon drei mal heruntergeladen.<br>
Bitte versuchen Sie es <b>morgen</b> (ab <b>00:00 Uhr</b>) erneut. <span style="color: #FF0000;"><b>Danke für Ihr Verständnis</b></span><br>
<
small>(Die Downloadbegrenzung bezieht sich nur auf Borland Delphi 2005 PEda diese Datei so groß ist,<br>
dass eine Downloadsperre notwendig ist um die Server nicht überzubelasten)</small>&#39;;
}
}

else
{
$zahlneu fopen("zaehler/borland.txt""w");
fwrite($zahlneu"0");
$downloadlink "Bitte klicken Sie <a href=&#39;DOWNLOADDATEI&#39;>hier</a> zum Downloaden von Borland Delphi 2005 PE";
}

}

?>


<html>
<head>
<link rel="stylesheet" href="../main.css">
</head>
<title>Borland Delphi 2005 PE</title>

<body>

<table cellpadding="0" cellspacing="0" border="0">
<tr><td>

<?=$downloadlink;?>

</td></tr>
</table>

</body>
</html>
« Letzte Änderung: 22.11.05, 13:52:36 von Der olle Schwoebel »

Antworten zu Reload Sperre per IP und Datum (PHP):

Du solltest nicht die Download Page Sperren sondern die Download Datei selber sperren.


header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=". $Dateiname);

nun musst du nur noch die Datei ausgeben
(entweder "manuell" oder mit include müsste es auch gehen)


MFG BWA

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Wo genau sollte ich denn dann den Code einbringen ? Ich meine, wenn auf die Datei direkt zugegriffen wird, dann kann ich ja auch nichts machen, oder ?


Auf jeden Fall ist diese "Sperre" schon ziemlich effektiv, ich sehe, dass allein 13 Downloads von dem Programm getätigt wurden, das mag zwar ärgerlich sein für die 10 anderen, die dann das Programm eben NICHT runterladen konnten, aber wie ich im Confixx-Center sehe, wurde mein Traffic-"Limit" schon fast ausgereizt. (1,74 GB von 2.00 GB gestern)

Is ja klar habs mir auch gestern von dir gezogen!
Dein Server ist ganz schön schnell!!

Also fürs ausprogrammieren hab ich grad keine Zeit.

<?php
//Überprüfen ob der Benutzer die Datei schon mal heruntergeladne hat oder 
//Das musst du selber schreiben bzw hast du ja eigentlich schon
das maximale Downloadlimit erreicht wurde.
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

if(
$allowDownload)
{
header("Content-type: application/exe");
header("Content-Disposition: attachment; filename=Borland-Delphi-2005-PE.exe");
readfile "HiddenFolder/Borland-Delphi-2005-PE.exe");
}
else
{
header("Content-type: text/html");
?>

<html>
<bod>
Es ist ein Fehler aufgetreten, entweder haben sie die Datei schon einmal heruntergeladen, oder das maximale Downloadlimit des heutigen Tages wurde übschritten
</body>
</html>
<?php
}
?>


MFG BWA

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
Dein Server ist ganz schön schnell!!

Danke, das hört man doch gern, ist auch einer der Gründe, weswegen ich ihn immer weiterempfehle ;D

Werde mir den Code mal in aller Ruhe ansehen, wenn ich Zeit hab, mal schauen, inwiefern sich das so einbauen lässt..

« Könnt ihr mal meine Website Bewerten?Daten aus DB auslesen, in Formular ausgeben und da ändern können »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Auslagerungsdatei
Die Auslagerungsdatei ist der virtuelle Speicher von Windows. Wenn der RAM-Speicher nicht ausreicht um mit den geöffneten Programmen weiter zu arbeiten, werden Daten...

Dateiendungen
Die Dateiendung, auch Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an den Dateinamen angehä...

Dateisystem
Das Dateisystem ist eine Ablageorganisation auf einem Dateiträger eines Computers. Die Daten müssen gelesen, gespeichert oder gelöscht werden. Zudem legt d...