• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Script dass nach 1 GB traffic fehler zeigt.

sebi

New member
Also, folgende "sachlage". Ich habe eine Seite. Diese Seite soll eine Downloadsektion haben. Diese downloads befinden sich in einen Ordner. Da es viele video sind (480 MB) habe ich angst dass sie zuviel Produzieren (ich zahle selbst für den Traffic, bzw. habe nur begrenzten Traffic). Ich will dass es eine art downloadtracker gibt, und wenn die 1 GB erreicht sind soll er sofort nen Fehler anzeigen, den ordner mit ner .htaccess versehen, oder irgendwas in der art.

Ein PHP'ler freund meinte man muss den files ne ID gibt, und immer wenn dieses file geklickt wird die ID (die ID ist die anzahl der MB die das video hat) irgendo zugefügt. Und wenn die summe dann 1 GB ergibt das Script einfach bis zum monatswechsel abstellt (und die DL's nicht mehr funzen).
Aber ich habe keine Ahnung von PHP :D
Und vergleichbares habe ich noch nicht gefunden. Naja, hoffe dass mir da jemand hilft, oder gar auf ne einfache lösung kommt. Thx im vorraus.




sebi
 
Also, erstmal gibst du jeden Link wie so an:

download.php3?file=video1.avi

Du musst auch noch die Datei dat1.dat in das Verzeichnis anlegen wo du das .php3 -file hast, in der Datei sollte nur '0' stehen.

dann musst du die Datei download.php3 im gleichen Verzeichnis anlegen, in der folgendes steht (leg im gleichen Verzeichnis den Ordner Videos an und tue dort die Dateien rein):

<?
$folder="videos";

$file2 = "/ganzer/pfad/zur/datei/".$folder."/".$file;

$size1 = filesize($file2) / 1024;
$size1 = $size1 / 1024;

$fp = fopen("dat1.dat", "r");
$actualsize = fgets($fp, 200);
fclose($fp);

$nexttraffic = $actualsize + $size1;
if ($nexttraffic > 1024) {
echo "Kein Transfer möglich - Traffic wurde überschritten!";
} else {
$fp = fopen("dat1.dat", "w+");
fputs($fp, $nexttraffic);
fclose($fp);
header("Location: http://www.deineurl/zur/php3-datei/".$folder."/".$file);
}
?>

So, das sollte es sein, ich weiß aber nicht ob es so funktioniert, da ich es nicht getestet habe
 
WOW!!!
Das ist a) genau das was ich suche und b) es funktioniert ^_________^
Boah, ich bin echt sprachlos, das in der Zeit...!

Also ich bin vollends zufrieden, danke danke danke ^-^

Vielleicht noch eins: Geht es dass man die Datei zum Monatsanfang (der 1.) die datei1.dat resetten könnte?
Weil will ja nicht, faul wie ich bin, jeden Monat alles zurücksetzen ^-^


sebi
 
Cooooooool, hätte ich nicht gedacht das es funktioniert, sonst mache ich eigentlich immer 1000e von Fehlern :)

So sollte es mit leeren der Datei am Monatsanfang funktionieren, ich hab alles nochmal kommentiert -> für den Lerneffekt :)


<?
#Der Ordner der Dateien
$folder="videos";

#Der ganze Pfad zur Datei
$file2 = "/ganzer/pfad/zur/datei/".$folder."/".$file;

#Ermitteln der Dateigröße in MB (da Angabe in byte 2 mal durch 1024)
$size1 = filesize($file2) / 1024;
$size1 = $size1 / 1024;

#Tag ermitteln und wenn der 1 ist Datei auf 0 setzen
if (gmdate("a",time()) == 1) {
$fp = fopen("dat1.dat", "w+");
fputs($fp, "0");
fclose($fp);
}

#Datei zum lesen öffnen und mit fgets Inhalt auslesen
$fp = fopen("dat1.dat", "r");
$actualsize = fgets($fp, 200);
fclose($fp);

#Errechnen des zunächst entstehenden Traffics (die nächste Zahl in der Datei)
$nexttraffic = $actualsize + $size1;
#Wenn die nächste Zahl in der Datei größer ist als 1024 (steht für MB)
if ($nexttraffic > 1024) {
echo "Kein Transfer möglich - Traffic wurde überschritten!";
#Wenn nicht dann...
} else {
#Öffnen der Datei, erhöhen des Wertes und runterladen der Datei
$fp = fopen("dat1.dat", "w+");
fputs($fp, $nexttraffic);
fclose($fp);
header("Location: http://www.deineurl/zur/php3-datei/".$folder."/".$file);
}
?>
 
