Philipp: Download-Counter

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

  1. 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

    1. 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

  2. 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

  3. 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

    --
    "Nobody will ever need more than 640k RAM!"
    1981 Bill Gates
  4. 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

    1. 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!

    2. 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

      --
      "Nobody will ever need more than 640k RAM!"
      1981 Bill Gates
      1. 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ß

        1. 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

          --
          "Nobody will ever need more than 640k RAM!"
          1981 Bill Gates