Download-Counter
Philipp
- php
0 Lemmy Danger0 Philipp
0 Andre0 David Tibbe0 Philipp0 Philipp0 David Tibbe0 Philipp
Hallo,
ich habe mich mal ein wenig in PHP versucht, und habe einen Download-Counter programmiert. Leider funktioniert er nicht so recht.
Er soll einfach die Summe aller Downloads als Zahl in eine .txt-Datei schreiben.
Der Code mit den Link auf die Datei sieht folgender Maßen aus:
<a href="download.php?url=http://www.server.de/user/datei.zip">
Die download.php so:
<?php
$e = "downloads.txt";
...
(Immer so weiter, dort steht bloß der Code zum zählen)
header("Location: " $url);
exit;
?>
Diese Variante funktionierte nicht. Ich habe einen Fehler seitens der Servers bekommen.
Dann hatte ich noch folgendes probiert:
<meta http-equiv="refresh" content="5; url=<?php echo (include($url)); ?>">
Da passierte gar nix. Es wurde nur eine leere weiße Seite mit zweifelhaftem Code angezeigt.
Wer kann mir helfen?
Danke im Voraus!
Grüße
Philipp
Guude!
header("Location: " $url);
Hier fehlt ein Punkt. Hast Du der Variablen $url zuvor $_GET["url"] zugewiesen?
$headerLoc = "Location: ".$_GET["url"];
header($headerLoc);
<meta http-equiv="refresh" content="5; url=<?php echo (include($url)); ?>">
Warum das include?
LG ausm Hesseland
Lemmy
Hallo Lemmy,
danke für deine Antwort, auf die Fehler hätt ich auch selbst kommen können *an-die-stirn-klatsch*.
Jedenfalls liegt es nicht an dem Weiterleitungs- sondern am Counter-Code.
Ich schau mal, was sich da machen lässt.
Danke!
Grüße
Philipp
Der Code mit den Link auf die Datei sieht folgender Maßen aus:
<a href="download.php?url=http://www.server.de/user/datei.zip">
Die download.php so:
<?php
$e = "downloads.txt";
...
(Immer so weiter, dort steht bloß der Code zum zählen)
header("Location: " $url);
exit;
?>
Schreibe doch mal den ganzen Code rein, dann kann man Dir sicher besser helfen, so ist man nur auf Vermutungen angewiesen und das hilft Dir sicher auch nicht wirklich weiter.
Gruss Andre
Hallo
Ich habe einen Fehler seitens der Servers bekommen.
Der da lautet?
<meta http-equiv="refresh" content="5; url=<?php echo (include($url)); ?>">
Da passierte gar nix. Es wurde nur eine leere weiße Seite mit zweifelhaftem Code angezeigt.
Doch... Dir wird der Inhalt der Datei $url in "Textversion" ausgegeben, das dürftest du ja gesehen haben. Das liegt an deinem Meta-Tag. Du includest da ja $url, öffnes also die Datei und lässt den inhalt ausgeben. Korrekt wäre wenn dann:
<meta http-equiv="refresh" content="5; url=<?php echo $url; ?>">
Grüße
David
AAAAllllssssoooo:
das mit dem Counter und dem Weiterleiten will beiden nicht zusammen.
Der Code sieht folgender Maßen aus:
<?php
$e = "downloads.txt";
$d = fopen($e,"r");
$z = fgets($d,10);
fclose($d);
$z++;
$d = fopen($e,"w");
fwrite($d,$z);
fclose($d);
return $z;
# header("Location: ".$url);
?>
Tja, eskommt ne weiße Seite, mehr nicht. Und in die downloads.tst wird nix eingetragen (CHMOD ist auf 777).
:-?
Was nun?
Grüße
Ich bins nochmal ;-),
wenn ich das
return $z;
im Code:
<?php
$e = "downloads.txt";
$d = fopen($e,"r");
$z = fgets($d,10);
fclose($d);
$z++;
$d = fopen($e,"w");
fwrite($d,$z);
fclose($d);
return $z;
header("Location: ".$url);
?>
weglassen, funktioniert es wunderbar. Die Klicks werden gezählt, der Download kann gestartet werden.
Meine letze Frage wäre deshlab: Warum?
Grüße
Und danke nochmal an alle!
Hallo
Warum öffnest du die Datei 2x? Kannst du sie nicht besser per "r+" öffnen, lesen, wieder an den Anfang gehen bzw alles löschen und die neue Zahl hineinschreiben?
Mit return gibst du nichts aus (ich dene mal das wolltest du). echo ist dein freund :)
Grüße
David
Jo, mit dem 2x:
Na einmal fürs lesen und einmal fürs schreiben? Wie würdest du es den machen? *verwundert-am-kopf-kratz*
Ja, mit dem echo...das macht soviel Arbeit...;-)
Gruß
Hallo
ungetestet:
<?php
$file = "downloads.txt";
$fp = fopen($file,"r+");
$z = fgets($fp,10);
fseek($fp, 0); // Setzt den Dateizeigr auf den Anfang der Datei -> http://php3.de/fseek
ftruncate($fp, 0); // Kürzt die Datei auf dieangegebene Länge -> http://php3.de/ftruncate
fclose($fp);
$z++;
echo $z;
?>
Grüße
David