Supi! Danke, wenn das mit dem Datenresetten klappt vergötter ich dich *gg*
Ne danke danke danke (:) Damit hast du mir echt geholfen.


Melde mich noch mal am monatsanfang obs ging mit dem Reset.

sebi
 
das script hat noch einen fehler... und zwar wirst du am ersten jeden monats immensen traffic haben, weil da jedes mal der counter zurückgesetzt wird. du musst also noch irgendwo eine variable speichern, die besagt, dass schon rückgestellt worden ist.

bye,
mo
 
Stimmt! Hmm, wie soll ich das nur machen *denk*

<?
#Der Ordner der Dateien
$folder="videos";

#Der ganze Pfad zur Datei
$file2 = "/ganzer/pfad/zur/datei/".$folder."/".$file;

#Ermitteln der Dateigröße in MB (da Angabe in byte 2 mal durch 1024)
$size1 = filesize($file2) / 1024;
$size1 = $size1 / 1024;

if (gmdate("a",time()) != 1) {
unlink("free.nfo");
}

#Tag ermitteln und wenn der 1 ist Datei auf 0 setzen
if (gmdate("a",time()) == 1 && !file_exists("free.nfo")) {
$fp = fopen("free.nfo", "w+");
fputs($fp, "free");
fclose($fp);

$fp = fopen("dat1.dat", "w+");
fputs($fp, "0");
fclose($fp);
}

#Datei zum lesen öffnen und mit fgets Inhalt auslesen
$fp = fopen("dat1.dat", "r");
$actualsize = fgets($fp, 200);
fclose($fp);

#Errechnen des zunächst entstehenden Traffics (die nächste Zahl in der Datei)
$nexttraffic = $actualsize + $size1;
#Wenn die nächste Zahl in der Datei größer ist als 1024 (steht für MB)
if ($nexttraffic > 1024) {
echo "Kein Transfer möglich - Traffic wurde überschritten!";
#Wenn nicht dann...
} else {
#Öffnen der Datei, erhöhen des Wertes und runterladen der Datei
$fp = fopen("dat1.dat", "w+");
fputs($fp, $nexttraffic);
fclose($fp);
header("Location: http://www.deineurl/zur/php3-datei/".$folder."/".$file);
}
?>

So müsste es gehen, danke das du es dir nochmal angeschaut hast!

Argh, musste noch was verbessern, aber jetzt sollte es gehen :)

PS: Das ist das erste Script was ich in der Entwicklungsumgebung <TEXTAREA> geschrieben habe LoL :)
 
Zuletzt bearbeitet:
er meint, das:

am monatsanfang der MB-counter dauernd wieder auf 0 gestellt wird.
er wird also auf 0 gestellt,
jemand downloaded was,
counter wird wieder auf 0 gestellt... etc...

also ist der traffic am 1. tag nicht kontrollierbar gewesen,
mußte halt was rein, was dem script sagt, daß es den
counter am monatsanfang nur einmal rückstellen soll

mfg, riddler
 
AXO! Er resettet also am 1. Tag die Datei die ganze Zeit. Aso aso aso *zulern* *notier*
Danke (:)



sebi
 
Ich hab nochwas vergessen, gestern abend war ich einfach zu müde um ordentlich zu programmieren :)

<?
#Der Ordner der Dateien
$folder="videos";

#Der ganze Pfad zur Datei
$file2 = "/ganzer/pfad/zur/datei/".$folder."/".$file;

#Ermitteln der Dateigröße in MB (da Angabe in byte 2 mal durch 1024)
$size1 = filesize($file2) / 1024;
$size1 = $size1 / 1024;

if (gmdate("a",time()) != 1 && file_exists("free.nfo")) {
unlink("free.nfo");
}

#Tag ermitteln und wenn der 1 ist Datei auf 0 setzen
if (gmdate("a",time()) == 1 && !file_exists("free.nfo")) {
$fp = fopen("free.nfo", "w+");
fputs($fp, "free");
fclose($fp);

$fp = fopen("dat1.dat", "w+");
fputs($fp, "0");
fclose($fp);
}

#Datei zum lesen öffnen und mit fgets Inhalt auslesen
$fp = fopen("dat1.dat", "r");
$actualsize = fgets($fp, 200);
fclose($fp);

#Errechnen des zunächst entstehenden Traffics (die nächste Zahl in der Datei)
$nexttraffic = $actualsize + $size1;
#Wenn die nächste Zahl in der Datei größer ist als 1024 (steht für MB)
if ($nexttraffic > 1024) {
echo "Kein Transfer möglich - Traffic wurde überschritten!";
#Wenn nicht dann...
} else {
#Öffnen der Datei, erhöhen des Wertes und runterladen der Datei
$fp = fopen("dat1.dat", "w+");
fputs($fp, $nexttraffic);
fclose($fp);
header("Location: http://www.deineurl/zur/php3-datei/".$folder."/".$file);
}
?>


Er darf die Datei ja nur löschen wenn sie auch wirklich vorhanden ist :)
 
Ich mag mich ja nicht sonderlich auskennen, aber warum erscheint jetzt eine 2. Datei? (free.nfo)?





sebi
 
Diese Datei signalisiert ob die .dat-Datei schon geleert wurde, sie sollte nur am 1. des Monats auf dem Server erscheinen und an allen anderen Tagen wech sein
 
Yeah! Wie gesagt, zur Zeit geht es noch gut. Der Monatswechsel wirds zeigen ob es wirklich "seitenreif" ist :)




sebi
 
Öhmn.. ich bins nochmal *g*

Wie schaffe ich es denn dass ich die Datei auslese, das ein bisschen Teile (dass da MB stehen) und dass es auf meine Webseite steht?
Ich weiß ja inzwischen wie man ne datei öffnet und so, aber ich weiß nicht wie das mit dem Inhalt dann geht ):

Wäre cool wenn... naja :)



sebi
 
<?
$inhalt = file("http://deine/url/zur/datei.xxx");
$zeilen = count(file("http://deine/url/zur/datei.xxx"));

$i = 0;
do {
echo $inhalt[$i];
$i++;
} while ($i != $zeilen);
?>

So solltest du eigentlich jede Datei in PHP auslesen können.

Mfg, Crying Man
 
Ok ok. Auslesen geht jetzt wunderbar *g*.
Aber weder mein schlaues Handbuch noch mein Serveradmin und noch ein PHP'ler konnte mir jetzt sagen wie ich den ausgelesenen Inhalt bearbeite. Also ich möchte die summe gerne runden un/oder in einer Porentzahl ausgeben.
Seradmin und PHP'er meinten dass der foo befehl dafür da ist, da ich aber keine gültige Syntax zusammenbekommen habe wusste ich auch nicht weiter (und sie auch nicht). Das Handbuch sagte round wäre gute dafür, allerdings wurde das auch nicht näher beschrieben, WO ich WAS WOHIN setzen muss. Sorry, ich hab noch viel zu lernen *g* (danke für antworten und eurer Geduldt mit mir)





sebi
 
<?
$inhalt = file("http://deine/url/zur/datei.xxx");
$zeilen = count(file("http://deine/url/zur/datei.xxx"));

$i = 0;
do {
$datei .= $inhalt[$i];
$i++;
} while ($i != $zeilen);

$datei_prozent = 1024 / $datei * 100;
echo $datei_prozent;
?>

Ich garantiere für nichts, aber so oder so ähnlich sollte man ausgeben können wieviel Prozent schon belegt sind :)

Ich war in Prozentrechnen nie so ein Genie und hab jetzt auch keine Lust mich dran zu erinnern :)
 
$datei_prozent = $datei * 100 / 1024; *g*
Naja, es ging mir eher um die PHP syntax als um die Korrekte Prozent Formel. Danke ^__^
Allerdings zeigt er mir jetzt ein < (kleiner als)
also:
<97.232408262791

außerdem, wie runde ich das Ergebnis auf 0 nachkommastellen? (also 97%)?



Ah! Ich habs begriffen!!!!! ^_______^
Nu gehts. Angezeigt wird "97"
Der Source:

<?
$inhalt = file("dasfile");
$zeilen = count(file("nochmaldasfile"));

$i = 0;
do {
$datei .= $inhalt[$i];
$i++;
} while ($i != $zeilen);

$datei_prozent = $datei * 100 / 1024;

$foo = round ($datei_prozent,0);
echo $foo;

?>



Danke nochmal an alle *freu*



sebi
 
hey, round kenn ich noch gar nicht, hab das vorher immer mit so ner schweren String-Funktion gemacht!

Ich freue mich, das ich dir helfen konnte !
 
Zurück
Oben